有没有有效的方法以随机方式获取纹理数据?也就是说,我想使用纹理作为查找表,我需要随机访问其元素。因此,我会以随机方式对其进行抽样。这是完全失败的原因吗?
答案 0 :(得分:2)
随机访问是GLSL的基本功能。 E.g。
vec2 someLocation = ... whatever you like ...;
vec4 sampledColour = texture2D(sampler, someLocation);
根据您的硬件,如果您直接在像素着色器中计算样本位置而不是在顶点着色器中并且允许它们作为变化自动插值,则读取纹理可能会花费更多,但这只是不可变的硬件成本与您正在做的事情的可预测性降低有关。
答案 1 :(得分:1)
您总是可以将另一个纹理传递给包含随机值的着色器并从中进行采样。这将为每个纹理坐标提供相同的随机值,但如果您不想要,您可以始终将坐标乘以更新每个帧的统一种子。