mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 00:41:55 +00:00
- fixed swapped color channels in the tinting part of the shader.
This commit is contained in:
parent
f6d9b5602b
commit
dbc958baeb
4 changed files with 20 additions and 19 deletions
|
@ -1133,7 +1133,7 @@ extern int32_t r_rortexturerange;
|
|||
extern int32_t r_rorphase;
|
||||
|
||||
void hicinit(void);
|
||||
void hicsetpalettetint(int32_t palnum, char r, char g, char b, char sr, char sg, char sb, polytintflags_t effect);
|
||||
void hicsetpalettetint(int32_t palnum, int r, int g, int b, int sr, int sg, int sb, polytintflags_t effect);
|
||||
// flags bitset: 1 = don't compress
|
||||
int32_t Ptile2tile(int32_t tile, int32_t palette) ATTRIBUTE((pure));
|
||||
int32_t md_loadmodel(const char *fn);
|
||||
|
|
|
@ -36,17 +36,17 @@ void hicinit(void)
|
|||
// palette shifts on true-colour textures and only true-colour textures.
|
||||
// effect bitset: 1 = greyscale, 2 = invert
|
||||
//
|
||||
void hicsetpalettetint(int32_t palnum, char r, char g, char b, char sr, char sg, char sb, polytintflags_t effect)
|
||||
void hicsetpalettetint(int32_t palnum, int r, int g, int b, int sr, int sg, int sb, polytintflags_t effect)
|
||||
{
|
||||
if ((uint32_t)palnum >= (uint32_t)MAXPALOOKUPS) return;
|
||||
|
||||
polytint_t & tint = hictinting[palnum];
|
||||
tint.tint.r = r;
|
||||
tint.tint.g = g;
|
||||
tint.tint.b = b;
|
||||
tint.shade.r = sr;
|
||||
tint.shade.g = sg;
|
||||
tint.shade.b = sb;
|
||||
tint.tint.r = (uint8_t)r;
|
||||
tint.tint.g = (uint8_t)g;
|
||||
tint.tint.b = (uint8_t)b;
|
||||
tint.shade.r = (uint8_t)sr;
|
||||
tint.shade.g = (uint8_t)sg;
|
||||
tint.shade.b = (uint8_t)sb;
|
||||
tint.f = effect;
|
||||
}
|
||||
|
||||
|
|
|
@ -191,7 +191,8 @@ bool GLInstance::SetTextureInternal(int picnum, FTexture* tex, int palette, int
|
|||
}
|
||||
|
||||
// This is intentionally the same value for both parameters. The shader does not use the same uniform for modulation and overlay colors.
|
||||
if (applytint && h.f) GLInterface.SetTinting(h.f, h.tint, h.tint);
|
||||
if (applytint && h.f)
|
||||
GLInterface.SetTinting(h.f, h.tint, h.tint);
|
||||
else GLInterface.SetTinting(-1, 0xffffff, 0xffffff);
|
||||
|
||||
|
||||
|
|
|
@ -103,34 +103,34 @@ vec4 convertColor(vec4 color)
|
|||
// Much of this looks quite broken by design. Why is this effectively multplied by 4 if the flag is set...? :(
|
||||
if ((effect & RF_HICTINT_Colorize) != 0)
|
||||
{
|
||||
tcol.b = min(((tcol.b) * u_tintModulate.r)* 4, 255.0);
|
||||
tcol.r = min(((tcol.b) * u_tintModulate.r)* 4, 255.0);
|
||||
tcol.g = min(((tcol.g) * u_tintModulate.g)* 4, 255.0);
|
||||
tcol.r = min(((tcol.r) * u_tintModulate.b)* 4, 255.0);
|
||||
tcol.b = min(((tcol.r) * u_tintModulate.b)* 4, 255.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
tcol.b = min(((tcol.b) * u_tintModulate.r), 255.0);
|
||||
tcol.r = min(((tcol.b) * u_tintModulate.r), 255.0);
|
||||
tcol.g = min(((tcol.g) * u_tintModulate.g), 255.0);
|
||||
tcol.r = min(((tcol.r) * u_tintModulate.b), 255.0);
|
||||
tcol.b = min(((tcol.r) * u_tintModulate.b), 255.0);
|
||||
}
|
||||
|
||||
vec4 ov = u_tintOverlay * 255.0;
|
||||
switch (effect & RF_HICTINT_BLENDMASK)
|
||||
{
|
||||
case RF_HICTINT_BLEND_Screen:
|
||||
tcol.b = 255.0 - (((255.0 - tcol.b) * (255.0 - ov.r)) / 256.0);
|
||||
tcol.r = 255.0 - (((255.0 - tcol.r) * (255.0 - ov.r)) / 256.0);
|
||||
tcol.g = 255.0 - (((255.0 - tcol.g) * (255.0 - ov.g)) / 256.0);
|
||||
tcol.r = 255.0 - (((255.0 - tcol.r) * (255.0 - ov.b)) / 256.0);
|
||||
tcol.b = 255.0 - (((255.0 - tcol.b) * (255.0 - ov.b)) / 256.0);
|
||||
break;
|
||||
case RF_HICTINT_BLEND_Overlay:
|
||||
tcol.b = tcol.b < 128.0? (tcol.b * ov.r) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - ov.r)) / 128.0);
|
||||
tcol.r = tcol.b < 128.0? (tcol.r * ov.r) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - ov.r)) / 128.0);
|
||||
tcol.g = tcol.g < 128.0? (tcol.g * ov.g) / 128.0 : 255.0 - (((255.0 - tcol.g) * (255.0 - ov.g)) / 128.0);
|
||||
tcol.r = tcol.r < 128.0? (tcol.r * ov.b) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - ov.b)) / 128.0);
|
||||
tcol.b = tcol.r < 128.0? (tcol.b * ov.b) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - ov.b)) / 128.0);
|
||||
break;
|
||||
case RF_HICTINT_BLEND_Hardlight:
|
||||
tcol.b = ov.r < 128.0 ? (tcol.b * ov.r) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - ov.r)) / 128.0);
|
||||
tcol.r = ov.r < 128.0 ? (tcol.r * ov.r) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - ov.r)) / 128.0);
|
||||
tcol.g = ov.g < 128.0 ? (tcol.g * ov.g) / 128.0 : 255.0 - (((255.0 - tcol.g) * (255.0 - ov.g)) / 128.0);
|
||||
tcol.r = ov.b < 128.0 ? (tcol.r * ov.b) / 128.0 : 255.0 - (((255.0 - tcol.r) * (255.0 - ov.b)) / 128.0);
|
||||
tcol.b = ov.b < 128.0 ? (tcol.b * ov.b) / 128.0 : 255.0 - (((255.0 - tcol.b) * (255.0 - ov.b)) / 128.0);
|
||||
break;
|
||||
}
|
||||
color.rgb = tcol / 255.0;
|
||||
|
|
Loading…
Reference in a new issue