diff --git a/source/build/include/build.h b/source/build/include/build.h index b5d50e39d..9206ff836 100644 --- a/source/build/include/build.h +++ b/source/build/include/build.h @@ -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); diff --git a/source/build/src/hightile.cpp b/source/build/src/hightile.cpp index a2d6a7ded..796417765 100644 --- a/source/build/src/hightile.cpp +++ b/source/build/src/hightile.cpp @@ -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; } diff --git a/source/glbackend/gl_texture.cpp b/source/glbackend/gl_texture.cpp index 3993ffa01..eae6f067d 100644 --- a/source/glbackend/gl_texture.cpp +++ b/source/glbackend/gl_texture.cpp @@ -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); diff --git a/wadsrc/static/engine/shaders/glsl/polymost.fp b/wadsrc/static/engine/shaders/glsl/polymost.fp index 7f473d219..05d5071c6 100644 --- a/wadsrc/static/engine/shaders/glsl/polymost.fp +++ b/wadsrc/static/engine/shaders/glsl/polymost.fp @@ -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;