Fix whitespace issues

git-svn-id: https://svn.eduke32.com/eduke32@6700 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2018-02-26 14:46:36 +00:00
parent dfffa5a9c5
commit 6f7313a46a
6 changed files with 112 additions and 112 deletions

View file

@ -109,19 +109,19 @@ int32_t loadwgl(const char *driver)
initprintf("Failed loading \"%s\"\n", driver); initprintf("Failed loading \"%s\"\n", driver);
return -1; return -1;
} }
gldriver = Bstrdup(driver); gldriver = Bstrdup(driver);
bwglCreateContext = (bwglCreateContextProcPtr) GETPROC("wglCreateContext"); bwglCreateContext = (bwglCreateContextProcPtr) GETPROC("wglCreateContext");
bwglDeleteContext = (bwglDeleteContextProcPtr) GETPROC("wglDeleteContext"); bwglDeleteContext = (bwglDeleteContextProcPtr) GETPROC("wglDeleteContext");
bwglGetProcAddress = (bwglGetProcAddressProcPtr) GETPROC("wglGetProcAddress"); bwglGetProcAddress = (bwglGetProcAddressProcPtr) GETPROC("wglGetProcAddress");
bwglMakeCurrent = (bwglMakeCurrentProcPtr) GETPROC("wglMakeCurrent"); bwglMakeCurrent = (bwglMakeCurrentProcPtr) GETPROC("wglMakeCurrent");
bwglChoosePixelFormat = (bwglChoosePixelFormatProcPtr) GETPROC("wglChoosePixelFormat"); bwglChoosePixelFormat = (bwglChoosePixelFormatProcPtr) GETPROC("wglChoosePixelFormat");
bwglDescribePixelFormat = (bwglDescribePixelFormatProcPtr) GETPROC("wglDescribePixelFormat"); bwglDescribePixelFormat = (bwglDescribePixelFormatProcPtr) GETPROC("wglDescribePixelFormat");
bwglGetPixelFormat = (bwglGetPixelFormatProcPtr) GETPROC("wglGetPixelFormat"); bwglGetPixelFormat = (bwglGetPixelFormatProcPtr) GETPROC("wglGetPixelFormat");
bwglSetPixelFormat = (bwglSetPixelFormatProcPtr) GETPROC("wglSetPixelFormat"); bwglSetPixelFormat = (bwglSetPixelFormatProcPtr) GETPROC("wglSetPixelFormat");
if (err) unloadwgl(); if (err) unloadwgl();
return err; return err;
} }

View file

@ -2584,7 +2584,7 @@ static int32_t polymost_md3draw(md3model_t *m, const uspritetype *tspr)
glLoadIdentity(); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); glLoadIdentity();
polymost_resetVertexPointers(); polymost_resetVertexPointers();
globalnoeffect=0; globalnoeffect=0;

View file

@ -313,33 +313,33 @@ static int32_t gltexcacnum = -1;
static float* multiplyMatrix4f(float m0[4*4], float m1[4*4]) static float* multiplyMatrix4f(float m0[4*4], float m1[4*4])
{ {
float mR[4*4]; float mR[4*4];
#define multMatrix4RowCol(r, c) mR[r*4+c] = m0[r*4]*m1[c] + m0[r*4+1]*m1[c+4] + m0[r*4+2]*m1[c+8] + m0[r*4+3]*m1[c+12] #define multMatrix4RowCol(r, c) mR[r*4+c] = m0[r*4]*m1[c] + m0[r*4+1]*m1[c+4] + m0[r*4+2]*m1[c+8] + m0[r*4+3]*m1[c+12]
multMatrix4RowCol(0, 0); multMatrix4RowCol(0, 0);
multMatrix4RowCol(0, 1); multMatrix4RowCol(0, 1);
multMatrix4RowCol(0, 2); multMatrix4RowCol(0, 2);
multMatrix4RowCol(0, 3); multMatrix4RowCol(0, 3);
multMatrix4RowCol(1, 0); multMatrix4RowCol(1, 0);
multMatrix4RowCol(1, 1); multMatrix4RowCol(1, 1);
multMatrix4RowCol(1, 2); multMatrix4RowCol(1, 2);
multMatrix4RowCol(1, 3); multMatrix4RowCol(1, 3);
multMatrix4RowCol(2, 0); multMatrix4RowCol(2, 0);
multMatrix4RowCol(2, 1); multMatrix4RowCol(2, 1);
multMatrix4RowCol(2, 2); multMatrix4RowCol(2, 2);
multMatrix4RowCol(2, 3); multMatrix4RowCol(2, 3);
multMatrix4RowCol(3, 0); multMatrix4RowCol(3, 0);
multMatrix4RowCol(3, 1); multMatrix4RowCol(3, 1);
multMatrix4RowCol(3, 2); multMatrix4RowCol(3, 2);
multMatrix4RowCol(3, 3); multMatrix4RowCol(3, 3);
Bmemcpy(m0, mR, sizeof(float)*4*4); Bmemcpy(m0, mR, sizeof(float)*4*4);
return m0; return m0;
#undef multMatrix4RowCol #undef multMatrix4RowCol
} }
@ -377,18 +377,18 @@ static GLuint polymost2_compileShader(GLenum shaderType, const char* const sourc
{ {
return 0; return 0;
} }
const char* const sources[1] = {source}; const char* const sources[1] = {source};
glShaderSource(shaderID, glShaderSource(shaderID,
1, 1,
sources, sources,
NULL); NULL);
glCompileShader(shaderID); glCompileShader(shaderID);
GLint compileStatus; GLint compileStatus;
glGetShaderiv(shaderID, GL_COMPILE_STATUS, &compileStatus); glGetShaderiv(shaderID, GL_COMPILE_STATUS, &compileStatus);
OSD_Printf("Compile Status: %u\n", compileStatus); OSD_Printf("Compile Status: %u\n", compileStatus);
if (!compileStatus) if (!compileStatus)
{ {
GLint logLength; GLint logLength;
@ -401,7 +401,7 @@ static GLuint polymost2_compileShader(GLenum shaderType, const char* const sourc
free(infoLog); free(infoLog);
} }
} }
return shaderID; return shaderID;
} }
@ -477,10 +477,10 @@ void polymost_resetVertexPointers()
{ {
glBindBuffer(GL_ARRAY_BUFFER, drawpolyVertsID); glBindBuffer(GL_ARRAY_BUFFER, drawpolyVertsID);
glBindBuffer(GL_TEXTURE_COORD_ARRAY, drawpolyVertsID); glBindBuffer(GL_TEXTURE_COORD_ARRAY, drawpolyVertsID);
glVertexPointer(3, GL_FLOAT, 5*sizeof(float), 0); glVertexPointer(3, GL_FLOAT, 5*sizeof(float), 0);
glTexCoordPointer(2, GL_FLOAT, 5*sizeof(float), (GLvoid*) (3*sizeof(float))); glTexCoordPointer(2, GL_FLOAT, 5*sizeof(float), (GLvoid*) (3*sizeof(float)));
#ifdef USE_GLEXT #ifdef USE_GLEXT
if (r_detailmapping) if (r_detailmapping)
{ {
@ -508,7 +508,7 @@ void polymost_glinit()
//glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); //glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
//glEnable(GL_LINE_SMOOTH); //glEnable(GL_LINE_SMOOTH);
#ifdef USE_GLEXT #ifdef USE_GLEXT
if (glmultisample > 0 && glinfo.multisample) if (glmultisample > 0 && glinfo.multisample)
{ {
@ -531,20 +531,20 @@ void polymost_glinit()
r_glowmapping = 0; r_glowmapping = 0;
} }
} }
if (persistentStreamBuffer && ((!glinfo.bufferstorage) || (!glinfo.sync))) if (persistentStreamBuffer && ((!glinfo.bufferstorage) || (!glinfo.sync)))
{ {
OSD_Printf("Your OpenGL implementation doesn't support the required extensions for persistent stream buffers. Disabling...\n"); OSD_Printf("Your OpenGL implementation doesn't support the required extensions for persistent stream buffers. Disabling...\n");
r_persistentStreamBuffer = 0; r_persistentStreamBuffer = 0;
} }
#endif #endif
persistentStreamBuffer = r_persistentStreamBuffer; persistentStreamBuffer = r_persistentStreamBuffer;
drawpolyVertsBufferLength = r_drawpolyVertsBufferLength; drawpolyVertsBufferLength = r_drawpolyVertsBufferLength;
drawpolyVertsOffset = 0; drawpolyVertsOffset = 0;
drawpolyVertsSubBufferIndex = 0; drawpolyVertsSubBufferIndex = 0;
GLuint ids[2]; GLuint ids[2];
glGenBuffers(2, ids); glGenBuffers(2, ids);
drawpolyVertsID = ids[0]; drawpolyVertsID = ids[0];
@ -553,7 +553,7 @@ void polymost_glinit()
{ {
// reset the sync objects, as old ones we had from any last GL context are gone now // reset the sync objects, as old ones we had from any last GL context are gone now
Bmemset(drawpolyVertsSync, 0, sizeof(drawpolyVertsSync)); Bmemset(drawpolyVertsSync, 0, sizeof(drawpolyVertsSync));
GLbitfield flags = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT; GLbitfield flags = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT;
// we want to triple-buffer to avoid having to wait for the buffer to become available again, // we want to triple-buffer to avoid having to wait for the buffer to become available again,
// so triple the buffer size we expect to use // so triple the buffer size we expect to use
@ -565,7 +565,7 @@ void polymost_glinit()
glBufferData(GL_ARRAY_BUFFER, drawpolyVertsBufferLength*sizeof(float)*5, NULL, GL_STREAM_DRAW); glBufferData(GL_ARRAY_BUFFER, drawpolyVertsBufferLength*sizeof(float)*5, NULL, GL_STREAM_DRAW);
} }
glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0);
const char blankTex[] = {0, 0, 0, 0, 0, 0, 0, 0, const char blankTex[] = {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0}; 0, 0, 0, 0, 0, 0, 0, 0};
glGenTextures(1, &blankTextureID); glGenTextures(1, &blankTextureID);
@ -573,10 +573,10 @@ void polymost_glinit()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, blankTex); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, blankTex);
quadVertsID = ids[1]; quadVertsID = ids[1];
glBindBuffer(GL_ARRAY_BUFFER, quadVertsID); glBindBuffer(GL_ARRAY_BUFFER, quadVertsID);
const float quadVerts[] = const float quadVerts[] =
{ {
-0.5f, 1.0f, 0.0f, 0.0f, 1.0f, //top-left -0.5f, 1.0f, 0.0f, 0.0f, 1.0f, //top-left
-0.5f, 0.0f, 0.0f, 0.0f, 0.0f, //bottom-left -0.5f, 0.0f, 0.0f, 0.0f, 0.0f, //bottom-left
@ -584,15 +584,15 @@ void polymost_glinit()
0.5f, 0.0f, 0.0f, 1.0f, 0.0f //bottom-right 0.5f, 0.0f, 0.0f, 1.0f, 0.0f //bottom-right
}; };
glBufferData(GL_ARRAY_BUFFER, sizeof(quadVerts), quadVerts, GL_STATIC_DRAW); glBufferData(GL_ARRAY_BUFFER, sizeof(quadVerts), quadVerts, GL_STATIC_DRAW);
//specify format/arrangement for vertex positions: //specify format/arrangement for vertex positions:
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(float) * 5, 0); glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(float) * 5, 0);
//specify format/arrangement for vertex texture coords: //specify format/arrangement for vertex texture coords:
glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(float) * 5, (const void*) (sizeof(float) * 3)); glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(float) * 5, (const void*) (sizeof(float) * 3));
glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0);
const char* const BASIC_VERTEX_SHADER_CODE = const char* const BASIC_VERTEX_SHADER_CODE =
"#version 110\n\ "#version 110\n\
\n\ \n\
// input\n\ // input\n\
@ -617,7 +617,7 @@ void polymost_glinit()
v_texCoord = i_texCoord * u_texScale + u_texOffset;\n\ v_texCoord = i_texCoord * u_texScale + u_texOffset;\n\
v_distance = eyeCoordPosition.z;\n\ v_distance = eyeCoordPosition.z;\n\
}\n"; }\n";
const char* const BASIC_FRAGMENT_SHADER_CODE = const char* const BASIC_FRAGMENT_SHADER_CODE =
"#version 110\n\ "#version 110\n\
\n\ \n\
varying vec2 v_texCoord;\n\ varying vec2 v_texCoord;\n\
@ -649,7 +649,7 @@ void polymost_glinit()
\n\ \n\
gl_FragColor = color;\n\ gl_FragColor = color;\n\
}\n"; }\n";
shaderProgramID = glCreateProgram(); shaderProgramID = glCreateProgram();
GLuint basicVertexShaderID = polymost2_compileShader(GL_VERTEX_SHADER, BASIC_VERTEX_SHADER_CODE); GLuint basicVertexShaderID = polymost2_compileShader(GL_VERTEX_SHADER, BASIC_VERTEX_SHADER_CODE);
GLuint basicFragmentShaderID = polymost2_compileShader(GL_FRAGMENT_SHADER, BASIC_FRAGMENT_SHADER_CODE); GLuint basicFragmentShaderID = polymost2_compileShader(GL_FRAGMENT_SHADER, BASIC_FRAGMENT_SHADER_CODE);
@ -658,7 +658,7 @@ void polymost_glinit()
glAttachShader(shaderProgramID, basicVertexShaderID); glAttachShader(shaderProgramID, basicVertexShaderID);
glAttachShader(shaderProgramID, basicFragmentShaderID); glAttachShader(shaderProgramID, basicFragmentShaderID);
glLinkProgram(shaderProgramID); glLinkProgram(shaderProgramID);
// Get the attribute/uniform locations // Get the attribute/uniform locations
texSamplerLoc = glGetUniformLocation(shaderProgramID, "s_texture"); texSamplerLoc = glGetUniformLocation(shaderProgramID, "s_texture");
fullBrightSamplerLoc = glGetUniformLocation(shaderProgramID, "s_fullBright"); fullBrightSamplerLoc = glGetUniformLocation(shaderProgramID, "s_fullBright");
@ -673,7 +673,7 @@ void polymost_glinit()
glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY);
polymost_resetVertexPointers(); polymost_resetVertexPointers();
texcache_init(); texcache_init();
@ -773,11 +773,11 @@ static inline void fogcalc(int32_t tile, int32_t shade, int32_t vis, int32_t pal
void polymost2_calc_fog(int32_t shade, int32_t vis, int32_t pal) void polymost2_calc_fog(int32_t shade, int32_t vis, int32_t pal)
{ {
if (nofog) return; if (nofog) return;
fogresult = 0.f; fogresult = 0.f;
fogresult2 = -GL_FOG_MAX; // hide fog behind the camera fogresult2 = -GL_FOG_MAX; // hide fog behind the camera
fogcol = fogtable[pal]; fogcol = fogtable[pal];
if (((uint8_t)(vis + 16)) > 0 && g_visibility > 0) if (((uint8_t)(vis + 16)) > 0 && g_visibility > 0)
{ {
GLfloat glfogconstant = 262144.f; GLfloat glfogconstant = 262144.f;
@ -1256,7 +1256,7 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
miplevel = r_downsize; miplevel = r_downsize;
// don't use mipmaps if mipmapping is disabled // don't use mipmaps if mipmapping is disabled
//POGO: until the texcacheheader can be updated, generate the mipmaps texcache expects if it's enabled //POGO: until the texcacheheader can be updated, generate the mipmaps texcache expects if it's enabled
if (!glusetexcache && if (!glusetexcache &&
(glfiltermodes[gltexfiltermode].min == GL_NEAREST || (glfiltermodes[gltexfiltermode].min == GL_NEAREST ||
glfiltermodes[gltexfiltermode].min == GL_LINEAR)) glfiltermodes[gltexfiltermode].min == GL_LINEAR))
@ -1264,7 +1264,7 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
} }
if (!miplevel) if (!miplevel)
Polymost_SendTexToDriver(doalloc, siz, texfmt, pic, Polymost_SendTexToDriver(doalloc, siz, texfmt, pic,
intexfmt, intexfmt,
@ -1273,7 +1273,7 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
texcompress_ok, texcompress_ok,
#endif #endif
0); 0);
// don't generate mipmaps if we're not going to use them // don't generate mipmaps if we're not going to use them
if (!glusetexcache && if (!glusetexcache &&
(glfiltermodes[gltexfiltermode].min == GL_NEAREST || (glfiltermodes[gltexfiltermode].min == GL_NEAREST ||
@ -1542,7 +1542,7 @@ void gloadtile_art(int32_t dapic, int32_t dapal, int32_t tintpalnum, int32_t das
break; break;
} }
} }
//swap r & b so that we deal with the data as BGRA //swap r & b so that we deal with the data as BGRA
uint8_t tmpR = wpptr->r; uint8_t tmpR = wpptr->r;
wpptr->r = wpptr->b; wpptr->r = wpptr->b;
@ -1975,10 +1975,10 @@ void polymost_setupdetailtexture(const int32_t texunits, const int32_t tex)
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 2.0f); glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 2.0f);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glClientActiveTexture(texunits); glClientActiveTexture(texunits);
glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY);
} }
@ -2005,10 +2005,10 @@ void polymost_setupglowtexture(const int32_t texunits, const int32_t tex)
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_PREVIOUS); glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_PREVIOUS);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glClientActiveTexture(texunits); glClientActiveTexture(texunits);
glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY);
} }
@ -2053,10 +2053,10 @@ static void polymost2_drawVBO(GLenum mode,
{ {
return; return;
} }
glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);
if (cullFaces) if (cullFaces)
{ {
glEnable(GL_CULL_FACE); glEnable(GL_CULL_FACE);
@ -2069,26 +2069,26 @@ static void polymost2_drawVBO(GLenum mode,
{ {
glCullFace(GL_FRONT); glCullFace(GL_FRONT);
} }
//POGOTODO: in the future, state changes like binding these buffers can be batched. For now, just switch on every VBO rendered //POGOTODO: in the future, state changes like binding these buffers can be batched. For now, just switch on every VBO rendered
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID); glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferID); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferID);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1); glEnableVertexAttribArray(1);
if (palookup[globalpal] == NULL) if (palookup[globalpal] == NULL)
{ {
globalpal = 0; globalpal = 0;
} }
//Load texture (globalpicnum) //Load texture (globalpicnum)
setgotpic(globalpicnum); setgotpic(globalpicnum);
if (!waloff[globalpicnum]) if (!waloff[globalpicnum])
{ {
loadtile(globalpicnum); loadtile(globalpicnum);
} }
pthtyp *pth = our_texcache_fetch(dameth); pthtyp *pth = our_texcache_fetch(dameth);
if (!pth) if (!pth)
@ -2100,20 +2100,20 @@ static void polymost2_drawVBO(GLenum mode,
} }
return; return;
} }
glActiveTexture(GL_TEXTURE1); glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, (pth && pth->flags & PTH_HASFULLBRIGHT && r_fullbrights) ? pth->ofb->glpic : blankTextureID); glBindTexture(GL_TEXTURE_2D, (pth && pth->flags & PTH_HASFULLBRIGHT && r_fullbrights) ? pth->ofb->glpic : blankTextureID);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : blankTextureID); glBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : blankTextureID);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
//POGOTODO: handle tinting & shading completely with fragment shader //POGOTODO: handle tinting & shading completely with fragment shader
//POGOTODO: handle fullbright & glow completely with fragment shader //POGOTODO: handle fullbright & glow completely with fragment shader
//POGOTODO: glAlphaFunc is deprecated, move this into the fragment shader //POGOTODO: glAlphaFunc is deprecated, move this into the fragment shader
float const al = waloff[globalpicnum] ? alphahackarray[globalpicnum] != 0 ? alphahackarray[globalpicnum] * (1.f/255.f): float const al = waloff[globalpicnum] ? alphahackarray[globalpicnum] != 0 ? alphahackarray[globalpicnum] * (1.f/255.f):
(pth && pth->hicr && pth->hicr->alphacut >= 0.f ? pth->hicr->alphacut : 0.f) : 0.f; (pth && pth->hicr && pth->hicr->alphacut >= 0.f ? pth->hicr->alphacut : 0.f) : 0.f;
@ -2121,11 +2121,11 @@ static void polymost2_drawVBO(GLenum mode,
//POGOTODO: batch this, only apply it to sprites that actually need blending //POGOTODO: batch this, only apply it to sprites that actually need blending
glEnable(GL_BLEND); glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST); glEnable(GL_ALPHA_TEST);
handle_blend((dameth & DAMETH_MASKPROPS) > DAMETH_MASK, drawpoly_blend, (dameth & DAMETH_MASKPROPS) == DAMETH_TRANS2); handle_blend((dameth & DAMETH_MASKPROPS) > DAMETH_MASK, drawpoly_blend, (dameth & DAMETH_MASKPROPS) == DAMETH_TRANS2);
glUseProgram(shaderProgramID); glUseProgram(shaderProgramID);
//POGOTODO: batch uniform binding //POGOTODO: batch uniform binding
float tint[4] = {1.0f, 1.0f, 1.0f, 1.0f}; float tint[4] = {1.0f, 1.0f, 1.0f, 1.0f};
polytint_t const & polytint = hictinting[globalpal]; polytint_t const & polytint = hictinting[globalpal];
@ -2156,7 +2156,7 @@ static void polymost2_drawVBO(GLenum mode,
if ((pth->flags & PTH_HIGHTILE) && have_basepal_tint()) if ((pth->flags & PTH_HIGHTILE) && have_basepal_tint())
hictinting_apply(tint, MAXPALOOKUPS-1); hictinting_apply(tint, MAXPALOOKUPS-1);
} }
glUniformMatrix4fv(projMatrixLoc, 1, false, projectionMatrix); glUniformMatrix4fv(projMatrixLoc, 1, false, projectionMatrix);
glUniformMatrix4fv(mvMatrixLoc, 1, false, modelViewMatrix); glUniformMatrix4fv(mvMatrixLoc, 1, false, modelViewMatrix);
glUniform1i(texSamplerLoc, 0); glUniform1i(texSamplerLoc, 0);
@ -2168,7 +2168,7 @@ static void polymost2_drawVBO(GLenum mode,
const float fogRange[2] = {fogresult, fogresult2}; const float fogRange[2] = {fogresult, fogresult2};
glUniform2fv(fogRangeLoc, 1, fogRange); glUniform2fv(fogRangeLoc, 1, fogRange);
glUniform4fv(fogColorLoc, 1, (GLfloat*) &fogcol); glUniform4fv(fogColorLoc, 1, (GLfloat*) &fogcol);
if (indexBufferID == 0) if (indexBufferID == 0)
{ {
glDrawArrays(mode, glDrawArrays(mode,
@ -2181,21 +2181,21 @@ static void polymost2_drawVBO(GLenum mode,
GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT,
0); 0);
} }
glUseProgram(0); glUseProgram(0);
glDisableVertexAttribArray(0); glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1); glDisableVertexAttribArray(1);
//POGOTODO: again, these state changes should be batched in the future, rather than on each VBO rendered //POGOTODO: again, these state changes should be batched in the future, rather than on each VBO rendered
glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisable(GL_CULL_FACE); glDisable(GL_CULL_FACE);
glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY);
polymost_resetVertexPointers(); polymost_resetVertexPointers();
} }
@ -2205,7 +2205,7 @@ static void polymost_lockSubBuffer(uint32_t subBufferIndex)
{ {
glDeleteSync(drawpolyVertsSync[subBufferIndex]); glDeleteSync(drawpolyVertsSync[subBufferIndex]);
} }
drawpolyVertsSync[subBufferIndex] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); drawpolyVertsSync[subBufferIndex] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
} }
@ -2221,10 +2221,10 @@ static void polymost_waitForSubBuffer(uint32_t subBufferIndex)
if (waitResult == GL_ALREADY_SIGNALED || if (waitResult == GL_ALREADY_SIGNALED ||
waitResult == GL_CONDITION_SATISFIED) waitResult == GL_CONDITION_SATISFIED)
{ {
return; return;
} }
static char loggedLongWait = false; static char loggedLongWait = false;
if (waitResult == GL_TIMEOUT_EXPIRED && if (waitResult == GL_TIMEOUT_EXPIRED &&
!loggedLongWait) !loggedLongWait)
@ -2244,7 +2244,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
#endif #endif
(uint32_t)globalpicnum >= MAXTILES) (uint32_t)globalpicnum >= MAXTILES)
return; return;
const int32_t method_ = method; const int32_t method_ = method;
if (n == 3) if (n == 3)
@ -2433,7 +2433,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
glAlphaFunc(GL_GREATER, al); glAlphaFunc(GL_GREATER, al);
handle_blend((method & DAMETH_MASKPROPS) > DAMETH_MASK, drawpoly_blend, (method & DAMETH_MASKPROPS) == DAMETH_TRANS2); handle_blend((method & DAMETH_MASKPROPS) > DAMETH_MASK, drawpoly_blend, (method & DAMETH_MASKPROPS) == DAMETH_TRANS2);
glEnable(GL_BLEND); glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST); glEnable(GL_ALPHA_TEST);
} }
@ -2476,7 +2476,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
globaltinting_apply(pc); globaltinting_apply(pc);
} }
glColor4f(pc[0], pc[1], pc[2], pc[3]); glColor4f(pc[0], pc[1], pc[2], pc[3]);
//Hack for walls&masked walls which use textures that are not a power of 2 //Hack for walls&masked walls which use textures that are not a power of 2
@ -2617,7 +2617,7 @@ do
drawpolyVerts[(off+i)*5] = (o.x - ghalfx) * r * grhalfxdown10x; drawpolyVerts[(off+i)*5] = (o.x - ghalfx) * r * grhalfxdown10x;
drawpolyVerts[(off+i)*5+1] = (ghoriz - o.y) * r * grhalfxdown10; drawpolyVerts[(off+i)*5+1] = (ghoriz - o.y) * r * grhalfxdown10;
drawpolyVerts[(off+i)*5+2] = r * (1.f / 1024.f); drawpolyVerts[(off+i)*5+2] = r * (1.f / 1024.f);
//update texcoords //update texcoords
drawpolyVerts[(off+i)*5+3] = (p.u * r - du0 + uoffs) * invtsiz2.x; drawpolyVerts[(off+i)*5+3] = (p.u * r - du0 + uoffs) * invtsiz2.x;
drawpolyVerts[(off+i)*5+4] = p.v * r * invtsiz2.y; drawpolyVerts[(off+i)*5+4] = p.v * r * invtsiz2.y;
@ -2650,7 +2650,7 @@ do
drawpolyVertsOffset = 0; drawpolyVertsOffset = 0;
} }
} }
vec2f_t const scale = { 1.f / tsiz2.x * hacksc.x, 1.f / tsiz2.y * hacksc.y }; vec2f_t const scale = { 1.f / tsiz2.x * hacksc.x, 1.f / tsiz2.y * hacksc.y };
uint32_t off = persistentStreamBuffer ? drawpolyVertsOffset : 0; uint32_t off = persistentStreamBuffer ? drawpolyVertsOffset : 0;
for (bssize_t i = 0; i < npoints; ++i) for (bssize_t i = 0; i < npoints; ++i)
@ -2661,7 +2661,7 @@ do
drawpolyVerts[(off+i)*5] = (px[i] - ghalfx) * r * grhalfxdown10x; drawpolyVerts[(off+i)*5] = (px[i] - ghalfx) * r * grhalfxdown10x;
drawpolyVerts[(off+i)*5+1] = (ghoriz - py[i]) * r * grhalfxdown10; drawpolyVerts[(off+i)*5+1] = (ghoriz - py[i]) * r * grhalfxdown10;
drawpolyVerts[(off+i)*5+2] = r * (1.f / 1024.f); drawpolyVerts[(off+i)*5+2] = r * (1.f / 1024.f);
//update texcoords //update texcoords
drawpolyVerts[(off+i)*5+3] = uu[i] * r * scale.x; drawpolyVerts[(off+i)*5+3] = uu[i] * r * scale.x;
drawpolyVerts[(off+i)*5+4] = vv[i] * r * scale.y; drawpolyVerts[(off+i)*5+4] = vv[i] * r * scale.y;
@ -2682,10 +2682,10 @@ do
glMatrixMode(GL_TEXTURE); glMatrixMode(GL_TEXTURE);
glLoadIdentity(); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glClientActiveTexture(texunits); glClientActiveTexture(texunits);
glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 1.0f); glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 1.0f);
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
@ -5130,7 +5130,7 @@ void polymost2_drawsprite(int32_t snum)
break; break;
} }
//POGO: some comments seem to indicate that spinning sprites were intended to be supported before the //POGO: some comments seem to indicate that spinning sprites were intended to be supported before the
// decision was made to implement that behaviour with voxels. // decision was made to implement that behaviour with voxels.
// Skip SPIN aligned sprites when not rendering as voxels. // Skip SPIN aligned sprites when not rendering as voxels.
@ -5165,7 +5165,7 @@ void polymost2_drawsprite(int32_t snum)
return; return;
vec2f_t const ftsiz = { (float) tsiz.x, (float) tsiz.y }; vec2f_t const ftsiz = { (float) tsiz.x, (float) tsiz.y };
//POGOTODO: some of these cases where we return could be done further up in order to skip doing throw away computation //POGOTODO: some of these cases where we return could be done further up in order to skip doing throw away computation
if ((globalorientation & CSTAT_SPRITE_ALIGNMENT_FLOOR) && if ((globalorientation & CSTAT_SPRITE_ALIGNMENT_FLOOR) &&
(globalorientation & CSTAT_SPRITE_ONE_SIDED) != 0 && (globalorientation & CSTAT_SPRITE_ONE_SIDED) != 0 &&
@ -5173,16 +5173,16 @@ void polymost2_drawsprite(int32_t snum)
{ {
return; return;
} }
//POGOTODO: in polymost1 any sprites that are too close are pre-clipped here before any calculation //POGOTODO: in polymost1 any sprites that are too close are pre-clipped here before any calculation
tilesiz[globalpicnum].x = tsiz.x; tilesiz[globalpicnum].x = tsiz.x;
tilesiz[globalpicnum].y = tsiz.y; tilesiz[globalpicnum].y = tsiz.y;
float texScale[2] = {1.0f, -1.0f}; float texScale[2] = {1.0f, -1.0f};
float texOffset[2] = {((float) (spriteext[spritenum].xpanning) * (1.0f / 255.f)), float texOffset[2] = {((float) (spriteext[spritenum].xpanning) * (1.0f / 255.f)),
((float) (spriteext[spritenum].ypanning) * (1.0f / 255.f))}; ((float) (spriteext[spritenum].ypanning) * (1.0f / 255.f))};
float transformMatrix[4*4] = float transformMatrix[4*4] =
{ {
1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
@ -5190,7 +5190,7 @@ void polymost2_drawsprite(int32_t snum)
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f 0.0f, 0.0f, 0.0f, 1.0f
}; };
float modelViewMatrix[4*4] = float modelViewMatrix[4*4] =
{ {
1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
@ -5198,16 +5198,16 @@ void polymost2_drawsprite(int32_t snum)
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f 0.0f, 0.0f, 0.0f, 1.0f
}; };
float f = (65536.f*512.f) / (fxdimen*viewingrange); float f = (65536.f*512.f) / (fxdimen*viewingrange);
float g = 32.f / (fxdimen*gxyaspect); float g = 32.f / (fxdimen*gxyaspect);
float horzScale = ftsiz.x*(1.f/64.f); float horzScale = ftsiz.x*(1.f/64.f);
float vertScale = ftsiz.y*(1.f/64.f); float vertScale = ftsiz.y*(1.f/64.f);
horzScale *= ((float)tspr->xrepeat) * (1.f/64.f); horzScale *= ((float)tspr->xrepeat) * (1.f/64.f);
vertScale *= ((float)tspr->yrepeat) * (1.f/64.f); vertScale *= ((float)tspr->yrepeat) * (1.f/64.f);
if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FACING) if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FACING)
{ {
horzScale *= 256.f/320.f; horzScale *= 256.f/320.f;
@ -5224,16 +5224,16 @@ void polymost2_drawsprite(int32_t snum)
horzScale *= -2.f*((globalorientation & CSTAT_SPRITE_XFLIP) != 0) + 1.f; horzScale *= -2.f*((globalorientation & CSTAT_SPRITE_XFLIP) != 0) + 1.f;
vertScale *= -2.f*(((globalorientation & CSTAT_SPRITE_ALIGNMENT) != CSTAT_SPRITE_ALIGNMENT_FLOOR) & vertScale *= -2.f*(((globalorientation & CSTAT_SPRITE_ALIGNMENT) != CSTAT_SPRITE_ALIGNMENT_FLOOR) &
((globalorientation & CSTAT_SPRITE_YFLIP) != 0)) + 1.f; ((globalorientation & CSTAT_SPRITE_YFLIP) != 0)) + 1.f;
//POGOTODO: replace this with simply using off.x and a different float for z offsets //POGOTODO: replace this with simply using off.x and a different float for z offsets
// switching that over should fix floor sprite offsets so that they flip properly when yflip/xflip is applied // switching that over should fix floor sprite offsets so that they flip properly when yflip/xflip is applied
//handle orientation offsets //handle orientation offsets
vec2f_t orientationOffset = {0.f, 0.f}; vec2f_t orientationOffset = {0.f, 0.f};
vec3f_t offs = { 0.f, 0.f, 0.f }; vec3f_t offs = { 0.f, 0.f, 0.f };
off.x = 0.2f * ((float)tspr->xrepeat) * (((float) off.x) + (tsiz.x & 1)*0.5f*(((globalorientation & CSTAT_SPRITE_XFLIP) == 0)*-2.f + 1.f)); off.x = 0.2f * ((float)tspr->xrepeat) * (((float) off.x) + (tsiz.x & 1)*0.5f*(((globalorientation & CSTAT_SPRITE_XFLIP) == 0)*-2.f + 1.f));
off.y = 4.f * ((float)tspr->yrepeat) * (((float) off.y) + (((globalorientation & CSTAT_SPRITE_YCENTER) != 0) & tsiz.y & 1)*0.5f); off.y = 4.f * ((float)tspr->yrepeat) * (((float) off.y) + (((globalorientation & CSTAT_SPRITE_YCENTER) != 0) & tsiz.y & 1)*0.5f);
int16_t angle = globalang; int16_t angle = globalang;
float combinedClipScale = 1.f; float combinedClipScale = 1.f;
if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FACING) if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FACING)
@ -5249,7 +5249,7 @@ void polymost2_drawsprite(int32_t snum)
/*float const foffs = TSPR_OFFSET(tspr); /*float const foffs = TSPR_OFFSET(tspr);
offs = { (float) (sintable[(tspr->ang + 512) & 2047] >> 6) * foffs, offs = { (float) (sintable[(tspr->ang + 512) & 2047] >> 6) * foffs,
(float) (sintable[(tspr->ang) & 2047] >> 6) * foffs};*/ (float) (sintable[(tspr->ang) & 2047] >> 6) * foffs};*/
//POGOTODO: For now, just handle this exactly the same way as in polymost1. //POGOTODO: For now, just handle this exactly the same way as in polymost1.
// Eventually, I should change how all sprites avoid z-fighting by offsetting the z-buffer depth // Eventually, I should change how all sprites avoid z-fighting by offsetting the z-buffer depth
// rather than offsetting the entire object in space. // rather than offsetting the entire object in space.
@ -5258,7 +5258,7 @@ void polymost2_drawsprite(int32_t snum)
//POGOTODO: this needs to be calculated before I make my adjustments to off.x above! //POGOTODO: this needs to be calculated before I make my adjustments to off.x above!
float f = (float)(tsiz.x >> 1) + (float)off.x; float f = (float)(tsiz.x >> 1) + (float)off.x;
vec2f_t const vf = { extent.x * f, extent.y * f }; vec2f_t const vf = { extent.x * f, extent.y * f };
int32_t const s = tspr->owner; int32_t const s = tspr->owner;
int32_t walldist = 1; int32_t walldist = 1;
int32_t w = (s == -1) ? -1 : wsprinfo[s].wall; int32_t w = (s == -1) ? -1 : wsprinfo[s].wall;
@ -5303,7 +5303,7 @@ void polymost2_drawsprite(int32_t snum)
0.f}; 0.f};
} }
} }
//POGO: for full compatibility, facing sprites should also clip similarly (see polymost_drawsprite()) //POGO: for full compatibility, facing sprites should also clip similarly (see polymost_drawsprite())
// Clip sprites to ceilings/floors when no parallaxing // Clip sprites to ceilings/floors when no parallaxing
float fullCenterYOff = off.y + (((globalorientation & CSTAT_SPRITE_YCENTER) != 0) * 2.f) float fullCenterYOff = off.y + (((globalorientation & CSTAT_SPRITE_YCENTER) != 0) * 2.f)
@ -5317,7 +5317,7 @@ void polymost2_drawsprite(int32_t snum)
//don't draw sprites fully clipped by the ceiling //don't draw sprites fully clipped by the ceiling
return; return;
} }
texScale[1] *= clipScale; texScale[1] *= clipScale;
texOffset[1] += (1.f-clipScale)*(-1.f*((globalorientation & CSTAT_SPRITE_YFLIP) == CSTAT_SPRITE_YFLIP)); texOffset[1] += (1.f-clipScale)*(-1.f*((globalorientation & CSTAT_SPRITE_YFLIP) == CSTAT_SPRITE_YFLIP));
vertScale *= clipScale; vertScale *= clipScale;
@ -5333,7 +5333,7 @@ void polymost2_drawsprite(int32_t snum)
//don't draw sprites fully clipped by the floor //don't draw sprites fully clipped by the floor
return; return;
} }
texScale[1] *= clipScale; texScale[1] *= clipScale;
texOffset[1] += (1.f-clipScale)*(-1.f*((globalorientation & CSTAT_SPRITE_YFLIP) != CSTAT_SPRITE_YFLIP)); texOffset[1] += (1.f-clipScale)*(-1.f*((globalorientation & CSTAT_SPRITE_YFLIP) != CSTAT_SPRITE_YFLIP));
vertScale *= clipScale; vertScale *= clipScale;
@ -5345,23 +5345,23 @@ void polymost2_drawsprite(int32_t snum)
combinedClipScale = 1.f; combinedClipScale = 1.f;
} }
} }
off.x *= ((float) ((globalorientation & CSTAT_SPRITE_XFLIP) != 0))*-2.f + 1.f; off.x *= ((float) ((globalorientation & CSTAT_SPRITE_XFLIP) != 0))*-2.f + 1.f;
off.y *= ((float) (((globalorientation & CSTAT_SPRITE_ALIGNMENT) != CSTAT_SPRITE_ALIGNMENT_FACING) & off.y *= ((float) (((globalorientation & CSTAT_SPRITE_ALIGNMENT) != CSTAT_SPRITE_ALIGNMENT_FACING) &
((globalorientation & CSTAT_SPRITE_YFLIP) != 0)))*-2.f + 1.f; ((globalorientation & CSTAT_SPRITE_YFLIP) != 0)))*-2.f + 1.f;
if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FLOOR) if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FLOOR)
{ {
vertScale = -vertScale; vertScale = -vertScale;
orientationOffset.x += ftsiz.y*((float) tspr->yrepeat)*(1.f/8.f); orientationOffset.x += ftsiz.y*((float) tspr->yrepeat)*(1.f/8.f);
// unfortunately, offsetting by only 1 isn't enough on most Android devices // unfortunately, offsetting by only 1 isn't enough on most Android devices
if (tspr->z == sec->ceilingz || tspr->z == sec->ceilingz + 1) if (tspr->z == sec->ceilingz || tspr->z == sec->ceilingz + 1)
tspr->z = sec->ceilingz + 2, orientationOffset.y += (tspr->owner & 31); tspr->z = sec->ceilingz + 2, orientationOffset.y += (tspr->owner & 31);
if (tspr->z == sec->floorz || tspr->z == sec->floorz - 1) if (tspr->z == sec->floorz || tspr->z == sec->floorz - 1)
tspr->z = sec->floorz - 2, orientationOffset.y -= ((tspr->owner & 31)); tspr->z = sec->floorz - 2, orientationOffset.y -= ((tspr->owner & 31));
angle = tspr->ang; angle = tspr->ang;
} else } else
{ {
@ -5369,7 +5369,7 @@ void polymost2_drawsprite(int32_t snum)
((globalorientation & CSTAT_SPRITE_YFLIP) != 0)*-4.f) ((globalorientation & CSTAT_SPRITE_YFLIP) != 0)*-4.f)
* combinedClipScale * ftsiz.y * ((float)tspr->yrepeat); * combinedClipScale * ftsiz.y * ((float)tspr->yrepeat);
} }
vec3f_t a0; vec3f_t a0;
a0.x = ((float)(pos.y-globalposy)+offs.y) * -(1.f/1024.f)*-f; a0.x = ((float)(pos.y-globalposy)+offs.y) * -(1.f/1024.f)*-f;
a0.y = ((float)(pos.x-globalposx)+offs.x) * (1.f/1024.f)*f; a0.y = ((float)(pos.x-globalposx)+offs.x) * (1.f/1024.f)*f;
@ -5377,14 +5377,14 @@ void polymost2_drawsprite(int32_t snum)
orientationOffset.x *= -(1.f/1024.f)*-f; orientationOffset.x *= -(1.f/1024.f)*-f;
orientationOffset.y *= -(1.f/16384.f)*g; orientationOffset.y *= -(1.f/16384.f)*g;
calcmat(a0, &orientationOffset, f, modelViewMatrix, angle); calcmat(a0, &orientationOffset, f, modelViewMatrix, angle);
if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FLOOR) if ((globalorientation & CSTAT_SPRITE_ALIGNMENT)==CSTAT_SPRITE_ALIGNMENT_FLOOR)
{ {
float temp = modelViewMatrix[4]; modelViewMatrix[4] = modelViewMatrix[8]*16.f; modelViewMatrix[8] = -temp*(1.f/16.f); float temp = modelViewMatrix[4]; modelViewMatrix[4] = modelViewMatrix[8]*16.f; modelViewMatrix[8] = -temp*(1.f/16.f);
temp = modelViewMatrix[5]; modelViewMatrix[5] = modelViewMatrix[9]*16.f; modelViewMatrix[9] = -temp*(1.f/16.f); temp = modelViewMatrix[5]; modelViewMatrix[5] = modelViewMatrix[9]*16.f; modelViewMatrix[9] = -temp*(1.f/16.f);
temp = modelViewMatrix[6]; modelViewMatrix[6] = modelViewMatrix[10]*16.f; modelViewMatrix[10] = -temp*(1.f/16.f); temp = modelViewMatrix[6]; modelViewMatrix[6] = modelViewMatrix[10]*16.f; modelViewMatrix[10] = -temp*(1.f/16.f);
} }
// mirrors // mirrors
if (grhalfxdown10x < 0) if (grhalfxdown10x < 0)
{ {
@ -5399,7 +5399,7 @@ void polymost2_drawsprite(int32_t snum)
0.0f, 0.0f, 1.0f, fydimen * ratio, 0.0f, 0.0f, 1.0f, fydimen * ratio,
0.0f, 0.0f, -1.0f, 0.0f 0.0f, 0.0f, -1.0f, 0.0f
}; };
float scaleMatrix[4*4] = float scaleMatrix[4*4] =
{ {
horzScale, 0.0f, 0.0f, 0.0f, horzScale, 0.0f, 0.0f, 0.0f,
@ -5414,12 +5414,12 @@ void polymost2_drawsprite(int32_t snum)
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
-off.x*(1.f/1024.f)*f, off.y * (1.f/16384.f)*g, 0.0f, 1.0f -off.x*(1.f/1024.f)*f, off.y * (1.f/16384.f)*g, 0.0f, 1.0f
}; };
multiplyMatrix4f(transformMatrix, scaleMatrix); multiplyMatrix4f(transformMatrix, scaleMatrix);
multiplyMatrix4f(transformMatrix, offsetMatrix); multiplyMatrix4f(transformMatrix, offsetMatrix);
//POGOTODO: for later optimization purposes (batching/caching), I need to split the modelViewMatrix into modelMatrix and viewMatrix //POGOTODO: for later optimization purposes (batching/caching), I need to split the modelViewMatrix into modelMatrix and viewMatrix
multiplyMatrix4f(transformMatrix, modelViewMatrix); multiplyMatrix4f(transformMatrix, modelViewMatrix);
//POGOTODO: I should instead implement one-sided sprites & culling by switching the xflip/yflip from flipping scale to instead flipping texScale //POGOTODO: I should instead implement one-sided sprites & culling by switching the xflip/yflip from flipping scale to instead flipping texScale
// Doing that will allow me to simplify a lot of this code, but it will require a lot of changes // Doing that will allow me to simplify a lot of this code, but it will require a lot of changes
polymost2_drawVBO(GL_TRIANGLE_STRIP, polymost2_drawVBO(GL_TRIANGLE_STRIP,
@ -5437,7 +5437,7 @@ void polymost2_drawsprite(int32_t snum)
drawpoly_srepeat = 0; drawpoly_srepeat = 0;
drawpoly_trepeat = 0; drawpoly_trepeat = 0;
tilesiz[globalpicnum] = oldsiz; tilesiz[globalpicnum] = oldsiz;
} }
@ -5448,7 +5448,7 @@ void polymost_drawsprite(int32_t snum)
polymost2_drawsprite(snum); polymost2_drawsprite(snum);
return; return;
} }
uspritetype *const tspr = tspriteptr[snum]; uspritetype *const tspr = tspriteptr[snum];
if (EDUKE32_PREDICT_FALSE(bad_tspr(tspr))) if (EDUKE32_PREDICT_FALSE(bad_tspr(tspr)))

