Add vector light support to forward materials.

This commit is contained in:
Areloch 2019-07-22 00:16:58 -05:00
parent 38b0d0f1fe
commit ebe2c2dead
11 changed files with 96 additions and 4 deletions

View file

@ -391,6 +391,10 @@ void AdvancedLightManager::setLightInfo( ProcessedMaterial *pmat,
lsc->mLightConfigDataSC,
lsc->mLightSpotDirSC,
lsc->mLightSpotParamsSC,
lsc->mHasVectorLightSC,
lsc->mVectorLightDirectionSC,
lsc->mVectorLightColorSC,
lsc->mVectorLightBrightnessSC,
shaderConsts );
// Static

View file

@ -306,7 +306,11 @@ BasicLightManager::LightingShaderConstants::LightingShaderConstants()
mLightAmbient( NULL ),
mLightConfigDataSC( NULL ),
mLightSpotDir( NULL ),
mLightSpotParamsSC( NULL )
mLightSpotParamsSC( NULL ),
mHasVectorLightSC(NULL),
mVectorLightDirectionSC(NULL),
mVectorLightColorSC(NULL),
mVectorLightBrightnessSC(NULL)
{
}
@ -337,6 +341,11 @@ void BasicLightManager::LightingShaderConstants::init(GFXShader* shader)
mLightSpotDir = shader->getShaderConstHandle( ShaderGenVars::lightSpotDir );
mLightSpotParamsSC = shader->getShaderConstHandle( ShaderGenVars::lightSpotParams );
mHasVectorLightSC = shader->getShaderConstHandle(ShaderGenVars::hasVectorLight);
mVectorLightDirectionSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightDirection);
mVectorLightColorSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightColor);
mVectorLightBrightnessSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightBrightness);
mInit = true;
}
@ -400,5 +409,9 @@ void BasicLightManager::setLightInfo( ProcessedMaterial* pmat,
mLastConstants->mLightConfigDataSC,
mLastConstants->mLightSpotDir,
mLastConstants->mLightSpotParamsSC,
mLastConstants->mHasVectorLightSC,
mLastConstants->mVectorLightDirectionSC,
mLastConstants->mVectorLightColorSC,
mLastConstants->mVectorLightBrightnessSC,
shaderConsts );
}

View file

@ -92,6 +92,11 @@ protected:
GFXShaderConstHandle *mLightSpotDir;
GFXShaderConstHandle *mLightSpotParamsSC;
GFXShaderConstHandle* mHasVectorLightSC;
GFXShaderConstHandle* mVectorLightDirectionSC;
GFXShaderConstHandle* mVectorLightColorSC;
GFXShaderConstHandle* mVectorLightBrightnessSC;
LightingShaderConstants();
~LightingShaderConstants();

View file

@ -309,6 +309,10 @@ void LightManager::_update4LightConsts( const SceneData &sgData,
GFXShaderConstHandle *lightConfigDataSC,
GFXShaderConstHandle *lightSpotDirSC,
GFXShaderConstHandle *lightSpotParamsSC,
GFXShaderConstHandle* hasVectorLightSC,
GFXShaderConstHandle* vectorLightDirectionSC,
GFXShaderConstHandle* vectorLightColorSC,
GFXShaderConstHandle* vectorLightBrightnessSC,
GFXShaderConstBuffer *shaderConsts )
{
PROFILE_SCOPE( LightManager_Update4LightConsts );
@ -417,6 +421,11 @@ void LightManager::_update4LightConsts( const SceneData &sgData,
shaderConsts->setSafe(lightConfigDataSC, lightConfigData);
shaderConsts->setSafe(lightSpotParamsSC, lightSpotParams);
shaderConsts->setSafe(hasVectorLightSC, (int)hasVectorLight);
shaderConsts->setSafe(vectorLightDirectionSC, vectorLightDirection);
shaderConsts->setSafe(vectorLightColorSC, vectorLightColor);
shaderConsts->setSafe(vectorLightBrightnessSC, vectorLightBrightness);
//================================================================
//old setup
/*static AlignedArray<Point4F> lightPositions( 3, sizeof( Point4F ) );

View file

@ -178,6 +178,10 @@ protected:
GFXShaderConstHandle *lightInvRadiusSqSC,
GFXShaderConstHandle *lightSpotDirSC,
GFXShaderConstHandle * lightSpotParamsSC,
GFXShaderConstHandle* hasVectorLightSC,
GFXShaderConstHandle* vectorLightDirectionSC,
GFXShaderConstHandle* vectorLightColorSC,
GFXShaderConstHandle* vectorLightBrightnessSC,
GFXShaderConstBuffer *shaderConsts );
/// A dummy default light used when no lights

View file

@ -462,6 +462,10 @@ LightingShaderConstants::LightingShaderConstants()
mLightAmbientSC(NULL),
mLightConfigDataSC(NULL),
mLightSpotDirSC(NULL),
mHasVectorLightSC(NULL),
mVectorLightDirectionSC(NULL),
mVectorLightColorSC(NULL),
mVectorLightBrightnessSC(NULL),
mShadowMapSC(NULL),
mDynamicShadowMapSC(NULL),
mShadowMapSizeSC(NULL),
@ -525,6 +529,11 @@ void LightingShaderConstants::init(GFXShader* shader)
mLightConfigDataSC = shader->getShaderConstHandle( ShaderGenVars::lightConfigData);
mLightSpotDirSC = shader->getShaderConstHandle( ShaderGenVars::lightSpotDir );
mHasVectorLightSC = shader->getShaderConstHandle(ShaderGenVars::hasVectorLight);
mVectorLightDirectionSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightDirection);
mVectorLightColorSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightColor);
mVectorLightBrightnessSC = shader->getShaderConstHandle(ShaderGenVars::vectorLightBrightness);
mShadowMapSC = shader->getShaderConstHandle("$shadowMap");
mDynamicShadowMapSC = shader->getShaderConstHandle("$dynamicShadowMap");
mShadowMapSizeSC = shader->getShaderConstHandle("$shadowMapSize");

View file

@ -90,6 +90,11 @@ struct LightingShaderConstants
GFXShaderConstHandle *mLightConfigDataSC;
GFXShaderConstHandle *mLightSpotDirSC;
GFXShaderConstHandle* mHasVectorLightSC;
GFXShaderConstHandle* mVectorLightDirectionSC;
GFXShaderConstHandle* mVectorLightColorSC;
GFXShaderConstHandle* mVectorLightBrightnessSC;
GFXShaderConstHandle* mShadowMapSC;
GFXShaderConstHandle* mDynamicShadowMapSC;
GFXShaderConstHandle* mShadowMapSizeSC;