Skip to content

Commit ef0c6b5

Browse files
committed
this should do it
1 parent a3f493d commit ef0c6b5

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

code/def_files/data/effects/main-f.sdr

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -293,17 +293,18 @@ void main()
293293
#ifdef FLAG_TEAMCOLOR
294294
vec4 teamMask = vec4(0.0, 0.0, 0.0, 0.0);
295295
teamMask = texture(sMiscmap, vec3(texCoord, float(sMiscmapIndex)));
296-
vec3 base = base_color - vec3(0.5);
297-
vec3 stripe = stripe_color - vec3(0.5);
298-
vec3 team_color = (base * teamMask.x) + (stripe * teamMask.y);
299-
vec3 team_color_glow = (base * teamMask.b) + (stripe * teamMask.a);
296+
//For team colors applied to a diffuse or spec map, we assume that the base color of the diffuse
297+
//at this point is vec3(0.5). To get accurate results, we subtract 0.5 from the team colors
298+
vec3 team_color = ((base_color - vec3(0.5)) * teamMask.x) + ((stripe_color - vec3(0.5)) * teamMask.y);
299+
vec3 team_color_glow = (base_color * teamMask.b) + (stripe_color * teamMask.a);
300+
300301
#ifdef FLAG_HDR
301302
team_color = pow(team_color, vec3(SRGB_GAMMA));
302303
team_color_glow = pow(team_color_glow, vec3(SRGB_GAMMA)) * GLOW_MAP_SRGB_MULTIPLIER;
303304
#endif
304305

305-
baseColor.rgb += team_color;
306-
baseColor.rgb = max(baseColor.rgb, vec3(0.0));
306+
baseColor.rgb += team_color;
307+
baseColor.rgb = max(baseColor.rgb, vec3(0.0)); // We need to make sure that nothing here ever goes negative
307308
specColor.rgb += team_color;
308309
specColor.rgb = max(specColor.rgb, vec3(0.03));
309310
#endif
@@ -357,7 +358,7 @@ void main()
357358
#ifdef FLAG_MISC_MAP
358359
#ifdef FLAG_TEAMCOLOR
359360
float glowColorLuminance = dot(glowColor, vec3(0.299, 0.587, 0.114));
360-
glowColor = team_glow_enabled ? mix(team_color_glow, glowColor, clamp(glowColorLuminance - teamMask.b - teamMask.a, 0.0, 1.0)) : glowColor;
361+
glowColor = team_glow_enabled ? mix(max(team_color_glow, vec3(0.0)), glowColor, clamp(glowColorLuminance - teamMask.b - teamMask.a, 0.0, 1.0)) : glowColor;
361362
#endif
362363
#endif
363364
emissiveColor.rgb += glowColor * GLOW_MAP_INTENSITY;

0 commit comments

Comments
 (0)