mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
New userdef structure: "global_r", "global_g", "global_b"
Set the tinting RGB values of textures being rendered. Can be used in DISPLAYROOMS or before rotatesprite (similar to setaspect). Remember to reset the values afterwards. Patch from Fox. git-svn-id: https://svn.eduke32.com/eduke32@6591 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
392d5fc942
commit
67438d0cd2
7 changed files with 39 additions and 0 deletions
|
@ -858,6 +858,7 @@ extern int32_t usevoxels, voxscale[MAXVOXELS];
|
|||
#ifdef USE_OPENGL
|
||||
extern int32_t usemodels, usehightile;
|
||||
extern int32_t rendmode;
|
||||
extern uint8_t globalr, globalg, globalb;
|
||||
#endif
|
||||
EXTERN uint16_t h_xsize[MAXTILES], h_ysize[MAXTILES];
|
||||
EXTERN int8_t h_xoffs[MAXTILES], h_yoffs[MAXTILES];
|
||||
|
|
|
@ -71,6 +71,20 @@ static inline void hictinting_apply_ub(uint8_t *color, int32_t palnum)
|
|||
color[2] = (uint8_t)(color[2] * (float)tint.b * (1.f/255.f));
|
||||
}
|
||||
|
||||
static inline void globaltinting_apply(float *color)
|
||||
{
|
||||
color[0] *= (float)globalr * (1.f/255.f);
|
||||
color[1] *= (float)globalg * (1.f/255.f);
|
||||
color[2] *= (float)globalb * (1.f/255.f);
|
||||
}
|
||||
|
||||
static inline void globaltinting_apply_ub(uint8_t *color)
|
||||
{
|
||||
color[0] = (uint8_t)(color[0] * (float)globalr * (1.f/255.f));
|
||||
color[1] = (uint8_t)(color[1] * (float)globalg * (1.f/255.f));
|
||||
color[2] = (uint8_t)(color[2] * (float)globalb * (1.f/255.f));
|
||||
}
|
||||
|
||||
// texcacheheader cachead.flags bits
|
||||
enum
|
||||
{
|
||||
|
|
|
@ -4209,6 +4209,8 @@ static void polymer_drawartsky(int16_t tilenum, char palnum, int8_t shad
|
|||
// global tinting
|
||||
if ((pth->flags & PTH_HIGHTILE) && have_basepal_tint())
|
||||
hictinting_apply(glcolors[i], MAXPALOOKUPS-1);
|
||||
|
||||
globaltinting_apply(glcolors[i]);
|
||||
}
|
||||
|
||||
i++;
|
||||
|
@ -4301,6 +4303,8 @@ static void polymer_drawskybox(int16_t tilenum, char palnum, int8_t shad
|
|||
// global tinting
|
||||
if ((pth->flags & PTH_HIGHTILE) && have_basepal_tint())
|
||||
hictinting_apply(color, MAXPALOOKUPS-1);
|
||||
|
||||
globaltinting_apply(color);
|
||||
}
|
||||
|
||||
bglColor4f(color[0], color[1], color[2], 1.0);
|
||||
|
@ -4527,6 +4531,8 @@ static void polymer_drawmdsprite(uspritetype *tspr)
|
|||
if (!usinghighpal && have_basepal_tint())
|
||||
hictinting_apply_ub(color, MAXPALOOKUPS-1);
|
||||
|
||||
globaltinting_apply_ub(color);
|
||||
|
||||
if (tspr->cstat & 2)
|
||||
{
|
||||
if (!(tspr->cstat&512))
|
||||
|
@ -4966,6 +4972,7 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
|||
material->shadeoffset = shade;
|
||||
material->visibility = (uint8_t)(vis+16);
|
||||
|
||||
globaltinting_apply_ub(material->diffusemodulation);
|
||||
// all the stuff below is mutually exclusive with artmapping
|
||||
goto done;
|
||||
}
|
||||
|
@ -5013,6 +5020,8 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
|||
if ((pth->flags & PTH_HIGHTILE) && !usinghighpal && have_basepal_tint())
|
||||
hictinting_apply_ub(material->diffusemodulation, MAXPALOOKUPS-1);
|
||||
|
||||
globaltinting_apply_ub(material->diffusemodulation);
|
||||
|
||||
// PR_BIT_GLOW_MAP
|
||||
if (r_fullbrights && pth->flags & PTH_HASFULLBRIGHT)
|
||||
material->glowmap = pth->ofb->glpic;
|
||||
|
|
|
@ -32,6 +32,7 @@ extern char textfont[2048], smalltextfont[2048];
|
|||
int32_t rendmode=0;
|
||||
int32_t usemodels=1;
|
||||
int32_t usehightile=1;
|
||||
uint8_t globalr=255, globalg=255, globalb=255;
|
||||
|
||||
typedef struct { float x, cy[2], fy[2]; int32_t tag; int16_t n, p, ctag, ftag; } vsptyp;
|
||||
#define VSPMAX 2048 //<- careful!
|
||||
|
@ -1922,6 +1923,8 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
|
|||
// global tinting
|
||||
if ((pth->flags & PTH_HIGHTILE) && have_basepal_tint())
|
||||
hictinting_apply(pc, MAXPALOOKUPS-1);
|
||||
|
||||
globaltinting_apply(pc);
|
||||
}
|
||||
|
||||
bglColor4f(pc[0], pc[1], pc[2], pc[3]);
|
||||
|
|
|
@ -1243,6 +1243,9 @@ const memberlabel_t UserdefsLabels[]=
|
|||
{ "menu_slidebarz", USERDEFS_MENU_SLIDEBARZ, 0, 0 },
|
||||
{ "menu_slidebarmargin", USERDEFS_MENU_SLIDEBARMARGIN, 0, 0 },
|
||||
{ "menu_slidecursorz", USERDEFS_MENU_SLIDECURSORZ, 0, 0 },
|
||||
{ "global_r", USERDEFS_GLOBAL_R, 0, 0 },
|
||||
{ "global_g", USERDEFS_GLOBAL_G, 0, 0 },
|
||||
{ "global_b", USERDEFS_GLOBAL_B, 0, 0 },
|
||||
{ NULL, -1, 0, 0 } // END OF LIST
|
||||
};
|
||||
|
||||
|
|
|
@ -541,6 +541,9 @@ enum UserdefsLabel_t
|
|||
USERDEFS_MENU_SLIDEBARZ,
|
||||
USERDEFS_MENU_SLIDEBARMARGIN,
|
||||
USERDEFS_MENU_SLIDECURSORZ,
|
||||
USERDEFS_GLOBAL_R,
|
||||
USERDEFS_GLOBAL_G,
|
||||
USERDEFS_GLOBAL_B,
|
||||
USERDEFS_END
|
||||
};
|
||||
|
||||
|
|
|
@ -185,6 +185,9 @@ int32_t __fastcall VM_GetUserdef(int32_t labelNum)
|
|||
case USERDEFS_MENU_SLIDEBARZ: labelNum = ud.menu_slidebarz; break;
|
||||
case USERDEFS_MENU_SLIDEBARMARGIN: labelNum = ud.menu_slidebarmargin; break;
|
||||
case USERDEFS_MENU_SLIDECURSORZ: labelNum = ud.menu_slidecursorz; break;
|
||||
case USERDEFS_GLOBAL_R: labelNum = globalr; break;
|
||||
case USERDEFS_GLOBAL_G: labelNum = globalg; break;
|
||||
case USERDEFS_GLOBAL_B: labelNum = globalb; break;
|
||||
default: labelNum = -1; break;
|
||||
}
|
||||
|
||||
|
@ -320,6 +323,9 @@ void __fastcall VM_SetUserdef(int32_t const labelNum, int32_t const iSet)
|
|||
case USERDEFS_MENU_SLIDEBARZ: ud.menu_slidebarz = iSet; break;
|
||||
case USERDEFS_MENU_SLIDEBARMARGIN: ud.menu_slidebarmargin = iSet; break;
|
||||
case USERDEFS_MENU_SLIDECURSORZ: ud.menu_slidecursorz = iSet; break;
|
||||
case USERDEFS_GLOBAL_R: globalr = iSet; break;
|
||||
case USERDEFS_GLOBAL_G: globalg = iSet; break;
|
||||
case USERDEFS_GLOBAL_B: globalb = iSet; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue