Joa*_*nge 8 shader gpu glsl hlsl pixel-shader
高斯,框,径向,方向,运动模糊,变焦模糊等
我读到高斯模糊可以在可以在像素着色器中实现的通道中分解,但是找不到任何样本.
假设任何与自身以外的像素有关的效果都无法在像素着色器中实现,这是正确的吗?
只要您能够将信息传递给着色器,就可以实现所有功能。
在这种情况下,技巧是执行多遍渲染。最终的着色器将采用一定数量的采样器,它们是非模糊源,用于计算模糊值。
例如,可以使用多个纹理来基于累积缓冲区模拟效果。
要实现高斯模糊,请将场景渲染到frambuffer对象上,并在颜色附件上附加纹理。这是第一关。
作为第二遍,渲染纹理四边形,其中纹理是第一步中生成的纹理四边形。纹理坐标从顶点阶段传递到片段阶段,并在四边形上进行插值。确实,每个片段都有纹理坐标。为每个坐标应用一个偏移量以获取基础坐标周围的纹理,并执行高斯模糊。
后处理效果的通用“管道”
setRenderTarget(myRenderTarget); // or FBO in GL
drawAwsomeScene();
setdefaultRenderTarget(); // draw to screen...
blurShader.use();
// shader needs to know what is the size of one pixel on the screen
blurShader.uniform2f("texelSize", 1/screenW, 1/screenH);
// set the texture with scene rendered...
setRenderTargetTexture();
drawFullScreenQuad();
// other effects...
Run Code Online (Sandbox Code Playgroud)
模糊的有用示例/教程:http : //www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/
| 归档时间: |
|
| 查看次数: |
7458 次 |
| 最近记录: |