mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Re-enable MixedParticleRendering
This commit is contained in:
parent
69838bdc8c
commit
981b37e548
3 changed files with 19 additions and 10 deletions
|
|
@ -74,7 +74,7 @@ RenderParticleMgr::RenderParticleMgr()
|
||||||
{
|
{
|
||||||
// Render particles at 1/4 resolution
|
// Render particles at 1/4 resolution
|
||||||
mTargetSizeType = WindowSizeScaled;
|
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
|
// We use the target chain like a texture pool, not like a swap chain
|
||||||
if(!RenderToSingleTarget)
|
if(!RenderToSingleTarget)
|
||||||
|
|
@ -82,6 +82,7 @@ RenderParticleMgr::RenderParticleMgr()
|
||||||
else
|
else
|
||||||
mOffscreenSystems.setSize(1);
|
mOffscreenSystems.setSize(1);
|
||||||
|
|
||||||
|
notifyType( RenderPassManager::RIT_Particle );
|
||||||
LightManager::smActivateSignal.notify( this, &RenderParticleMgr::_onLMActivate );
|
LightManager::smActivateSignal.notify( this, &RenderParticleMgr::_onLMActivate );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -386,7 +387,7 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
|
||||||
GFX->setStateBlock( _getOffscreenStateBlock(ri) );
|
GFX->setStateBlock( _getOffscreenStateBlock(ri) );
|
||||||
ri->systemState = PSS_AwaitingCompositeDraw;
|
ri->systemState = PSS_AwaitingCompositeDraw;
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mModelViewProjSC,
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mModelViewProjSC,
|
||||||
*ri->modelViewProj * mOffscreenSystems[ri->targetIndex].clipMatrix );
|
*ri->modelViewProj * mOffscreenSystems[ri->targetIndex].clipMatrix );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -419,6 +420,7 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
|
||||||
alphaScale = 0.0f;
|
alphaScale = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaFactorSC, alphaFactor );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaFactorSC, alphaFactor );
|
||||||
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaScaleSC, alphaScale );
|
mParticleShaderConsts.mShaderConsts->setSafe( mParticleShaderConsts.mAlphaScaleSC, alphaScale );
|
||||||
|
|
||||||
|
|
@ -490,6 +492,13 @@ void RenderParticleMgr::renderInstance(ParticleRenderInst *ri, SceneRenderState
|
||||||
ScreenSpace::RenderTargetParameters(texObject->getSize(), mEdgeTarget->getViewport(), rtParams);
|
ScreenSpace::RenderTargetParameters(texObject->getSize(), mEdgeTarget->getViewport(), rtParams);
|
||||||
mParticleCompositeShaderConsts.mShaderConsts->setSafe( mParticleCompositeShaderConsts.mEdgeTargetParamsSC, 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
|
// Set shader and constant buffer
|
||||||
GFX->setShader( mParticleCompositeShader );
|
GFX->setShader( mParticleCompositeShader );
|
||||||
|
|
@ -686,8 +695,8 @@ GFXStateBlockRef RenderParticleMgr::_getHighResStateBlock(ParticleRenderInst *ri
|
||||||
GFXStateBlockRef RenderParticleMgr::_getMixedResStateBlock(ParticleRenderInst *ri)
|
GFXStateBlockRef RenderParticleMgr::_getMixedResStateBlock(ParticleRenderInst *ri)
|
||||||
{
|
{
|
||||||
const U8 blendStyle = ri->blendStyle;
|
const U8 blendStyle = ri->blendStyle;
|
||||||
if ( mHighResBlocks[blendStyle].isValid() )
|
if ( mMixedResBlocks[blendStyle].isValid() )
|
||||||
return mHighResBlocks[blendStyle];
|
return mMixedResBlocks[blendStyle];
|
||||||
|
|
||||||
GFXStateBlockDesc d;
|
GFXStateBlockDesc d;
|
||||||
|
|
||||||
|
|
@ -751,8 +760,8 @@ GFXStateBlockRef RenderParticleMgr::_getMixedResStateBlock(ParticleRenderInst *r
|
||||||
// Prepass sampler
|
// Prepass sampler
|
||||||
d.samplers[1] = GFXSamplerStateDesc::getClampPoint();
|
d.samplers[1] = GFXSamplerStateDesc::getClampPoint();
|
||||||
|
|
||||||
mHighResBlocks[blendStyle] = GFX->createStateBlock(d);
|
mMixedResBlocks[blendStyle] = GFX->createStateBlock(d);
|
||||||
return mHighResBlocks[blendStyle];
|
return mMixedResBlocks[blendStyle];
|
||||||
}
|
}
|
||||||
|
|
||||||
GFXStateBlockRef RenderParticleMgr::_getCompositeStateBlock(ParticleRenderInst *ri)
|
GFXStateBlockRef RenderParticleMgr::_getCompositeStateBlock(ParticleRenderInst *ri)
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ singleton PostEffect( EdgeDetectPostEffect )
|
||||||
texture[0] = "#prepass";
|
texture[0] = "#prepass";
|
||||||
target = "#edge";
|
target = "#edge";
|
||||||
|
|
||||||
isEnabled = false;
|
isEnabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
singleton PostEffect( EdgeAAPostEffect )
|
singleton PostEffect( EdgeAAPostEffect )
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ singleton PostEffect( EdgeDetectPostEffect )
|
||||||
texture[0] = "#prepass";
|
texture[0] = "#prepass";
|
||||||
target = "#edge";
|
target = "#edge";
|
||||||
|
|
||||||
isEnabled = false;
|
isEnabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
singleton PostEffect( EdgeAAPostEffect )
|
singleton PostEffect( EdgeAAPostEffect )
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue