mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 15:44:36 +00:00
adds toLinear and toGamma helper functions for ColorF, uses the former in adjusting lights.
This commit is contained in:
parent
79f8b819ea
commit
13f00ca79d
2 changed files with 16 additions and 3 deletions
|
|
@ -104,6 +104,9 @@ class ColorF
|
||||||
(alpha >= 0.0f && alpha <= 1.0f); }
|
(alpha >= 0.0f && alpha <= 1.0f); }
|
||||||
void clamp();
|
void clamp();
|
||||||
|
|
||||||
|
ColorF toLinear() const;
|
||||||
|
ColorF toGamma() const;
|
||||||
|
|
||||||
static const ColorF ZERO;
|
static const ColorF ZERO;
|
||||||
static const ColorF ONE;
|
static const ColorF ONE;
|
||||||
static const ColorF WHITE;
|
static const ColorF WHITE;
|
||||||
|
|
@ -462,6 +465,16 @@ inline void ColorF::clamp()
|
||||||
alpha = 0.0f;
|
alpha = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline ColorF ColorF::toLinear() const
|
||||||
|
{
|
||||||
|
return ColorF(mPow(red, 2.2f), mPow(green, 2.2f), mPow(blue, 2.2f), alpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline ColorF ColorF::toGamma() const
|
||||||
|
{
|
||||||
|
return ColorF(mPow(red, 1.0f / 2.2f), mPow(green, 1.0f / 2.2f), mPow(blue, 1.0f / 2.2f), alpha);
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//-------------------------------------- INLINES (ColorI)
|
//-------------------------------------- INLINES (ColorI)
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -681,7 +681,7 @@ void AdvancedLightBinManager::LightMaterialInfo::setLightParameters( const Light
|
||||||
F32 lumiance = mDot(*((const Point3F *)&lightInfo->getColor()), colorToLumiance );
|
F32 lumiance = mDot(*((const Point3F *)&lightInfo->getColor()), colorToLumiance );
|
||||||
col.alpha *= lumiance;
|
col.alpha *= lumiance;
|
||||||
|
|
||||||
matParams->setSafe( lightColor, col );
|
matParams->setSafe( lightColor, col.toLinear() );
|
||||||
matParams->setSafe( lightBrightness, lightInfo->getBrightness() );
|
matParams->setSafe( lightBrightness, lightInfo->getBrightness() );
|
||||||
|
|
||||||
switch( lightInfo->getType() )
|
switch( lightInfo->getType() )
|
||||||
|
|
@ -697,7 +697,7 @@ void AdvancedLightBinManager::LightMaterialInfo::setLightParameters( const Light
|
||||||
// the vector light. This prevents a divide by zero.
|
// the vector light. This prevents a divide by zero.
|
||||||
ColorF ambientColor = renderState->getAmbientLightColor();
|
ColorF ambientColor = renderState->getAmbientLightColor();
|
||||||
ambientColor.alpha = 0.00001f;
|
ambientColor.alpha = 0.00001f;
|
||||||
matParams->setSafe( lightAmbient, ambientColor );
|
matParams->setSafe( lightAmbient, ambientColor.toLinear() );
|
||||||
|
|
||||||
// If no alt color is specified, set it to the average of
|
// If no alt color is specified, set it to the average of
|
||||||
// the ambient and main color to avoid artifacts.
|
// the ambient and main color to avoid artifacts.
|
||||||
|
|
@ -711,7 +711,7 @@ void AdvancedLightBinManager::LightMaterialInfo::setLightParameters( const Light
|
||||||
lightAlt = (lightInfo->getColor() + renderState->getAmbientLightColor()) / 2.0f;
|
lightAlt = (lightInfo->getColor() + renderState->getAmbientLightColor()) / 2.0f;
|
||||||
|
|
||||||
ColorF trilightColor = lightAlt;
|
ColorF trilightColor = lightAlt;
|
||||||
matParams->setSafe(lightTrilight, trilightColor);
|
matParams->setSafe(lightTrilight, trilightColor.toLinear());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue