Merge branch 'fade-strength' into 'master'

Alpha value for fade colormaps + colormap bug

See merge request KartKrew/Kart!477
This commit is contained in:
SteelT 2021-12-08 01:53:32 +00:00
commit 83988a1cd8
3 changed files with 15 additions and 16 deletions

View file

@ -284,7 +284,7 @@ struct FSurfaceInfo
typedef struct FSurfaceInfo FSurfaceInfo; typedef struct FSurfaceInfo FSurfaceInfo;
#define GL_DEFAULTMIX 0x00000000 #define GL_DEFAULTMIX 0x00000000
#define GL_DEFAULTFOG 0xFF000000 #define GL_DEFAULTFOG 0x19000000
//Hurdler: added for backward compatibility //Hurdler: added for backward compatibility
enum hwdsetspecialstate enum hwdsetspecialstate

View file

@ -715,14 +715,15 @@ static GLRGBAFloat shader_defaultcolor = {1.0f, 1.0f, 1.0f, 1.0f};
"float colorBrightness = sqrt((final_color.r * final_color.r) + (final_color.g * final_color.g) + (final_color.b * final_color.b));\n" \ "float colorBrightness = sqrt((final_color.r * final_color.r) + (final_color.g * final_color.g) + (final_color.b * final_color.b));\n" \
"float fogBrightness = sqrt((fade_color.r * fade_color.r) + (fade_color.g * fade_color.g) + (fade_color.b * fade_color.b));\n" \ "float fogBrightness = sqrt((fade_color.r * fade_color.r) + (fade_color.g * fade_color.g) + (fade_color.b * fade_color.b));\n" \
"float colorIntensity = 0.0;\n" \ "float colorIntensity = 0.0;\n" \
"if (fogBrightness > colorBrightness) {\n" \ "if (colorBrightness < fogBrightness) {\n" \
"colorIntensity = 1.0 - min(final_color.r, min(final_color.g, final_color.b));\n" \ "colorIntensity = 1.0 - min(final_color.r, min(final_color.g, final_color.b));\n" \
"colorIntensity = abs(colorIntensity - (1.0 - fogBrightness));\n" \ "colorIntensity = abs(colorIntensity - (1.0 - max(fade_color.r, max(fade_color.g, fade_color.b))));\n" \
"} else {\n" \ "} else {\n" \
"colorIntensity = max(final_color.r, max(final_color.g, final_color.b));\n" \ "colorIntensity = max(final_color.r, max(final_color.g, final_color.b));\n" \
"colorIntensity = abs(colorIntensity - (fogBrightness));\n" \ "colorIntensity = abs(colorIntensity - min(fade_color.r, min(fade_color.g, fade_color.b)));\n" \
"}\n" \ "}\n" \
"colorIntensity *= darkness;\n" \ "colorIntensity *= darkness;\n" \
"colorIntensity *= fade_color.a * 10.0;\n" \
"if (abs(final_color.r - fade_color.r) <= colorIntensity) {\n" \ "if (abs(final_color.r - fade_color.r) <= colorIntensity) {\n" \
"final_color.r = fade_color.r;\n" \ "final_color.r = fade_color.r;\n" \
"} else if (final_color.r < fade_color.r) {\n" \ "} else if (final_color.r < fade_color.r) {\n" \

View file

@ -615,6 +615,7 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
{ {
double cmaskr, cmaskg, cmaskb, cdestr, cdestg, cdestb, cdestbright; double cmaskr, cmaskg, cmaskb, cdestr, cdestg, cdestb, cdestbright;
double maskamt = 0, othermask = 0; double maskamt = 0, othermask = 0;
double fmaskamt = 0, fothermask = 0;
UINT8 cr = R_GetRgbaR(extra_colormap->rgba), UINT8 cr = R_GetRgbaR(extra_colormap->rgba),
cg = R_GetRgbaG(extra_colormap->rgba), cg = R_GetRgbaG(extra_colormap->rgba),
@ -622,8 +623,8 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
ca = R_GetRgbaA(extra_colormap->rgba), ca = R_GetRgbaA(extra_colormap->rgba),
cfr = R_GetRgbaR(extra_colormap->fadergba), cfr = R_GetRgbaR(extra_colormap->fadergba),
cfg = R_GetRgbaG(extra_colormap->fadergba), cfg = R_GetRgbaG(extra_colormap->fadergba),
cfb = R_GetRgbaB(extra_colormap->fadergba); cfb = R_GetRgbaB(extra_colormap->fadergba),
// cfa = R_GetRgbaA(extra_colormap->fadergba); // unused in software cfa = R_GetRgbaA(extra_colormap->fadergba);
UINT8 fadestart = extra_colormap->fadestart, UINT8 fadestart = extra_colormap->fadestart,
fadedist = extra_colormap->fadeend - extra_colormap->fadestart; fadedist = extra_colormap->fadeend - extra_colormap->fadestart;
@ -654,14 +655,11 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
cdestb = cfb; cdestb = cfb;
cdestbright = sqrt((cfr*cfr) + (cfg*cfg) + (cfb*cfb)); cdestbright = sqrt((cfr*cfr) + (cfg*cfg) + (cfb*cfb));
// fade alpha unused in software fmaskamt = (double)(cfa/24.0l);
// maskamt = (double)(cfa/24.0l); fothermask = 1 - fmaskamt;
// othermask = 1 - maskamt; //fmaskamt /= 0xff;
// maskamt /= 0xff;
// cdestr *= maskamt; (void)fothermask; // unused, but don't feel like commenting it out
// cdestg *= maskamt;
// cdestb *= maskamt;
///////////////////// /////////////////////
// This code creates the colormap array used by software renderer // This code creates the colormap array used by software renderer
@ -701,16 +699,16 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
if (cbrightness < cdestbright) if (cbrightness < cdestbright)
{ {
cbest = 255.0l - min(r, min(g, b)); cbest = 255.0l - min(r, min(g, b));
cdist = 255.0l - cdestbright; cdist = 255.0l - max(cdestr, max(cdestg, cdestb));
} }
else else
{ {
cbest = max(r, max(g, b)); cbest = max(r, max(g, b));
cdist = cdestbright; cdist = min(cdestr, min(cdestg, cdestb));
} }
// Add/subtract this value during fading. // Add/subtract this value during fading.
brightChange[i] = fabs(cbest - cdist) / (double)fadedist; brightChange[i] = (fabs(cbest - cdist) / (double)fadedist) * fmaskamt;
} }
// Now allocate memory for the actual colormap array itself! // Now allocate memory for the actual colormap array itself!