@@ -589,43 +589,51 @@ bool RenderParticleMgr::_initShader()
589
589
590
590
void RenderParticleMgr::_onLMActivate ( const char *, bool activate )
591
591
{
592
- RenderPassManager *rpm = getRenderPass ();
593
- if ( !rpm )
594
- return ;
595
-
596
- // Hunt for the pre-pass manager/target
597
- RenderPrePassMgr *prePassBin = NULL ;
598
- for ( U32 i = 0 ; i < rpm->getManagerCount (); i++ )
592
+ if ( activate )
599
593
{
600
- RenderBinManager *bin = rpm->getManager (i);
601
- if ( bin->getRenderInstType () == RenderPrePassMgr::RIT_PrePass )
594
+ RenderPassManager *rpm = getRenderPass ();
595
+ if ( !rpm )
596
+ return ;
597
+
598
+ // Hunt for the pre-pass manager/target
599
+ RenderPrePassMgr *prePassBin = NULL ;
600
+ for ( U32 i = 0 ; i < rpm->getManagerCount (); i++ )
602
601
{
603
- prePassBin = (RenderPrePassMgr*)bin;
604
- break ;
602
+ RenderBinManager *bin = rpm->getManager (i);
603
+ if ( bin->getRenderInstType () == RenderPrePassMgr::RIT_PrePass )
604
+ {
605
+ prePassBin = (RenderPrePassMgr*)bin;
606
+ break ;
607
+ }
605
608
}
606
- }
607
609
608
- // If we found the prepass bin, set this bin to render very shortly afterwards
609
- // and re-add this render-manager. If there is no pre-pass bin, or it doesn't
610
- // have a depth-texture, we can't render offscreen.
611
- mOffscreenRenderEnabled = prePassBin && (prePassBin->getTargetChainLength () > 0 );
612
- if (mOffscreenRenderEnabled )
613
- {
614
- rpm->removeManager (this );
615
- setRenderOrder ( prePassBin->getRenderOrder () + 0 .011f );
616
- rpm->addManager (this );
617
- }
610
+ // If we found the prepass bin, set this bin to render very shortly afterwards
611
+ // and re-add this render-manager. If there is no pre-pass bin, or it doesn't
612
+ // have a depth-texture, we can't render offscreen.
613
+ mOffscreenRenderEnabled = prePassBin && (prePassBin->getTargetChainLength () > 0 );
614
+ if (mOffscreenRenderEnabled )
615
+ {
616
+ rpm->removeManager (this );
617
+ setRenderOrder ( prePassBin->getRenderOrder () + 0 .011f );
618
+ rpm->addManager (this );
619
+ }
618
620
619
- // Find the targets we use
620
- mPrepassTarget = NamedTexTarget::find ( " prepass" );
621
- mEdgeTarget = NamedTexTarget::find ( " edge" );
621
+ // Find the targets we use
622
+ mPrepassTarget = NamedTexTarget::find ( " prepass" );
623
+ mEdgeTarget = NamedTexTarget::find ( " edge" );
622
624
623
- // Setup the shader
624
- if ( activate )
625
+ // Setup the shader
625
626
_initShader ();
626
627
627
- if ( mScreenQuadVertBuff .isNull () )
628
- _initGFXResources ();
628
+ if ( mScreenQuadVertBuff .isNull () )
629
+ _initGFXResources ();
630
+ }
631
+ else
632
+ {
633
+ mStencilClearSB = NULL ;
634
+ mScreenQuadPrimBuff = NULL ;
635
+ mScreenQuadVertBuff = NULL ;
636
+ }
629
637
}
630
638
631
639
GFXStateBlockRef RenderParticleMgr::_getOffscreenStateBlock (ParticleRenderInst *ri)
0 commit comments