mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-01-31 12:30:32 +00:00
- removed the code for hardware alpha testing again because it didn't work anymore with how things are set up now.
- we need to check all GL versions when trying to get a context because some drivers only give us the version we request, leaving out newer features that are not exposed via extension. - added some status info about uniform blocks.
This commit is contained in:
parent
beabfad293
commit
ef8f66c9a1
7 changed files with 17 additions and 51 deletions
|
@ -138,29 +138,7 @@ bool FRenderState::ApplyShader()
|
||||||
activeShader->muClipHeightTop.Set(mClipHeightTop);
|
activeShader->muClipHeightTop.Set(mClipHeightTop);
|
||||||
activeShader->muClipHeightBottom.Set(mClipHeightBottom);
|
activeShader->muClipHeightBottom.Set(mClipHeightBottom);
|
||||||
activeShader->muTimer.Set(gl_frameMS * mShaderTimer / 1000.f);
|
activeShader->muTimer.Set(gl_frameMS * mShaderTimer / 1000.f);
|
||||||
|
|
||||||
#ifndef CORE_PROFILE
|
|
||||||
if (!(gl.flags & RFL_COREPROFILE))
|
|
||||||
{
|
|
||||||
if (mAlphaThreshold != stAlphaThreshold)
|
|
||||||
{
|
|
||||||
stAlphaThreshold = mAlphaThreshold;
|
|
||||||
if (mAlphaThreshold < 0.f)
|
|
||||||
{
|
|
||||||
glDisable(GL_ALPHA_TEST);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
glEnable(GL_ALPHA_TEST);
|
|
||||||
glAlphaFunc(GL_GREATER, mAlphaThreshold * mColor.vec[3]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
activeShader->muAlphaThreshold.Set(mAlphaThreshold);
|
activeShader->muAlphaThreshold.Set(mAlphaThreshold);
|
||||||
}
|
|
||||||
|
|
||||||
if (mGlowEnabled)
|
if (mGlowEnabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -175,6 +175,9 @@ void gl_PrintStartupLog()
|
||||||
gl.maxuniforms = v;
|
gl.maxuniforms = v;
|
||||||
glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &v);
|
glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &v);
|
||||||
Printf ("Max. vertex uniforms: %d\n", v);
|
Printf ("Max. vertex uniforms: %d\n", v);
|
||||||
|
glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &v);
|
||||||
|
Printf ("Max. uniform block size: %d\n", v);
|
||||||
|
gl.maxuniformblock = v;
|
||||||
glGetIntegerv(GL_MAX_VARYING_FLOATS, &v);
|
glGetIntegerv(GL_MAX_VARYING_FLOATS, &v);
|
||||||
Printf ("Max. varying: %d\n", v);
|
Printf ("Max. varying: %d\n", v);
|
||||||
glGetIntegerv(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, &v);
|
glGetIntegerv(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, &v);
|
||||||
|
@ -182,5 +185,6 @@ void gl_PrintStartupLog()
|
||||||
glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &v);
|
glGetIntegerv(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, &v);
|
||||||
Printf("Max. vertex shader storage blocks: %d\n", v);
|
Printf("Max. vertex shader storage blocks: %d\n", v);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ struct RenderContext
|
||||||
{
|
{
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
unsigned int maxuniforms;
|
unsigned int maxuniforms;
|
||||||
|
unsigned int maxuniformblock;
|
||||||
float version;
|
float version;
|
||||||
float glslversion;
|
float glslversion;
|
||||||
int max_texturesize;
|
int max_texturesize;
|
||||||
|
|
|
@ -192,6 +192,8 @@ void FHardwareTexture::LoadImage(unsigned char * buffer,int w, int h, unsigned i
|
||||||
if (alphatexture)
|
if (alphatexture)
|
||||||
{
|
{
|
||||||
// thanks to deprecation and delayed introduction of a suitable replacement feature this has become a bit messy...
|
// thanks to deprecation and delayed introduction of a suitable replacement feature this has become a bit messy...
|
||||||
|
// Of all the targeted hardware, the Intel GMA 2000 and 3000 are the only ones not supporting texture swizzle, and they
|
||||||
|
// are also the only ones not supoorting GL 3.3. On those we are forced to use a full RGBA texture here.
|
||||||
if (gl.version >= 3.3f)
|
if (gl.version >= 3.3f)
|
||||||
{
|
{
|
||||||
texformat = GL_R8;
|
texformat = GL_R8;
|
||||||
|
|
|
@ -745,10 +745,9 @@ bool Win32GLVideo::InitHardware (HWND Window, int multisample)
|
||||||
#else
|
#else
|
||||||
bool core = true;
|
bool core = true;
|
||||||
#endif
|
#endif
|
||||||
if (core)
|
// let's try to get the best version possible. Some drivers only give us the version we request
|
||||||
{
|
// which breaks all version checks for feature support. The highest used features we use are from version 4.4, and 3.0 is a requirement.
|
||||||
// let's try to get the best version possible.
|
static int versions[] = { 44, 43, 42, 41, 40, 33, 32, 30, -1 };
|
||||||
static int versions[] = { 44, 43, 42, 41, 40, 33, 32, -1 };
|
|
||||||
|
|
||||||
for (int i = 0; versions[i] > 0; i++)
|
for (int i = 0; versions[i] > 0; i++)
|
||||||
{
|
{
|
||||||
|
@ -756,7 +755,7 @@ bool Win32GLVideo::InitHardware (HWND Window, int multisample)
|
||||||
WGL_CONTEXT_MAJOR_VERSION_ARB, versions[i] / 10,
|
WGL_CONTEXT_MAJOR_VERSION_ARB, versions[i] / 10,
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB, versions[i] % 10,
|
WGL_CONTEXT_MINOR_VERSION_ARB, versions[i] % 10,
|
||||||
WGL_CONTEXT_FLAGS_ARB, gl_debug ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
|
WGL_CONTEXT_FLAGS_ARB, gl_debug ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
|
||||||
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
|
WGL_CONTEXT_PROFILE_MASK_ARB, core? WGL_CONTEXT_CORE_PROFILE_BIT_ARB : WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -764,20 +763,6 @@ bool Win32GLVideo::InitHardware (HWND Window, int multisample)
|
||||||
if (m_hRC != NULL) break;
|
if (m_hRC != NULL) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
int ctxAttribs[] = {
|
|
||||||
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
|
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB, 0,
|
|
||||||
WGL_CONTEXT_FLAGS_ARB, gl_debug ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
|
|
||||||
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
m_hRC = myWglCreateContextAttribsARB(m_hDC, 0, ctxAttribs);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m_hRC == 0)
|
if (m_hRC == 0)
|
||||||
{
|
{
|
||||||
// If we are unable to get a core context, let's try whatever the system gives us.
|
// If we are unable to get a core context, let's try whatever the system gives us.
|
||||||
|
|
|
@ -222,12 +222,10 @@ void main()
|
||||||
{
|
{
|
||||||
vec4 frag = ProcessTexel();
|
vec4 frag = ProcessTexel();
|
||||||
|
|
||||||
#ifdef CORE_PROFILE
|
#ifndef NO_ALPHATEST
|
||||||
// alpha testing - only for the core profile, in compatibility mode we use the alpha test.
|
|
||||||
if (frag.a <= uAlphaThreshold) discard;
|
if (frag.a <= uAlphaThreshold) discard;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
switch (uFixedColormap)
|
switch (uFixedColormap)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|
|
@ -8,9 +8,7 @@ uniform vec4 uCameraPos;
|
||||||
uniform int uTextureMode;
|
uniform int uTextureMode;
|
||||||
uniform float uClipHeightTop, uClipHeightBottom;
|
uniform float uClipHeightTop, uClipHeightBottom;
|
||||||
|
|
||||||
#ifdef CORE_PROFILE
|
|
||||||
uniform float uAlphaThreshold;
|
uniform float uAlphaThreshold;
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// colors
|
// colors
|
||||||
|
|
Loading…
Reference in a new issue