mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-07 17:11:17 +00:00
- Backend update from Raze.
Mostly warning fixes reported by Clang, plus GLES update.
This commit is contained in:
parent
8e59ed754e
commit
cc617d9085
9 changed files with 46 additions and 15 deletions
|
@ -266,7 +266,7 @@ bool FZipFile::Open(bool quiet, LumpFilterInfo* filter)
|
||||||
// at least one of the more common definition lumps must be present.
|
// at least one of the more common definition lumps must be present.
|
||||||
for (auto &p : filter->requiredPrefixes)
|
for (auto &p : filter->requiredPrefixes)
|
||||||
{
|
{
|
||||||
if (name.IndexOf(name0 + p) == 0 || name.LastIndexOf(p) == name.Len() - strlen(p))
|
if (name.IndexOf(name0 + p) == 0 || name.LastIndexOf(p) == ptrdiff_t(name.Len() - strlen(p)))
|
||||||
{
|
{
|
||||||
foundspeciallump = true;
|
foundspeciallump = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -686,7 +686,7 @@ int FFont::GetColorTranslation (EColorRange range, PalEntry *color) const
|
||||||
{
|
{
|
||||||
// Single pic fonts do not set up their translation table and must always return 0.
|
// Single pic fonts do not set up their translation table and must always return 0.
|
||||||
if (Translations.Size() == 0) return 0;
|
if (Translations.Size() == 0) return 0;
|
||||||
assert(Translations.Size() == NumTextColors);
|
assert(Translations.Size() == (unsigned)NumTextColors);
|
||||||
|
|
||||||
if (noTranslate)
|
if (noTranslate)
|
||||||
{
|
{
|
||||||
|
|
|
@ -210,8 +210,8 @@ void FVoxelModel::AddFace(int x1, int y1, int z1, int x2, int y2, int z2, int x3
|
||||||
unsigned int indx[4];
|
unsigned int indx[4];
|
||||||
|
|
||||||
vert.packedNormal = 0; // currently this is not being used for voxels.
|
vert.packedNormal = 0; // currently this is not being used for voxels.
|
||||||
vert.u = (((col & 15) * 255 / 16) + 7) / 255.f;
|
vert.u = (((col & 15) + 0.5f) / 16.f);
|
||||||
vert.v = (((col / 16) * 255 / 16) + 7) / 255.f;
|
vert.v = (((col / 16) + 0.5f) / 16.f);
|
||||||
|
|
||||||
vert.x = x1 - PivotX;
|
vert.x = x1 - PivotX;
|
||||||
vert.z = -y1 + PivotY;
|
vert.z = -y1 + PivotY;
|
||||||
|
|
|
@ -159,7 +159,7 @@ void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma)
|
||||||
mPresentShader->Uniforms.SetData();
|
mPresentShader->Uniforms.SetData();
|
||||||
|
|
||||||
|
|
||||||
for (int n = 0; n < mPresentShader->Uniforms.mFields.size(); n++)
|
for (size_t n = 0; n < mPresentShader->Uniforms.mFields.size(); n++)
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
UniformFieldDesc desc = mPresentShader->Uniforms.mFields[n];
|
UniformFieldDesc desc = mPresentShader->Uniforms.mFields[n];
|
||||||
|
@ -175,6 +175,8 @@ void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma)
|
||||||
case UniformType::Vec2:
|
case UniformType::Vec2:
|
||||||
glUniform2fv(loc,1 , ((GLfloat*)(((char*)(&mPresentShader->Uniforms)) + desc.Offset)));
|
glUniform2fv(loc,1 , ((GLfloat*)(((char*)(&mPresentShader->Uniforms)) + desc.Offset)));
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
#include "gles_renderbuffers.h"
|
#include "gles_renderbuffers.h"
|
||||||
#include "gles_hwtexture.h"
|
#include "gles_hwtexture.h"
|
||||||
#include "gles_buffers.h"
|
#include "gles_buffers.h"
|
||||||
|
#include "gles_renderer.h"
|
||||||
|
#include "gles_samplers.h"
|
||||||
|
|
||||||
#include "hw_clock.h"
|
#include "hw_clock.h"
|
||||||
#include "printf.h"
|
#include "printf.h"
|
||||||
|
|
||||||
|
@ -116,13 +119,13 @@ bool FGLRenderState::ApplyShader()
|
||||||
addLights = (int(lightPtr[3]) - int(lightPtr[2])) / LIGHT_VEC4_NUM;
|
addLights = (int(lightPtr[3]) - int(lightPtr[2])) / LIGHT_VEC4_NUM;
|
||||||
|
|
||||||
// Here we limit the number of lights, but dont' change the light data so priority has to be mod, sub then add
|
// Here we limit the number of lights, but dont' change the light data so priority has to be mod, sub then add
|
||||||
if (modLights > gles.maxlights)
|
if (modLights > (int)gles.maxlights)
|
||||||
modLights = gles.maxlights;
|
modLights = gles.maxlights;
|
||||||
|
|
||||||
if (modLights + subLights > gles.maxlights)
|
if (modLights + subLights > (int)gles.maxlights)
|
||||||
subLights = gles.maxlights - modLights;
|
subLights = gles.maxlights - modLights;
|
||||||
|
|
||||||
if (modLights + subLights + addLights > gles.maxlights)
|
if (modLights + subLights + addLights > (int)gles.maxlights)
|
||||||
addLights = gles.maxlights - modLights - subLights;
|
addLights = gles.maxlights - modLights - subLights;
|
||||||
|
|
||||||
totalLights = modLights + subLights + addLights;
|
totalLights = modLights + subLights + addLights;
|
||||||
|
@ -332,7 +335,7 @@ bool FGLRenderState::ApplyShader()
|
||||||
// Calculate the total number of vec4s we need
|
// Calculate the total number of vec4s we need
|
||||||
int totalVectors = totalLights * LIGHT_VEC4_NUM;
|
int totalVectors = totalLights * LIGHT_VEC4_NUM;
|
||||||
|
|
||||||
if (totalVectors > gles.numlightvectors)
|
if (totalVectors > (int)gles.numlightvectors)
|
||||||
totalVectors = gles.numlightvectors;
|
totalVectors = gles.numlightvectors;
|
||||||
|
|
||||||
glUniform4fv(activeShader->cur->lights_index, totalVectors, lightPtr);
|
glUniform4fv(activeShader->cur->lights_index, totalVectors, lightPtr);
|
||||||
|
@ -479,6 +482,7 @@ void FGLRenderState::ApplyMaterial(FMaterial *mat, int clampmode, int translatio
|
||||||
for (int i = 1; i < 3; i++)
|
for (int i = 1; i < 3; i++)
|
||||||
{
|
{
|
||||||
auto systex = static_cast<FHardwareTexture*>(mat->GetLayer(i, translation, &layer));
|
auto systex = static_cast<FHardwareTexture*>(mat->GetLayer(i, translation, &layer));
|
||||||
|
GLRenderer->mSamplerManager->Bind(i, CLAMP_NONE, 255);
|
||||||
systex->Bind(i, false);
|
systex->Bind(i, false);
|
||||||
maxbound = i;
|
maxbound = i;
|
||||||
}
|
}
|
||||||
|
@ -720,10 +724,13 @@ void FGLRenderState::ClearScreen()
|
||||||
bool FGLRenderState::SetDepthClamp(bool on)
|
bool FGLRenderState::SetDepthClamp(bool on)
|
||||||
{
|
{
|
||||||
bool res = mLastDepthClamp;
|
bool res = mLastDepthClamp;
|
||||||
/*
|
|
||||||
if (!on) glDisable(GL_DEPTH_CLAMP);
|
if (gles.depthClampAvailable)
|
||||||
else glEnable(GL_DEPTH_CLAMP);
|
{
|
||||||
*/
|
if (!on) glDisable(GL_DEPTH_CLAMP);
|
||||||
|
else glEnable(GL_DEPTH_CLAMP);
|
||||||
|
}
|
||||||
|
|
||||||
mLastDepthClamp = on;
|
mLastDepthClamp = on;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,8 +119,26 @@ uint8_t FSamplerManager::Bind(int texunit, int num, int lastval)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLAMP_NOFILTER:
|
case CLAMP_NOFILTER:
|
||||||
|
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_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
break;
|
||||||
|
|
||||||
case CLAMP_NOFILTER_X:
|
case CLAMP_NOFILTER_X:
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
break;
|
||||||
|
|
||||||
case CLAMP_NOFILTER_Y:
|
case CLAMP_NOFILTER_Y:
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
break;
|
||||||
|
|
||||||
case CLAMP_NOFILTER_XY:
|
case CLAMP_NOFILTER_XY:
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
|
@ -272,7 +272,7 @@ void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program
|
||||||
|
|
||||||
Uniforms.UniformLocation.resize(Uniforms.mFields.size());
|
Uniforms.UniformLocation.resize(Uniforms.mFields.size());
|
||||||
|
|
||||||
for (int n = 0; n < Uniforms.mFields.size(); n++)
|
for (size_t n = 0; n < Uniforms.mFields.size(); n++)
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
UniformFieldDesc desc = Uniforms.mFields[n];
|
UniformFieldDesc desc = Uniforms.mFields[n];
|
||||||
|
|
|
@ -62,7 +62,6 @@ static PROC(WINAPI* getprocaddress)(LPCSTR name);
|
||||||
|
|
||||||
static void* LoadGLES2Proc(const char* name)
|
static void* LoadGLES2Proc(const char* name)
|
||||||
{
|
{
|
||||||
|
|
||||||
HINSTANCE hGetProcIDDLL = LoadLibraryA("libGLESv2.dll");
|
HINSTANCE hGetProcIDDLL = LoadLibraryA("libGLESv2.dll");
|
||||||
|
|
||||||
int error = GetLastError();
|
int error = GetLastError();
|
||||||
|
@ -71,6 +70,7 @@ static void* LoadGLES2Proc(const char* name)
|
||||||
if (!addr)
|
if (!addr)
|
||||||
{
|
{
|
||||||
//exit(1);
|
//exit(1);
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -182,10 +182,12 @@ namespace OpenGLESRenderer
|
||||||
#if USE_GLES2
|
#if USE_GLES2
|
||||||
gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil");
|
gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil");
|
||||||
gles.npotAvailable = CheckExtension("GL_OES_texture_npot");
|
gles.npotAvailable = CheckExtension("GL_OES_texture_npot");
|
||||||
|
gles.depthClampAvailable = CheckExtension("GL_EXT_depth_clamp");
|
||||||
#else
|
#else
|
||||||
gles.depthStencilAvailable = true;
|
gles.depthStencilAvailable = true;
|
||||||
gles.npotAvailable = true;
|
gles.npotAvailable = true;
|
||||||
gles.useMappedBuffers = true;
|
gles.useMappedBuffers = true;
|
||||||
|
gles.depthClampAvailable = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
||||||
|
|
|
@ -42,6 +42,7 @@ GLAPI PFNGLUNMAPBUFFEROESPROC glUnmapBuffer;
|
||||||
#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
|
#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
|
||||||
#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
|
#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
|
||||||
#define GL_BGRA 0x80E1
|
#define GL_BGRA 0x80E1
|
||||||
|
#define GL_DEPTH_CLAMP 0x864F
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include "gl_load/gl_load.h"
|
#include "gl_load/gl_load.h"
|
||||||
|
@ -69,6 +70,7 @@ namespace OpenGLESRenderer
|
||||||
bool depthStencilAvailable;
|
bool depthStencilAvailable;
|
||||||
bool npotAvailable;
|
bool npotAvailable;
|
||||||
bool forceGLSLv100;
|
bool forceGLSLv100;
|
||||||
|
bool depthClampAvailable;
|
||||||
int max_texturesize;
|
int max_texturesize;
|
||||||
char* vendorstring;
|
char* vendorstring;
|
||||||
char* modelstring;
|
char* modelstring;
|
||||||
|
|
Loading…
Reference in a new issue