compositor ssao { technique { texture geom target_width target_height PF_FLOAT16_RGBA texture scene target_width target_height PF_R8G8B8A8 texture ssao target_width_scaled 0.5 target_height_scaled 0.5 PF_R8G8B8 texture ssaoBlurX target_width target_height PF_R8G8B8 texture ssaoBlurY target_width target_height PF_R8G8B8 // the scene we want to modulate target scene { input previous } // the normals + depth render // feel free to play with it // right now it uses a 64-bit "fat" buffer that contains // unnormalized depth and XYZ normals target geom { input none material_scheme geom pass clear { } pass render_scene { } } target ssao { input none pass clear { } pass render_quad { // our SSAO listener number identifier 42 material ssao // pass in the "geometry map" input 0 geom } } target ssaoBlurX { input none pass clear { } pass render_quad { identifier 43 material ssaoBlurX input 0 ssao input 1 geom } } target ssaoBlurY { input none pass clear { } pass render_quad { identifier 43 material ssaoBlurY input 0 ssaoBlurX input 1 geom } } target_output { input none pass render_quad { // just output something, for example, use a modulate // material to just multiply the scene by the ssao material modulate input 0 scene input 1 ssaoBlurY //input 1 ssao } } } }