"Generalize" canvas proxy shader so it's useful for other people.

This commit is contained in:
Mari the Deer 2022-09-11 12:16:47 +02:00
commit e903130b8e
6 changed files with 37 additions and 21 deletions

View file

@ -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
}

View file

@ -1,6 +1,6 @@
HardwareShader Texture "models/QuadLED.png"
{
Shader "shaders/glsl/BrightCanvas.fp"
Shader "shaders/glsl/CanvasProxy.fp"
Texture "scrtex" "QUADRLED"
}

View file

@ -1,6 +1,6 @@
HardwareShader Texture "models/SheenLED.png"
{
Shader "shaders/glsl/BrightCanvas.fp"
Shader "shaders/glsl/CanvasProxy.fp"
Texture "scrtex" "SHEENLED"
}
PointLight SHEENTLIGHT

View file

@ -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-";

View file

@ -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.);
}

View file

@ -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
}