edA*_*a-y 3 opengl-es glsl opengl-es-2.0
我想在片段着色器中的像素之间创建一个清晰的过渡效果,但我不知道如何才能做到这一点.
在我的顶点着色器中,我有一个varying float x;并且在我的片段着色器中,我使用此值来设置颜色的不透明度.我量化当前值以产生分层效果.我想要做的是在非常小的效果水平上产生一个明显的边界(完全不同的颜色).例如,如果x>0.1和对于任何相邻像素,x<0.1则所得到的颜色应该是黑色.
它没有看到GLSL获得访问相邻像素的任何方式(我可能是错的).我怎么能达到这样的效果.我只限于OpenGL-ES2.0(虽然如果在这个版本上根本不可能,那么任何解决方案都会有所帮助).
你不能访问相邻的像素是正确的,这是因为不能保证像素写入的顺序,它们都是并行绘制的.如果您可以访问帧缓冲区中的相邻像素,则会得到不一致的结果.
但是,如果需要,您可以在后期处理中执行此操作.将整个场景绘制为帧缓冲纹理,然后使用过滤着色器将该纹理绘制到屏幕上.
从着色器中的纹理绘制时,您可以对所需的所有相邻纹素进行采样,因此您可以轻松地比较两个相邻纹素之间的差异.