mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 03:33:48 +00:00
Re-enable MixedParticleRendering
This commit is contained in:
parent
69838bdc8c
commit
981b37e548
3 changed files with 19 additions and 10 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue