mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-12 19:20:38 +00:00
- merged in the changes RedNukem made to the Build code.
This commit is contained in:
parent
3a90d21661
commit
51dc82b6a6
7 changed files with 77 additions and 15 deletions
|
@ -17,6 +17,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern bool playing_rr;
|
||||||
|
|
||||||
//// TYPES
|
//// TYPES
|
||||||
struct strllist
|
struct strllist
|
||||||
{
|
{
|
||||||
|
@ -108,6 +110,12 @@ static inline int32_t sepldist(const int32_t dx, const int32_t dy)
|
||||||
{
|
{
|
||||||
vec2_t d = { klabs(dx), klabs(dy) };
|
vec2_t d = { klabs(dx), klabs(dy) };
|
||||||
|
|
||||||
|
if (playing_rr)
|
||||||
|
{
|
||||||
|
if (!d.y) return d.x;
|
||||||
|
if (!d.x) return d.y;
|
||||||
|
}
|
||||||
|
|
||||||
if (d.x < d.y)
|
if (d.x < d.y)
|
||||||
swaplong(&d.x, &d.y);
|
swaplong(&d.x, &d.y);
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ extern "C" {
|
||||||
typedef struct { uint8_t r, g, b, a; } coltype;
|
typedef struct { uint8_t r, g, b, a; } coltype;
|
||||||
typedef struct { float r, g, b, a; } coltypef;
|
typedef struct { float r, g, b, a; } coltypef;
|
||||||
|
|
||||||
|
extern bool playing_rr;
|
||||||
extern int32_t rendmode;
|
extern int32_t rendmode;
|
||||||
extern float gtang;
|
extern float gtang;
|
||||||
extern float glox1, gloy1;
|
extern float glox1, gloy1;
|
||||||
|
@ -83,6 +84,7 @@ extern uint8_t alphahackarray[MAXTILES];
|
||||||
extern int32_t r_usenewshading;
|
extern int32_t r_usenewshading;
|
||||||
extern int32_t r_usetileshades;
|
extern int32_t r_usetileshades;
|
||||||
extern int32_t r_npotwallmode;
|
extern int32_t r_npotwallmode;
|
||||||
|
extern int32_t r_brightnesshack;
|
||||||
|
|
||||||
extern int16_t globalpicnum;
|
extern int16_t globalpicnum;
|
||||||
|
|
||||||
|
@ -146,7 +148,7 @@ static FORCE_INLINE int polymost_is_npotmode(void)
|
||||||
#ifdef NEW_MAP_FORMAT
|
#ifdef NEW_MAP_FORMAT
|
||||||
g_loadedMapVersion < 10 &&
|
g_loadedMapVersion < 10 &&
|
||||||
#endif
|
#endif
|
||||||
r_npotwallmode;
|
(playing_rr? r_npotwallmode == 1 : r_npotwallmode != 0); // I have no idea which one is more correct...
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float polymost_invsqrt_approximation(float x)
|
static inline float polymost_invsqrt_approximation(float x)
|
||||||
|
|
|
@ -9068,7 +9068,11 @@ static int32_t engineFinishLoadBoard(const vec3_t *dapos, int16_t *dacursectnum,
|
||||||
int32_t removeit = 0;
|
int32_t removeit = 0;
|
||||||
|
|
||||||
if ((sprite[i].cstat & 48) == 48)
|
if ((sprite[i].cstat & 48) == 48)
|
||||||
sprite[i].cstat &= ~48;
|
{
|
||||||
|
// If I understand this correctly, both of these essentially do the same thing...
|
||||||
|
if (!playing_rr) sprite[i].cstat &= ~48;
|
||||||
|
else sprite[i].cstat |= 32768;
|
||||||
|
}
|
||||||
|
|
||||||
if (sprite[i].statnum == MAXSTATUS)
|
if (sprite[i].statnum == MAXSTATUS)
|
||||||
{
|
{
|
||||||
|
|
|
@ -719,7 +719,7 @@ void videoSetPalette(char dabrightness, uint8_t dapalid, uint8_t flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
videoSetGamma();
|
videoSetGamma();
|
||||||
j = !gammabrightness ? curbrightness : 0;
|
j = (!gammabrightness || (flags&32) != 0) ? curbrightness : 0;
|
||||||
|
|
||||||
for (i=0; i<256; i++)
|
for (i=0; i<256; i++)
|
||||||
{
|
{
|
||||||
|
@ -736,6 +736,13 @@ void videoSetPalette(char dabrightness, uint8_t dapalid, uint8_t flags)
|
||||||
curpalettefaded[i].f = 0;
|
curpalettefaded[i].f = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_OPENGL
|
||||||
|
if ((flags&32) != 0 && videoGetRenderMode() == REND_POLYMOST)
|
||||||
|
r_brightnesshack = j;
|
||||||
|
else
|
||||||
|
r_brightnesshack = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((flags&16) && palfadedelta) // keep the fade
|
if ((flags&16) && palfadedelta) // keep the fade
|
||||||
paletteSetFade(palfadedelta>>2);
|
paletteSetFade(palfadedelta>>2);
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,8 @@ Ken Silverman's official web site: http://www.advsys.net/ken
|
||||||
|
|
||||||
extern char textfont[2048], smalltextfont[2048];
|
extern char textfont[2048], smalltextfont[2048];
|
||||||
|
|
||||||
|
bool playing_rr;
|
||||||
|
|
||||||
int32_t rendmode=0;
|
int32_t rendmode=0;
|
||||||
int32_t usemodels=1;
|
int32_t usemodels=1;
|
||||||
int32_t usehightile=1;
|
int32_t usehightile=1;
|
||||||
|
@ -120,6 +122,7 @@ int32_t r_vbocount = 64;
|
||||||
int32_t r_animsmoothing = 1;
|
int32_t r_animsmoothing = 1;
|
||||||
int32_t r_downsize = 0;
|
int32_t r_downsize = 0;
|
||||||
int32_t r_downsizevar = -1;
|
int32_t r_downsizevar = -1;
|
||||||
|
int32_t r_brightnesshack = 0;
|
||||||
|
|
||||||
// used for fogcalc
|
// used for fogcalc
|
||||||
static float fogresult, fogresult2;
|
static float fogresult, fogresult2;
|
||||||
|
@ -188,6 +191,8 @@ static GLint polymost1NPOTEmulationFactorLoc = -1;
|
||||||
static float polymost1NPOTEmulationFactor = 1.f;
|
static float polymost1NPOTEmulationFactor = 1.f;
|
||||||
static GLint polymost1NPOTEmulationXOffsetLoc = -1;
|
static GLint polymost1NPOTEmulationXOffsetLoc = -1;
|
||||||
static float polymost1NPOTEmulationXOffset = 0.f;
|
static float polymost1NPOTEmulationXOffset = 0.f;
|
||||||
|
static GLint polymost1BrightnessLoc = -1;
|
||||||
|
static float polymost1Brightness = 1.f;
|
||||||
static GLint polymost1RotMatrixLoc = -1;
|
static GLint polymost1RotMatrixLoc = -1;
|
||||||
static float polymost1RotMatrix[16] = { 1.f, 0.f, 0.f, 0.f,
|
static float polymost1RotMatrix[16] = { 1.f, 0.f, 0.f, 0.f,
|
||||||
0.f, 1.f, 0.f, 0.f,
|
0.f, 1.f, 0.f, 0.f,
|
||||||
|
@ -502,6 +507,7 @@ static void polymost_setCurrentShaderProgram(uint32_t programID)
|
||||||
polymost1NPOTEmulationLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulation");
|
polymost1NPOTEmulationLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulation");
|
||||||
polymost1NPOTEmulationFactorLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulationFactor");
|
polymost1NPOTEmulationFactorLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulationFactor");
|
||||||
polymost1NPOTEmulationXOffsetLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulationXOffset");
|
polymost1NPOTEmulationXOffsetLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_npotEmulationXOffset");
|
||||||
|
polymost1BrightnessLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_brightness");
|
||||||
polymost1RotMatrixLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_rotMatrix");
|
polymost1RotMatrixLoc = glGetUniformLocation(polymost1CurrentShaderProgramID, "u_rotMatrix");
|
||||||
|
|
||||||
//set the uniforms to the current values
|
//set the uniforms to the current values
|
||||||
|
@ -520,6 +526,7 @@ static void polymost_setCurrentShaderProgram(uint32_t programID)
|
||||||
glUniform1f(polymost1NPOTEmulationLoc, polymost1NPOTEmulation);
|
glUniform1f(polymost1NPOTEmulationLoc, polymost1NPOTEmulation);
|
||||||
glUniform1f(polymost1NPOTEmulationFactorLoc, polymost1NPOTEmulationFactor);
|
glUniform1f(polymost1NPOTEmulationFactorLoc, polymost1NPOTEmulationFactor);
|
||||||
glUniform1f(polymost1NPOTEmulationXOffsetLoc, polymost1NPOTEmulationXOffset);
|
glUniform1f(polymost1NPOTEmulationXOffsetLoc, polymost1NPOTEmulationXOffset);
|
||||||
|
glUniform1f(polymost1BrightnessLoc, polymost1Brightness);
|
||||||
glUniformMatrix4fv(polymost1RotMatrixLoc, 1, false, polymost1RotMatrix);
|
glUniformMatrix4fv(polymost1RotMatrixLoc, 1, false, polymost1RotMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,6 +678,16 @@ void polymost_npotEmulation(char npotEmulation, float factor, float xOffset)
|
||||||
glUniform1f(polymost1NPOTEmulationXOffsetLoc, polymost1NPOTEmulationXOffset);
|
glUniform1f(polymost1NPOTEmulationXOffsetLoc, polymost1NPOTEmulationXOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void polymost_setBrightness(int brightness)
|
||||||
|
{
|
||||||
|
if (currentShaderProgramID == polymost1CurrentShaderProgramID)
|
||||||
|
{
|
||||||
|
polymost1Brightness = 8.f / (brightness+8.f);
|
||||||
|
glUniform1f(polymost1BrightnessLoc, polymost1Brightness);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void polymost_bindPth(pthtyp const * const pPth, int sampler)
|
static void polymost_bindPth(pthtyp const * const pPth, int sampler)
|
||||||
{
|
{
|
||||||
Bassert(pPth);
|
Bassert(pPth);
|
||||||
|
@ -862,6 +879,7 @@ void polymost_glinit()
|
||||||
uniform float u_npotEmulation;\n\
|
uniform float u_npotEmulation;\n\
|
||||||
uniform float u_npotEmulationFactor;\n\
|
uniform float u_npotEmulationFactor;\n\
|
||||||
uniform float u_npotEmulationXOffset;\n\
|
uniform float u_npotEmulationXOffset;\n\
|
||||||
|
uniform float u_brightness;\n\
|
||||||
\n\
|
\n\
|
||||||
varying vec4 v_color;\n\
|
varying vec4 v_color;\n\
|
||||||
varying float v_distance;\n\
|
varying float v_distance;\n\
|
||||||
|
@ -915,6 +933,8 @@ void polymost_glinit()
|
||||||
\n\
|
\n\
|
||||||
color.a *= v_color.a;\n\
|
color.a *= v_color.a;\n\
|
||||||
\n\
|
\n\
|
||||||
|
color.rgb = pow(color.rgb, vec3(u_brightness));\n\
|
||||||
|
\n\
|
||||||
gl_FragColor = color;\n\
|
gl_FragColor = color;\n\
|
||||||
}\n";
|
}\n";
|
||||||
const char* const POLYMOST1_EXTENDED_FRAGMENT_SHADER_CODE =
|
const char* const POLYMOST1_EXTENDED_FRAGMENT_SHADER_CODE =
|
||||||
|
@ -946,6 +966,7 @@ void polymost_glinit()
|
||||||
uniform float u_npotEmulation;\n\
|
uniform float u_npotEmulation;\n\
|
||||||
uniform float u_npotEmulationFactor;\n\
|
uniform float u_npotEmulationFactor;\n\
|
||||||
uniform float u_npotEmulationXOffset;\n\
|
uniform float u_npotEmulationXOffset;\n\
|
||||||
|
uniform float u_brightness;\n\
|
||||||
\n\
|
\n\
|
||||||
uniform float u_useDetailMapping;\n\
|
uniform float u_useDetailMapping;\n\
|
||||||
uniform float u_useGlowMapping;\n\
|
uniform float u_useGlowMapping;\n\
|
||||||
|
@ -1009,6 +1030,8 @@ void polymost_glinit()
|
||||||
\n\
|
\n\
|
||||||
color.a *= v_color.a;\n\
|
color.a *= v_color.a;\n\
|
||||||
\n\
|
\n\
|
||||||
|
color.rgb = pow(color.rgb, vec3(u_brightness));\n\
|
||||||
|
\n\
|
||||||
gl_FragColor = color;\n\
|
gl_FragColor = color;\n\
|
||||||
}\n";
|
}\n";
|
||||||
|
|
||||||
|
@ -4030,7 +4053,7 @@ static void polymost_drawalls(int32_t const bunch)
|
||||||
int i = (1<<(picsiz[globalpicnum]>>4)); if (i != tilesiz[globalpicnum].y) i += i;
|
int i = (1<<(picsiz[globalpicnum]>>4)); if (i != tilesiz[globalpicnum].y) i += i;
|
||||||
vec3f_t o;
|
vec3f_t o;
|
||||||
|
|
||||||
if ((tilesiz[globalpicnum].y * daptileyscale * (1.f/65536.f)) > 256)
|
if (playing_rr || ((tilesiz[globalpicnum].y * daptileyscale * (1.f/65536.f)) > 256))
|
||||||
{
|
{
|
||||||
//Hack to draw black rectangle below sky when looking down...
|
//Hack to draw black rectangle below sky when looking down...
|
||||||
xtex.d = xtex.u = xtex.v = 0;
|
xtex.d = xtex.u = xtex.v = 0;
|
||||||
|
@ -4090,7 +4113,14 @@ static void polymost_drawalls(int32_t const bunch)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
globalpicnum = dapskyoff[y&((1<<dapskybits)-1)]+i;
|
globalpicnum = dapskyoff[y&((1<<dapskybits)-1)]+i;
|
||||||
otex.u = otex.d*(t*((float)(fglobalang-(y<<(11-dapskybits)))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->floorxpanning:0)) - xtex.u*ghalfx;
|
if (!playing_rr)
|
||||||
|
otex.u = otex.d*(t*((float)(fglobalang-(y<<(11-dapskybits)))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->floorxpanning:0)) - xtex.u*ghalfx;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int32_t picbits = picsiz[globalpicnum]&15;
|
||||||
|
int32_t np2 = tilesiz[globalpicnum].x != (1<<picbits);
|
||||||
|
otex.u = otex.d*(t*((float)(fglobalang-(np2 ? 0 : (y<<(11-dapskybits))))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->floorxpanning:0)) - xtex.u*ghalfx;
|
||||||
|
}
|
||||||
y++;
|
y++;
|
||||||
o.x = fx; fx = ((float)((y<<(11-dapskybits))-fglobalang))*o.z+ghalfx;
|
o.x = fx; fx = ((float)((y<<(11-dapskybits))-fglobalang))*o.z+ghalfx;
|
||||||
if (fx > x1) { fx = x1; i = -1; }
|
if (fx > x1) { fx = x1; i = -1; }
|
||||||
|
@ -4346,7 +4376,7 @@ static void polymost_drawalls(int32_t const bunch)
|
||||||
int i = (1<<(picsiz[globalpicnum]>>4)); if (i != tilesiz[globalpicnum].y) i += i;
|
int i = (1<<(picsiz[globalpicnum]>>4)); if (i != tilesiz[globalpicnum].y) i += i;
|
||||||
vec3f_t o;
|
vec3f_t o;
|
||||||
|
|
||||||
if ((tilesiz[globalpicnum].y * daptileyscale * (1.f/65536.f)) > 256)
|
if (playing_rr || ((tilesiz[globalpicnum].y * daptileyscale * (1.f/65536.f)) > 256))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -4407,7 +4437,14 @@ static void polymost_drawalls(int32_t const bunch)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
globalpicnum = dapskyoff[y&((1<<dapskybits)-1)]+i;
|
globalpicnum = dapskyoff[y&((1<<dapskybits)-1)]+i;
|
||||||
otex.u = otex.d*(t*((float)(fglobalang-(y<<(11-dapskybits)))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->ceilingxpanning:0)) - xtex.u*ghalfx;
|
if (!playing_rr)
|
||||||
|
otex.u = otex.d*(t*((float)(fglobalang-(y<<(11-dapskybits)))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->ceilingxpanning:0)) - xtex.u*ghalfx;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int32_t picbits = picsiz[globalpicnum]&15;
|
||||||
|
int32_t np2 = tilesiz[globalpicnum].x != (1<<picbits);
|
||||||
|
otex.u = otex.d*(t*((float)(fglobalang-(np2 ? 0 : (y<<(11-dapskybits))))) * (1.f/2048.f) + (float)((r_parallaxskypanning)?sec->ceilingxpanning:0)) - xtex.u*ghalfx;
|
||||||
|
}
|
||||||
y++;
|
y++;
|
||||||
o.x = fx; fx = (((float) (y<<(11-dapskybits))-fglobalang))*o.z+ghalfx;
|
o.x = fx; fx = (((float) (y<<(11-dapskybits))-fglobalang))*o.z+ghalfx;
|
||||||
if (fx > x1) { fx = x1; i = -1; }
|
if (fx > x1) { fx = x1; i = -1; }
|
||||||
|
@ -4815,14 +4852,14 @@ static void polymost_drawalls(int32_t const bunch)
|
||||||
static int32_t polymost_bunchfront(const int32_t b1, const int32_t b2)
|
static int32_t polymost_bunchfront(const int32_t b1, const int32_t b2)
|
||||||
{
|
{
|
||||||
int b1f = bunchfirst[b1];
|
int b1f = bunchfirst[b1];
|
||||||
const float x2b2 = dxb2[bunchlast[b2]];
|
const double x2b2 = dxb2[bunchlast[b2]];
|
||||||
const float x1b1 = dxb1[b1f];
|
const double x1b1 = dxb1[b1f];
|
||||||
|
|
||||||
if (nexttowardf(x1b1, x2b2) >= x2b2)
|
if (nexttowardf(x1b1, x2b2) >= x2b2)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int b2f = bunchfirst[b2];
|
int b2f = bunchfirst[b2];
|
||||||
const float x1b2 = dxb1[b2f];
|
const double x1b2 = dxb1[b2f];
|
||||||
|
|
||||||
if (nexttowardf(x1b2, dxb2[bunchlast[b1]]) >= dxb2[bunchlast[b1]])
|
if (nexttowardf(x1b2, dxb2[bunchlast[b1]]) >= dxb2[bunchlast[b1]])
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -5082,6 +5119,8 @@ void polymost_drawrooms()
|
||||||
glDepthFunc(GL_ALWAYS); //NEVER,LESS,(,L)EQUAL,GREATER,(NOT,G)EQUAL,ALWAYS
|
glDepthFunc(GL_ALWAYS); //NEVER,LESS,(,L)EQUAL,GREATER,(NOT,G)EQUAL,ALWAYS
|
||||||
// glDepthRange(0.0, 1.0); //<- this is more widely supported than glPolygonOffset
|
// glDepthRange(0.0, 1.0); //<- this is more widely supported than glPolygonOffset
|
||||||
|
|
||||||
|
polymost_setBrightness(r_brightnesshack);
|
||||||
|
|
||||||
//Polymost supports true look up/down :) Here, we convert horizon to angle.
|
//Polymost supports true look up/down :) Here, we convert horizon to angle.
|
||||||
//gchang&gshang are cos&sin of this angle (respectively)
|
//gchang&gshang are cos&sin of this angle (respectively)
|
||||||
gyxscale = ((float)xdimenscale)*(1.0f/131072.f);
|
gyxscale = ((float)xdimenscale)*(1.0f/131072.f);
|
||||||
|
@ -5404,7 +5443,7 @@ void polymost_drawmaskwall(int32_t damaskwallcnt)
|
||||||
// | /
|
// | /
|
||||||
// fsy1/
|
// fsy1/
|
||||||
|
|
||||||
vec2f_t dpxy[8] = { { x0, csy[1] }, { x1, csy[3] }, { x1, fsy[3] }, { x0, fsy[1] } };
|
vec2f_t dpxy[16] = { { x0, csy[1] }, { x1, csy[3] }, { x1, fsy[3] }, { x0, fsy[1] } };
|
||||||
|
|
||||||
//Clip to (x0,csy[0])-(x1,csy[2])
|
//Clip to (x0,csy[0])-(x1,csy[2])
|
||||||
|
|
||||||
|
|
|
@ -845,6 +845,8 @@ void tileCopySection(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz,
|
||||||
x1++; if (x1 >= xsiz1) x1 = 0;
|
x1++; if (x1 >= xsiz1) x1 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (playing_rr)
|
||||||
|
tileInvalidate(tilenume2, -1, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Buninitart(void)
|
void Buninitart(void)
|
||||||
|
|
Loading…
Reference in a new issue