我想访问我的元胞自动机的Moore邻域中像素的颜色。因此,创建了一个帧缓冲区,并将当前屏幕图像作为Sampler2D传递给GLSL着色器程序(如后处理等...)。为了访问相邻像素颜色,我向纹理坐标添加或减去一个颜色。这看起来基本上是这样的:
in vec2 TexCoord;
uniform sampler2D texFrameBuffer;
void main( void )
{
gl_FragColor = texture(texFrameBuffer, vec2(TexCoord.x+1, TexCoord.y-1));
};
将访问8个周围像素中的哪一个应该是随机的。是否有(不太耗时)随机函数返回{1.0,-1.0},以便vec2
可以添加到TexCoord
以访问随机像素?
答案 0 :(得分:2)
对于这样的事情,通常的hack是在当前纹理坐标上使用哈希函数,偏移任何时间(作为一个整体传入)或每帧在CPU上生成的随机数(再次作为统一传递) )。
有关GLSL中的一些简单哈希函数,请参阅this question and answer。