- added a few more texture coloring options to the shader.
Aside from adding an additive component it can now also do: - desaturation (not limited to the range of 0..1 so it can also be used for oversaturation by applying a negative number or negative saturation by going above 1.0. - invert the texture - apply a blend, including 3 special mode taken from EDuke32. Currently only the implementation is done, it is not exposed to UDMF yet.
This commit is contained in:
parent
41a9496bef
commit
3209d4ed23
7 changed files with 142 additions and 6 deletions
|
|
@ -158,11 +158,16 @@ struct StreamData
|
|||
FVector4PalEntry uObjectColor2;
|
||||
FVector4 uDynLightColor;
|
||||
FVector4PalEntry uAddColor;
|
||||
FVector4PalEntry uBlendColor;
|
||||
FVector4PalEntry uFogColor;
|
||||
float uDesaturationFactor;
|
||||
float uInterpolationFactor;
|
||||
float timer;
|
||||
int useVertexData;
|
||||
float uObjectDesaturationFactor;
|
||||
float uObjectColorizeFactor;
|
||||
int uObjectBlendMode;
|
||||
int uObjectInvertColor;
|
||||
FVector4 uVertexColor;
|
||||
FVector4 uVertexNormal;
|
||||
|
||||
|
|
@ -236,6 +241,11 @@ public:
|
|||
mStreamData.uAddColor = 0;
|
||||
mStreamData.uObjectColor = 0xffffffff;
|
||||
mStreamData.uObjectColor2 = 0;
|
||||
mStreamData.uBlendColor = 0;
|
||||
mStreamData.uObjectDesaturationFactor = 0;
|
||||
mStreamData.uObjectBlendMode = 0;
|
||||
mStreamData.uObjectColorizeFactor = 1;
|
||||
mStreamData.uObjectInvertColor = 0;
|
||||
mSoftLight = 0;
|
||||
mLightParms[0] = mLightParms[1] = mLightParms[2] = 0.0f;
|
||||
mLightParms[3] = -1.f;
|
||||
|
|
@ -445,6 +455,31 @@ public:
|
|||
mStreamData.uAddColor = pe;
|
||||
}
|
||||
|
||||
void SetBlendColor(PalEntry pe)
|
||||
{
|
||||
mStreamData.uBlendColor = pe;
|
||||
}
|
||||
|
||||
void SetColorizeFactor(float f)
|
||||
{
|
||||
mStreamData.uObjectColorizeFactor = f;
|
||||
}
|
||||
|
||||
void SetObjectDesaturateFactor(float f)
|
||||
{
|
||||
mStreamData.uObjectDesaturationFactor = f;
|
||||
}
|
||||
|
||||
void SetObjectInvert(bool on)
|
||||
{
|
||||
mStreamData.uObjectInvertColor = on;
|
||||
}
|
||||
|
||||
void SetObjectBlendMode(int b)
|
||||
{
|
||||
mStreamData.uObjectBlendMode = b;
|
||||
}
|
||||
|
||||
void SetFog(PalEntry c, float d)
|
||||
{
|
||||
const float LOG2E = 1.442692f; // = 1/log(2)
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ void HWWall::RenderTexturedWall(HWDrawInfo *di, FRenderState &state, int rflags)
|
|||
state.SetObjectColor(color1);
|
||||
state.SetObjectColor2((color1 != color2) ? color2 : PalEntry(0));
|
||||
state.SetAddColor(side->GetAdditiveColor(tierndx, frontsector));
|
||||
|
||||
if (color1 != color2)
|
||||
{
|
||||
// Do gradient setup only if there actually is a gradient.
|
||||
|
|
@ -243,6 +244,9 @@ void HWWall::RenderTexturedWall(HWDrawInfo *di, FRenderState &state, int rflags)
|
|||
state.SetTextureMode(tmode);
|
||||
state.EnableGlow(false);
|
||||
state.EnableGradient(false);
|
||||
state.SetObjectDesaturateFactor(0);
|
||||
state.SetObjectInvert(false);
|
||||
state.SetObjectBlendMode(0);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue