老早就想实现 Depth of field 的效果了,这几天终于有点时间来好好学习并加以实现。使用的是Render Monkey 1.71,
Render Monkey的sample里的DOF的稍微有点复杂,不过效果很漂亮。我觉得只要知道了原理并实现了基本的效果就可以了
o(∩_∩)o...
一共分为4个pass
前两个pass效果一样 在两个不同的位置渲染两个teapot到BackBuffer这张纹理,并保存下相对聚焦区域的深度值
- //渲染物体的VS代码
- struct VS_OUTPUT
- {
- float4 Pos : POSITION;
- float2 Tex : TEXCOORD0;
- float3 View : TEXCOORD1;
- float depth : TEXCOORD2;
- };
- VS_OUTPUT vs_main (
- float4 inPos : P