Merge pull request #934 from BeamNG/postfx_opengl

Changes on PostFX for OpenGL.
This commit is contained in:
LuisAntonRebollo 2014-11-30 02:23:02 +01:00
commit a4c8e1d881
2 changed files with 32 additions and 4 deletions

View file

@ -178,7 +178,13 @@ void PostEffect::EffectConst::setToBuffer( GFXShaderConstBufferRef buff )
const char *strVal = mStringVal.c_str();
if ( type == GFXSCT_Float )
if ( type == GFXSCT_Int )
{
S32 val;
Con::setData( TypeS32, &val, 0, 1, &strVal );
buff->set( mHandle, val );
}
else if ( type == GFXSCT_Float )
{
F32 val;
Con::setData( TypeF32, &val, 0, 1, &strVal );
@ -196,7 +202,7 @@ void PostEffect::EffectConst::setToBuffer( GFXShaderConstBufferRef buff )
Con::setData( TypePoint3F, &val, 0, 1, &strVal );
buff->set( mHandle, val );
}
else
else if ( type == GFXSCT_Float4 )
{
Point4F val;
@ -228,6 +234,14 @@ void PostEffect::EffectConst::setToBuffer( GFXShaderConstBufferRef buff )
buff->set( mHandle, val );
}
}
else
{
#if TORQUE_DEBUG
const char* err = avar("PostEffect::EffectConst::setToBuffer $s type is not implemented", mName.c_str());
Con::errorf(err);
GFXAssertFatal(0,err);
#endif
}
}
@ -533,6 +547,8 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
mTexSizeSC[3] = mShader->getShaderConstHandle( "$texSize3" );
mTexSizeSC[4] = mShader->getShaderConstHandle( "$texSize4" );
mTexSizeSC[5] = mShader->getShaderConstHandle( "$texSize5" );
mTexSizeSC[6] = mShader->getShaderConstHandle( "$texSize6" );
mTexSizeSC[7] = mShader->getShaderConstHandle( "$texSize7" );
mRenderTargetParamsSC[0] = mShader->getShaderConstHandle( "$rtParams0" );
mRenderTargetParamsSC[1] = mShader->getShaderConstHandle( "$rtParams1" );
@ -540,6 +556,8 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
mRenderTargetParamsSC[3] = mShader->getShaderConstHandle( "$rtParams3" );
mRenderTargetParamsSC[4] = mShader->getShaderConstHandle( "$rtParams4" );
mRenderTargetParamsSC[5] = mShader->getShaderConstHandle( "$rtParams5" );
mRenderTargetParamsSC[6] = mShader->getShaderConstHandle( "$rtParams6" );
mRenderTargetParamsSC[7] = mShader->getShaderConstHandle( "$rtParams7" );
//mViewportSC = shader->getShaderConstHandle( "$viewport" );
@ -826,7 +844,10 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
EffectConstTable::Iterator iter = mEffectConsts.begin();
for ( ; iter != mEffectConsts.end(); iter++ )
{
iter->value->mDirty = true;
iter->value->mHandle = NULL;
}
}
// Doesn't look like anyone is using this anymore.
@ -1211,9 +1232,9 @@ void PostEffect::process( const SceneRenderState *state,
// Setup the shader and constants.
if ( mShader )
{
GFX->setShader( mShader );
_setupConstants( state );
GFX->setShader( mShader );
GFX->setShaderConstBuffer( mShaderConsts );
}
else
@ -1397,6 +1418,13 @@ void PostEffect::_checkRequirements()
mIsValid = false;
mUpdateShader = false;
mShader = NULL;
mShaderConsts = NULL;
EffectConstTable::Iterator iter = mEffectConsts.begin();
for ( ; iter != mEffectConsts.end(); iter++ )
{
iter->value->mDirty = true;
iter->value->mHandle = NULL;
}
// First make sure the target format is supported.
if ( mNamedTarget.isRegistered() )