Browse Source

Merge pull request #749 from lukaspj/MixedParticleRendering

Re-enable Mixed particle rendering
Daniel Buckmaster 11 years ago
parent
commit
e02e542717

+ 17 - 8
Engine/source/renderInstance/renderParticleMgr.cpp

@@ -74,14 +74,15 @@ RenderParticleMgr::RenderParticleMgr()
 {
    // Render particles at 1/4 resolution
    mTargetSizeType = WindowSizeScaled;
-   mTargetScale.set(0.25f, 0.25f);
+   mTargetScale.set(0.5f, 0.5f);
 
    // We use the target chain like a texture pool, not like a swap chain
    if(!RenderToSingleTarget)
       setTargetChainLength(5);
    else
       mOffscreenSystems.setSize(1);
-
+   
+   notifyType( RenderPassManager::RIT_Particle );
    LightManager::smActivateSignal.notify( this, &RenderParticleMgr::_onLMActivate );
 }
 
@@ -377,7 +378,7 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
    // Draw system path, or draw composite path
    if(ri->systemState == PSS_DrawComplete)
       return;
-
+   
    if(ri->systemState != PSS_AwaitingCompositeDraw)
    {
       // Set proper stateblock, and update state
@@ -386,7 +387,7 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
          GFX->setStateBlock( _getOffscreenStateBlock(ri) );
          ri->systemState = PSS_AwaitingCompositeDraw;
          mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mModelViewProjSC, 
-           *ri->modelViewProj * mOffscreenSystems[ri->targetIndex].clipMatrix );
+            *ri->modelViewProj * mOffscreenSystems[ri->targetIndex].clipMatrix );
       }
       else
       {
@@ -419,6 +420,7 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
          alphaScale = 0.0f;
          break;
       }
+
       mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaFactorSC, alphaFactor );
       mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaScaleSC, alphaScale );
 
@@ -490,6 +492,13 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
          ScreenSpace::RenderTargetParameters(texObject->getSize(), mEdgeTarget->getViewport(), rtParams);
          mParticleCompositeShaderConsts.mShaderConsts->setSafe( mParticleCompositeShaderConsts.mEdgeTargetParamsSC, rtParams );
       }
+      else
+      {
+         AssertWarn(false, "No edge texture target defined, if you want to use mixed particle"
+            "rendering, then make sure that the EdgeDetectPostEffect is enabled.");
+         ri->systemState == PSS_AwaitingHighResDraw;
+         return;
+      }
 
       // Set shader and constant buffer
       GFX->setShader( mParticleCompositeShader );
@@ -686,8 +695,8 @@ GFXStateBlockRef RenderParticleMgr::_getHighResStateBlock(ParticleRenderInst *ri
 GFXStateBlockRef RenderParticleMgr::_getMixedResStateBlock(ParticleRenderInst *ri)
 {
    const U8 blendStyle = ri->blendStyle;
-   if ( mHighResBlocks[blendStyle].isValid() )
-      return mHighResBlocks[blendStyle];
+   if ( mMixedResBlocks[blendStyle].isValid() )
+      return mMixedResBlocks[blendStyle];
 
    GFXStateBlockDesc d;
 
@@ -751,8 +760,8 @@ GFXStateBlockRef RenderParticleMgr::_getMixedResStateBlock(ParticleRenderInst *r
    // Prepass sampler
    d.samplers[1] = GFXSamplerStateDesc::getClampPoint();
 
-   mHighResBlocks[blendStyle] = GFX->createStateBlock(d);
-   return mHighResBlocks[blendStyle];
+   mMixedResBlocks[blendStyle] = GFX->createStateBlock(d);
+   return mMixedResBlocks[blendStyle];
 }
 
 GFXStateBlockRef RenderParticleMgr::_getCompositeStateBlock(ParticleRenderInst *ri)

+ 1 - 1
Templates/Empty/game/core/scripts/client/postFx/edgeAA.cs

@@ -83,7 +83,7 @@ singleton PostEffect( EdgeDetectPostEffect )
    texture[0] = "#prepass";
    target = "#edge";
    
-   isEnabled = false;
+   isEnabled = true;
 };
 
 singleton PostEffect( EdgeAAPostEffect )

+ 1 - 1
Templates/Full/game/core/scripts/client/postFx/edgeAA.cs

@@ -83,7 +83,7 @@ singleton PostEffect( EdgeDetectPostEffect )
    texture[0] = "#prepass";
    target = "#edge";
    
-   isEnabled = false;
+   isEnabled = true;
 };
 
 singleton PostEffect( EdgeAAPostEffect )