///<summary> /// @see RenderTargetListener.PreRenderTargetUpdate ///</summary> public void AfterRenderTargetUpdate(RenderTargetEventArgs evt) { var cam = this.viewport.Camera; if (cam != null) { cam.SceneManager.ActiveCompositorChain = null; } }
///<summary> /// @see RenderTargetListener.PreRenderTargetUpdate ///</summary> public void BeforeRenderTargetUpdate(RenderTargetEventArgs evt) { // Compile if state is dirty if (this.dirty) { Compile(); } // Do nothing if no compositors enabled if (!this.anyCompositorsEnabled) { return; } // Update dependent render targets; this is done in the BeforeRenderTargetUpdate // and not the BeforeViewportUpdate for a reason: at this time, the // target Rendertarget will not yet have been set as current. // ( RenderSystem.Viewport = ... ) if it would have been, the rendering // order would be screwed up and problems would arise with copying rendertextures. var cam = this.viewport.Camera; if (cam == null) { return; } cam.SceneManager.ActiveCompositorChain = this; // Iterate over compiled state foreach (var op in this.compiledState) { // Skip if this is a target that should only be initialised initially if (op.OnlyInitial && op.HasBeenRendered) { continue; } op.HasBeenRendered = true; // Setup and render PreTargetOperation(op, op.Target.GetViewport(0), cam); op.Target.Update(); PostTargetOperation(op, op.Target.GetViewport(0), cam); } }
/// <summary> /// Shows the render target plane again after the update. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void rttTex_AfterUpdate( RenderTargetEventArgs e ) { planeEntity.IsVisible = true; }
/// <summary> /// Hides the render target plane prior to the update. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void rttTex_BeforeUpdate( RenderTargetEventArgs e ) { planeEntity.IsVisible = false; }
private void Refraction_AfterUpdate( RenderTargetEventArgs e ) { planeEnt.IsVisible = true; for ( int i = 0; i < aboveWaterEnts.Count; i++ ) { ( (Entity)aboveWaterEnts[ i ] ).IsVisible = true; } }
private void Reflection_AfterUpdate( RenderTargetEventArgs e ) { planeEnt.IsVisible = true; for ( int i = 0; i < belowWaterEnts.Count; i++ ) { ( (Entity)belowWaterEnts[ i ] ).IsVisible = true; } theCam.DisableReflection(); }
private void Reflection_BeforeUpdate( RenderTargetEventArgs e ) { planeEnt.IsVisible = false; for ( int i = 0; i < belowWaterEnts.Count; i++ ) { ( (Entity)belowWaterEnts[ i ] ).IsVisible = false; } theCam.EnableReflection( reflectionPlane ); }
///<summary> /// @see RenderTargetListener.PreRenderTargetUpdate ///</summary> public void AfterRenderTargetUpdate( RenderTargetEventArgs evt ) { var cam = this.viewport.Camera; if ( cam != null ) { cam.SceneManager.ActiveCompositorChain = null; } }
///<summary> /// @see RenderTargetListener.PreRenderTargetUpdate ///</summary> public void BeforeRenderTargetUpdate( RenderTargetEventArgs evt ) { // Compile if state is dirty if ( this.dirty ) { Compile(); } // Do nothing if no compositors enabled if ( !this.anyCompositorsEnabled ) { return; } // Update dependent render targets; this is done in the BeforeRenderTargetUpdate // and not the BeforeViewportUpdate for a reason: at this time, the // target Rendertarget will not yet have been set as current. // ( RenderSystem.Viewport = ... ) if it would have been, the rendering // order would be screwed up and problems would arise with copying rendertextures. var cam = this.viewport.Camera; if ( cam == null ) { return; } cam.SceneManager.ActiveCompositorChain = this; // Iterate over compiled state foreach ( var op in this.compiledState ) { // Skip if this is a target that should only be initialised initially if ( op.OnlyInitial && op.HasBeenRendered ) { continue; } op.HasBeenRendered = true; // Setup and render PreTargetOperation( op, op.Target.GetViewport( 0 ), cam ); op.Target.Update(); PostTargetOperation( op, op.Target.GetViewport( 0 ), cam ); } }