2013-12-19 19:32:50 +01:00

593 lines
13 KiB
Plaintext

// Manuel's bloom
// Needs a scene-sized rtt, but does only one render of the scene
compositor Bloom
{
technique
{
// Temporary textures
texture rt0 128 128 PF_A8R8G8B8
texture rt1 128 128 PF_A8R8G8B8
target rt1
{
// Render output from previous compositor (or original scene)
input previous
}
target rt0
{
// Start with clear texture
input none
// Vertical blur pass
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Blur0
input 0 rt1
}
}
target rt1
{
// Start with clear texture
input none
// Horizontal blur pass
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Blur1
input 0 rt0
}
}
target_output
{
// Start with clear output
input previous
// Draw a fullscreen quad
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/BloomBlend
input 0 rt1
}
}
}
}
compositor Glass
{
technique
{
texture rt0 target_width target_height PF_R8G8B8
target rt0 { input previous }
target_output
{
// Start with clear output
input none
pass render_quad
{
material Ogre/Compositor/GlassPass
input 0 rt0
}
}
}
}
compositor "Old TV"
{
technique
{
texture rt0 target_width target_height PF_R8G8B8
// render scene to a texture
target rt0 { input previous }
target_output
{
// Start with clear output
input none
pass render_quad
{
// convert the previous render target to a black and white image, add some noise, distort it,
// then render to scene aligned quad
material Ogre/Compositor/OldTV
input 0 rt0
}
}
}
}
// Black and white effect
compositor B&W
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/BlackAndWhite
input 0 rt0
}
}
}
}
//compositor DOF // based on Blur but final pass does depth of field
//{
// technique
// {
// // Temporary textures
// texture rt0 target_width target_height PF_A8R8G8B8
// texture rt1 target_width target_height PF_A8R8G8B8
//
// target rt1
// {
// // Render output from previous compositor (or original scene)
// input previous
// }
//
// target rt0
// {
// // Start with clear texture
// input none
// // Vertical blur pass
// pass render_quad
// {
// // Renders a fullscreen quad with a material
// material Ogre/Compositor/DOF_Blur0
// input 0 rt1
// }
// }
//
// target rt1
// {
// // Start with clear texture
// input none
// // Horizontal blur pass
// pass render_quad
// {
// // Renders a fullscreen quad with a material
// material Ogre/Compositor/DOF_Blur1
// input 0 rt0
// }
// }
//
// target_output
// {
// // Start with clear output
// input none
// // Draw a fullscreen quad
// pass render_quad
// {
// // Renders a fullscreen quad with a material
// material Ogre/Compositor/DOF_Blend
// input 0 rt0
// input 1 rt1
// }
// }
// }
//}
// Embossed (fake bump) effect
compositor Embossed
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Embossed
input 0 rt0
}
}
}
}
// SharpenEdges
compositor Sharpen Edges
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/SharpenEdges
input 0 rt0
}
}
}
}
// Invert
compositor Invert
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Invert
input 0 rt0
}
}
}
}
// Posterize
compositor Posterize
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Posterize
input 0 rt0
}
}
}
}
// Laplace
compositor Laplace
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Laplace
input 0 rt0
}
}
}
}
// Tiling
compositor Tiling
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/Tiling
input 0 rt0
}
}
}
}
// Old Movie
compositor Old Movie
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target_output
{
// Start with clear output
input none
// Draw a fullscreen quad with the black and white image
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/OldMovie
input 0 rt0
}
}
}
}
// HDR
compositor HDR
{
// floating point only for now
technique
{
// Temporary textures
// Fullsize HDR render target, used as tone mapping source
texture rt_full target_width target_height PF_FLOAT16_RGB
// Targets used for luminance evaluation (3x3 downsample, point filtering)
texture rt_lum0 1 1 PF_FLOAT16_RGB
texture rt_lum1 4 4 PF_FLOAT16_RGB
texture rt_lum2 16 16 PF_FLOAT16_RGB
texture rt_lum3 64 64 PF_FLOAT16_RGB
texture rt_lum4 128 128 PF_FLOAT16_RGB
// Bright-pass filtered target (tone mapped)
texture rt_brightpass 128 128 PF_R8G8B8
// Bloom filter targets
texture rt_bloom0 128 128 PF_R8G8B8
texture rt_bloom1 128 128 PF_R8G8B8
target rt_full
{
// No input, render differently
input none
// Use float target HDR material scheme (unclamped shaders)
material_scheme HDR
pass clear
{
}
pass render_scene
{
}
}
// Downsample the original HDR scene to extract luminence value
target rt_lum4
{
input none
pass render_quad
{
// Downsample using a 2x2 filter and convert to greyscale
material Ogre/Compositor/HDR/Downsample2x2Luminence
input 0 rt_full
identifier 994
}
}
target rt_lum3
{
input none
pass render_quad
{
// Downsample using a 3x3 filter
material Ogre/Compositor/HDR/Downsample3x3
input 0 rt_lum4
identifier 993
}
}
target rt_lum2
{
input none
pass render_quad
{
// Downsample using a 3x3 filter
material Ogre/Compositor/HDR/Downsample3x3
input 0 rt_lum3
identifier 992
}
}
target rt_lum1
{
input none
pass render_quad
{
// Downsample using a 3x3 filter
material Ogre/Compositor/HDR/Downsample3x3
input 0 rt_lum2
identifier 991
}
}
target rt_lum0
{
input none
pass render_quad
{
// Downsample using a 3x3 filter
material Ogre/Compositor/HDR/Downsample3x3
input 0 rt_lum1
identifier 990
}
}
target rt_brightpass
{
input none
pass render_quad
{
// Downsample using a 3x3 filter, hi-pass and tone map
material Ogre/Compositor/HDR/Downsample3x3Brightpass
input 0 rt_full
input 1 rt_lum0
identifier 800
}
}
target rt_bloom1
{
input none
pass render_quad
{
// Blur horizontally
material Ogre/Compositor/HDR/GaussianBloom
input 0 rt_brightpass
identifier 701
}
}
target rt_bloom0
{
input none
pass render_quad
{
// Blur horizontally
material Ogre/Compositor/HDR/GaussianBloom
input 0 rt_bloom1
identifier 700
}
}
// Final output combines tone mapping of the original scene, with an
// exposure setting passed in as a GPU parameter, and an additive bloom
// effect
target_output
{
input none
pass render_quad
{
material Ogre/Compositor/HDR/ToneMapping
input 0 rt_full
input 1 rt_bloom0
input 2 rt_lum0
}
}
}
}
// Gaussian blur effect
compositor Gaussian Blur
{
technique
{
// Temporary textures
texture rt0 target_width target_height PF_A8R8G8B8
texture rt1 target_width target_height PF_A8R8G8B8
target rt0
{
// Render output from previous compositor (or original scene)
input previous
}
target rt1
{
// Blur horizontally
input none
pass render_quad
{
material Ogre/Compositor/HDR/GaussianBloom
input 0 rt0
identifier 700
}
}
target_output
{
// Start with clear output
input none
// Blur vertically
pass render_quad
{
// Renders a fullscreen quad with a material
material Ogre/Compositor/HDR/GaussianBloom
input 0 rt1
identifier 701
}
}
}
}