fragment_program DOF_Blur_ps cg { source DOF_ps.cg entry_point blur profiles ps_2_0 arbfp1 } fragment_program DOF_Blend_ps cg { source DOF_ps.cg entry_point blend profiles ps_2_0 arbfp1 } //Effect: Depth of Field material Ogre/Compositor/DOF_Blur0 { technique { //Rendering Pass: Blur0 (pass index: #1 ) pass { //State: D3DRS_CULLMODE, Value : D3DCULL_NONE cull_hardware none cull_software none depth_check off fragment_program_ref DOF_Blur_ps { param_named sampleDistance float 0.1 } vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } texture_unit { // texture will get added at runtime tex_coord_set 0 tex_address_mode wrap filtering trilinear } } } } // cheat here by copying from DOF_Blur0 material Ogre/Compositor/DOF_Blur1 : Ogre/Compositor/DOF_Blur0 { technique { //Rendering Pass: Blur0 (pass index: #1 ) pass { // use the same pixel shader as DOF_Blur0 fragment_program_ref { // override value from copied DOF_Blur0 material param_named sampleDistance float 0.1 } } } } material Ogre/Compositor/DOF_Blend { technique { pass { fragment_program_ref DOF_Blend_ps { param_named focus float 0.66 param_named range float 1.0 } vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } texture_unit Blur0 { // texture will get added at runtime tex_coord_set 0 tex_address_mode clamp filtering trilinear } texture_unit Blur1 { // texture will get added at runtime tex_coord_set 0 tex_address_mode clamp filtering trilinear } } } }