View file

@ -1643,7 +1643,7 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
} }
gladLoadGLLoader(SDL_GL_GetProcAddress); gladLoadGLLoader(SDL_GL_GetProcAddress);
SDL_SetWindowFullscreen(sdl_window, ((fs & 1) ? SDL_WINDOW_FULLSCREEN : 0)); SDL_SetWindowFullscreen(sdl_window, ((fs & 1) ? SDL_WINDOW_FULLSCREEN : 0));
SDL_GL_SetSwapInterval(vsync_renderlayer); SDL_GL_SetSwapInterval(vsync_renderlayer);
@ -1792,7 +1792,7 @@ void showframe(int32_t w)
#ifdef __ANDROID__ #ifdef __ANDROID__
AndroidDrawControls(); AndroidDrawControls();
#endif #endif
static uint32_t lastSwapTime = 0; static uint32_t lastSwapTime = 0;
SDL_GL_SwapWindow(sdl_window); SDL_GL_SwapWindow(sdl_window);
if (vsync) if (vsync)

View file

@ -2700,7 +2700,7 @@ static int32_t SetupOpenGL(int32_t width, int32_t height, int32_t bitspp)
ShowErrorBox("Can't activate GL RC"); ShowErrorBox("Can't activate GL RC");
return TRUE; return TRUE;
} }
static int32_t glLoaded = 0; static int32_t glLoaded = 0;
if (!glLoaded) if (!glLoaded)
{ {

View file

@ -6519,7 +6519,7 @@ int app_main(int argc, char const * const * argv)
OSD_Exec(tempbuf); OSD_Exec(tempbuf);
OSD_Exec("autoexec.cfg"); OSD_Exec("autoexec.cfg");
system_getcvars(); system_getcvars();
if (g_networkMode != NET_DEDICATED_SERVER) if (g_networkMode != NET_DEDICATED_SERVER)