private void _createEffects()
{
#region /// Motion blur effect
Axiom.Graphics.Compositor comp3 = (Axiom.Graphics.Compositor)CompositorManager.Instance.Create( "Motion Blur", ResourceGroupManager.DefaultResourceGroupName );
{
CompositionTechnique t = comp3.CreateTechnique();
{
CompositionTechnique.TextureDefinition def = t.CreateTextureDefinition( "scene" );
def.Width = 0;
def.Height = 0;
def.PixelFormats.Add( PixelFormat.R8G8B8 );
}
{
CompositionTechnique.TextureDefinition def = t.CreateTextureDefinition( "sum" );
def.Width = 0;
def.Height = 0;
def.PixelFormats.Add( PixelFormat.R8G8B8 );
}
{
CompositionTechnique.TextureDefinition def = t.CreateTextureDefinition( "temp" );
def.Width = 0;
def.Height = 0;
def.PixelFormats.Add( PixelFormat.R8G8B8 );
}
/// Render scene
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.Previous;
tp.OutputName = "scene";
}
/// Initialisation pass for sum texture
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.Previous;
tp.OutputName = "sum";
tp.OnlyInitial = true;
}
/// Do the motion blur
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.None;
tp.OutputName = "temp";
{
CompositionPass pass = tp.CreatePass();
pass.Type = CompositorPassType.RenderQuad;
pass.MaterialName = "Ogre/Compositor/Combine";
pass.SetInput( 0, "scene" );
pass.SetInput( 1, "sum" );
}
}
/// Copy back sum texture
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.None;
tp.OutputName = "sum";
{
CompositionPass pass = tp.CreatePass();
pass.Type = CompositorPassType.RenderQuad;
pass.MaterialName = "Ogre/Compositor/Copyback";
pass.SetInput( 0, "temp" );
}
}
/// Display result
{
CompositionTargetPass tp = t.OutputTarget;
tp.InputMode = CompositorInputMode.None;
{
CompositionPass pass = tp.CreatePass();
pass.Type = CompositorPassType.RenderQuad;
pass.MaterialName = "Ogre/Compositor/MotionBlur";
pass.SetInput( 0, "sum" );
}
}
}
CompositorManager.Instance.AddCompositor( this.viewport, "Motion Blur" );
#endregion /// Motion blur effect
#region /// Heat vision effect
Axiom.Graphics.Compositor comp4 = (Axiom.Graphics.Compositor)CompositorManager.Instance.Create( "Heat Vision", ResourceGroupManager.DefaultResourceGroupName );
{
CompositionTechnique t = comp4.CreateTechnique();
{
CompositionTechnique.TextureDefinition def = t.CreateTextureDefinition( "scene" );
def.Width = 256;
def.Height = 256;
def.PixelFormats.Add( PixelFormat.R8G8B8 );
}
{
CompositionTechnique.TextureDefinition def = t.CreateTextureDefinition( "temp" );
def.Width = 256;
def.Height = 256;
def.PixelFormats.Add( PixelFormat.R8G8B8 );
}
/// Render scene
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.Previous;
tp.OutputName = "scene";
}
/// Light to heat pass
{
CompositionTargetPass tp = t.CreateTargetPass();
tp.InputMode = CompositorInputMode.None;
tp.OutputName = "temp";
{
CompositionPass pass = tp.CreatePass();
pass.Type = CompositorPassType.RenderQuad;
pass.Identifier = 0xDEADBABE; /// Identify pass for use in listener
pass.MaterialName = "Fury/HeatVision/LightToHeat";
pass.SetInput( 0, "scene" );
}
}
/// Display result
{
CompositionTargetPass tp = t.OutputTarget;
tp.InputMode = CompositorInputMode.None;
{
CompositionPass pass = tp.CreatePass();
pass.Type = CompositorPassType.RenderQuad;
pass.MaterialName = "Fury/HeatVision/Blur";
pass.SetInput( 0, "temp" );
}
}
}
CompositorManager.Instance.AddCompositor( this.viewport, "Heat Vision" );
#endregion /// Heat vision effect
}
}