繁体   English   中英

GLSL-对3D纹理进行采样

[英]GLSL - Sample an volume of 3d texture

我最近正在OpenGL中使用3d纹理。 我意识到,当您使用3d纹理时,必须大量使用texture3d()。 这几乎是一个gpu杀手。 glsl中是否有任何功能可以让我采样3D纹理的体积? 因此,我可以执行以下操作,而不是调用texture3D()32768次:

texture3DVolume(3dtexture, vec3(0.5, 0.5, 0.5), vec3(0.2, 0.2, 0.2));

其中样品为0.5 0.5 0.5,体积为0.2 0.2 0.2。

否:正如您自己注意到的那样,这涉及对所有音量进行采样。

在2D模式下,您可以使用汇总面积表。 它使您能够仅用4个样本来计算“框”内矩阵的所有值的总和。 我想这个概念很容易扩展到3D。

请注意,您将有一个非常昂贵的预处理步骤。 而且您只能拥有均值和总和,没有其他奇特的东西,例如几何均值或中位数。

这是AMD针对不同用例的一些解释: http : //developer.amd.com/media/gpu_assets/GDC2005_SATEnvironmentReflections.pdf

我猜您也可以使用mipmaps:对2x2x2体积进行采样,对第一个rip mipmap进行采样...但是,对于任意的采样位置,这将无法立即使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM