本文整理汇总了C#中Viewport.AddCompositor方法的典型用法代码示例。如果您正苦于以下问题:C# Viewport.AddCompositor方法的具体用法?C# Viewport.AddCompositor怎么用?C# Viewport.AddCompositor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Viewport
的用法示例。
在下文中一共展示了Viewport.AddCompositor方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateRenderTarget
bool CreateRenderTarget()
{
DestroyRenderTarget();
if( RendererWorld.Instance == null )
return false;
Vec2I textureSize = GetDemandTextureSize();
if( textureSize.X < 1 || textureSize.Y < 1 )
return false;
string textureName = TextureManager.Instance.GetUniqueName( "WPFRenderTexture" );
int hardwareFSAA = 0;
if( !RendererWorld.InitializationOptions.AllowSceneMRTRendering )
{
if( !int.TryParse( RendererWorld.InitializationOptions.FullSceneAntialiasing, out hardwareFSAA ) )
hardwareFSAA = 0;
}
texture = TextureManager.Instance.Create( textureName, Texture.Type.Type2D, textureSize,
1, 0, Engine.Renderer.PixelFormat.R8G8B8, Texture.Usage.RenderTarget, false, hardwareFSAA );
if( texture == null )
return false;
currentTextureSize = textureSize;
renderTexture = texture.GetBuffer().GetRenderTarget();
renderTexture.AutoUpdate = false;
renderTexture.AllowAdditionalMRTs = true;
camera = SceneManager.Instance.CreateCamera(
SceneManager.Instance.GetUniqueCameraName( "UserControl" ) );
camera.Purpose = Camera.Purposes.MainCamera;
//update camera settings
camera.NearClipDistance = cameraNearFarClipDistance.Minimum;
camera.FarClipDistance = cameraNearFarClipDistance.Maximum;
camera.AspectRatio = (float)texture.Size.X / (float)texture.Size.Y;
camera.FixedUp = cameraFixedUp;
camera.Position = cameraPosition;
camera.Direction = cameraDirection;
camera.Fov = cameraFov;
camera.ProjectionType = cameraProjectionType;
camera.OrthoWindowHeight = cameraOrthoWindowHeight;
viewport = renderTexture.AddViewport( camera );
//Initialize HDR compositor for HDR render technique
if( EngineApp.RenderTechnique == "HDR" )
{
viewport.AddCompositor( "HDR", 0 );
viewport.SetCompositorEnabled( "HDR", true );
}
//Initialize Fast Approximate Antialiasing (FXAA)
{
bool useMRT = RendererWorld.InitializationOptions.AllowSceneMRTRendering;
string fsaa = RendererWorld.InitializationOptions.FullSceneAntialiasing;
if( ( useMRT && ( fsaa == "" || fsaa == "RecommendedSetting" ) && IsActivateFXAAByDefault() ) ||
fsaa == "FXAA" )
{
if( RenderSystem.Instance.HasShaderModel3() )
InitializeFXAACompositor();
}
}
//add listener
renderTargetListener = new ViewRenderTargetListener( this );
renderTexture.AddListener( renderTargetListener );
if( guiRenderer == null )
guiRenderer = new GuiRenderer( viewport );
else
guiRenderer.ChangeViewport( viewport );
if( controlManager == null )
controlManager = new ScreenControlManager( guiRenderer );
//initialize D3DImage output
if( d3dImageIsSupported && allowUsingD3DImage )
{
// create a D3DImage to host the scene and monitor it for changes in front buffer availability
if( d3dImage == null )
{
d3dImage = new D3DImage();
d3dImage.IsFrontBufferAvailableChanged += D3DImage_IsFrontBufferAvailableChanged;
CompositionTarget.Rendering += D3DImage_OnRendering;
}
// set output to background image
Background = new ImageBrush( d3dImage );
// set the back buffer using the new scene pointer
HardwarePixelBuffer buffer = texture.GetBuffer( 0, 0 );
GetD3D9HardwarePixelBufferData data = new GetD3D9HardwarePixelBufferData();
data.hardwareBuffer = buffer._GetRealObject();
data.outPointer = IntPtr.Zero;
unsafe
//.........这里部分代码省略.........
示例2: CreateViewport
private void CreateViewport()
{
int index = instance.views.IndexOf(this);
DestroyViewport();
Vec2I textureSize = GetNeededTextureSize();
string textureName = TextureManager.Instance.GetUniqueName(
string.Format("MultiViewRendering{0}", index));
PixelFormat format = PixelFormat.R8G8B8;
int fsaa;
if (!int.TryParse(RendererWorld.InitializationOptions.FullSceneAntialiasing, out fsaa))
fsaa = 0;
texture = TextureManager.Instance.Create(textureName, Texture.Type.Type2D,
textureSize, 1, 0, format, Texture.Usage.RenderTarget, false, fsaa);
if (texture == null)
{
Log.Fatal("MultiViewRenderingManager: Unable to create texture.");
return;
}
RenderTarget renderTarget = texture.GetBuffer().GetRenderTarget();
renderTarget.AutoUpdate = true;
renderTarget.AllowAdditionalMRTs = true;
//create camera
camera = SceneManager.Instance.CreateCamera(
SceneManager.Instance.GetUniqueCameraName(string.Format("MultiViewRendering{0}", index)));
camera.Purpose = Camera.Purposes.MainCamera;
//add viewport
viewport = renderTarget.AddViewport(camera, 0);
viewport.ShadowsEnabled = true;
//Create compositor for HDR render technique
bool hdrCompositor =
RendererWorld.Instance.DefaultViewport.GetCompositorInstance("HDR") != null;
if (hdrCompositor)
{
viewport.AddCompositor("HDR");
viewport.SetCompositorEnabled("HDR", true);
}
//FXAA antialiasing post effect
bool fxaaCompositor =
RendererWorld.Instance.DefaultViewport.GetCompositorInstance("FXAA") != null;
if (fxaaCompositor)
{
viewport.AddCompositor("FXAA");
viewport.SetCompositorEnabled("FXAA", true);
}
//add listener
renderTargetListener = new ViewRenderTargetListener(this);
renderTarget.AddListener(renderTargetListener);
initializedTextureSize = textureSize;
}
示例3: CreateRenderTarget
private bool CreateRenderTarget()
{
DestroyRenderTarget();
if (RendererWorld.Instance == null)
return false;
Vec2I size = new Vec2I(ClientRectangle.Size.Width, ClientRectangle.Size.Height);
if (size.X < 1 || size.Y < 1)
return false;
renderWindow = RendererWorld.Instance.CreateRenderWindow(Handle, size);
if (renderWindow == null)
return false;
renderWindow.AutoUpdate = false;
renderWindow.AllowAdditionalMRTs = true;
camera = SceneManager.Instance.CreateCamera(
SceneManager.Instance.GetUniqueCameraName("UserControl"));
camera.Purpose = Camera.Purposes.MainCamera;
//update camera settings
camera.NearClipDistance = cameraNearFarClipDistance.Minimum;
camera.FarClipDistance = cameraNearFarClipDistance.Maximum;
camera.AspectRatio = (float)renderWindow.Size.X / (float)renderWindow.Size.Y;
camera.FixedUp = cameraFixedUp;
camera.Position = cameraPosition;
camera.Direction = cameraDirection;
camera.Fov = cameraFov;
camera.ProjectionType = cameraProjectionType;
camera.OrthoWindowHeight = cameraOrthoWindowHeight;
viewport = renderWindow.AddViewport(camera);
//Initialize HDR compositor for HDR render technique
if (EngineApp.RenderTechnique == "HDR")
{
viewport.AddCompositor("HDR", 0);
viewport.SetCompositorEnabled("HDR", true);
}
//Initialize Fast Approximate Antialiasing (FXAA)
{
bool useMRT = RendererWorld.InitializationOptions.AllowSceneMRTRendering;
string fsaa = RendererWorld.InitializationOptions.FullSceneAntialiasing;
if ((useMRT && (fsaa == "" || fsaa == "RecommendedSetting") && IsActivateFXAAByDefault()) ||
fsaa == "FXAA")
{
if (RenderSystem.Instance.HasShaderModel3())
InitializeFXAACompositor();
}
}
//add listener
renderTargetListener = new ViewRenderTargetListener(this);
renderWindow.AddListener(renderTargetListener);
if (guiRenderer == null)
guiRenderer = new GuiRenderer(viewport);
else
guiRenderer.ChangeViewport(viewport);
if (controlManager == null)
controlManager = new ScreenControlManager(guiRenderer);
return true;
}