diff --git a/gldefs.mortalrifle b/gldefs.mortalrifle index 7329b4a0e..f12b2bd5b 100644 --- a/gldefs.mortalrifle +++ b/gldefs.mortalrifle @@ -102,12 +102,12 @@ HardwareShader Texture "models/MortalGrenade_Used.png" } HardwareShader Texture "models/MortalLED.png" { - Shader "shaders/glsl/BrightCanvas.fp" + Shader "shaders/glsl/CanvasProxy.fp" Texture "scrtex" "MORTLED1" } HardwareShader Texture "models/MortalLED2.png" { - Shader "shaders/glsl/BrightCanvas.fp" + Shader "shaders/glsl/CanvasProxy.fp" Texture "scrtex" "MORTLED2" - Define "ALPHA_CUT" + Define "ALPHA_KEY" = "vec3(0.)" // key out pure black } diff --git a/gldefs.quadravol b/gldefs.quadravol index 3fd142e14..17543fba0 100644 --- a/gldefs.quadravol +++ b/gldefs.quadravol @@ -1,6 +1,6 @@ HardwareShader Texture "models/QuadLED.png" { - Shader "shaders/glsl/BrightCanvas.fp" + Shader "shaders/glsl/CanvasProxy.fp" Texture "scrtex" "QUADRLED" } diff --git a/gldefs.sheenhmg b/gldefs.sheenhmg index 3cb65e44a..e535aff2b 100644 --- a/gldefs.sheenhmg +++ b/gldefs.sheenhmg @@ -1,6 +1,6 @@ HardwareShader Texture "models/SheenLED.png" { - Shader "shaders/glsl/BrightCanvas.fp" + Shader "shaders/glsl/CanvasProxy.fp" Texture "scrtex" "SHEENLED" } PointLight SHEENTLIGHT diff --git a/language.version b/language.version index ad088a5c7..da215a724 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r432 \cu(Sun 11 Sep 12:02:48 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r432 \cu(2022-09-11 12:02:48)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r432 \cu(Sun 11 Sep 12:16:47 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r432 \cu(2022-09-11 12:16:47)\c-"; diff --git a/shaders/glsl/BrightCanvas.fp b/shaders/glsl/BrightCanvas.fp deleted file mode 100644 index e1b42a4db..000000000 --- a/shaders/glsl/BrightCanvas.fp +++ /dev/null @@ -1,14 +0,0 @@ -// Make canvas textures fullbright, basically - -void SetupMaterial( inout Material mat ) -{ - mat.Base = texture(scrtex,vec2(vTexCoord.s,1.-vTexCoord.t)); // canvas textures are upside-down when used by models - mat.Base.a = 1.; -#ifdef ALPHA_CUT - // cut black - if ( max(mat.Base.r,max(mat.Base.g,mat.Base.b)) <= 0. ) - mat.Base.a = 0.; -#endif - mat.Normal = ApplyNormalMap(vTexCoord.st); - mat.Bright = vec4(1.); -} diff --git a/shaders/glsl/CanvasProxy.fp b/shaders/glsl/CanvasProxy.fp new file mode 100644 index 000000000..e8b5e916f --- /dev/null +++ b/shaders/glsl/CanvasProxy.fp @@ -0,0 +1,30 @@ +// Proxy shader for canvas textures + +void SetupMaterial( inout Material mat ) +{ + // canvas textures are upside-down when used by models + // this is the default use-case here, so for other situations, + // there's a macro for itâ„¢ +#ifdef STRAIGHT_UVS + mat.Base = texture(scrtex,vTexCoord.st); +#else + mat.Base = texture(scrtex,vec2(vTexCoord.s,1.-vTexCoord.t)); +#endif + // drawing with render styles applied can alter the alpha of the + // canvas itself, which may not be intended, so cap it to 100% here + // unless explicitly disabled +#ifndef DONT_FIX_ALPHA + mat.Base.a = 1.; +#endif + // treat a color (usually pure black) as fully transparent + // used by some special textures +#ifdef ALPHA_KEY + if ( mat.Base.rgb == ALPHA_KEY ) + mat.Base.a = 0.; +#endif + mat.Normal = ApplyNormalMap(vTexCoord.st); + // by default, canvas textures are treated as fullbright +#ifndef NO_FULLBRIGHT + mat.Bright = vec4(1.); +#endif +}