VertexShaderGen: Use correct depth output when glClipControl is supported.
This commit is contained in:
parent
522e721830
commit
88cc91030e
|
@ -83,6 +83,7 @@ void InitBackendInfo()
|
||||||
g_Config.backend_info.bSupports3DVision = true;
|
g_Config.backend_info.bSupports3DVision = true;
|
||||||
g_Config.backend_info.bSupportsPostProcessing = false;
|
g_Config.backend_info.bSupportsPostProcessing = false;
|
||||||
g_Config.backend_info.bSupportsPaletteConversion = true;
|
g_Config.backend_info.bSupportsPaletteConversion = true;
|
||||||
|
g_Config.backend_info.bSupportsClipControl = true;
|
||||||
|
|
||||||
IDXGIFactory* factory;
|
IDXGIFactory* factory;
|
||||||
IDXGIAdapter* ad;
|
IDXGIAdapter* ad;
|
||||||
|
|
|
@ -468,6 +468,7 @@ Renderer::Renderer()
|
||||||
g_Config.backend_info.bSupportsGSInstancing = GLExtensions::Supports("GL_ARB_gpu_shader5");
|
g_Config.backend_info.bSupportsGSInstancing = GLExtensions::Supports("GL_ARB_gpu_shader5");
|
||||||
g_Config.backend_info.bSupportsGeometryShaders = GLExtensions::Version() >= 320;
|
g_Config.backend_info.bSupportsGeometryShaders = GLExtensions::Version() >= 320;
|
||||||
g_Config.backend_info.bSupportsPaletteConversion = GLExtensions::Supports("GL_ARB_texture_buffer_object");
|
g_Config.backend_info.bSupportsPaletteConversion = GLExtensions::Supports("GL_ARB_texture_buffer_object");
|
||||||
|
g_Config.backend_info.bSupportsClipControl = GLExtensions::Supports("GL_ARB_clip_control");
|
||||||
|
|
||||||
// Desktop OpenGL supports the binding layout if it supports 420pack
|
// Desktop OpenGL supports the binding layout if it supports 420pack
|
||||||
// OpenGL ES 3.1 supports it implicitly without an extension
|
// OpenGL ES 3.1 supports it implicitly without an extension
|
||||||
|
@ -486,7 +487,6 @@ Renderer::Renderer()
|
||||||
g_ogl_config.bSupportOGL31 = GLExtensions::Version() >= 310;
|
g_ogl_config.bSupportOGL31 = GLExtensions::Version() >= 310;
|
||||||
g_ogl_config.bSupportViewportFloat = GLExtensions::Supports("GL_ARB_viewport_array");
|
g_ogl_config.bSupportViewportFloat = GLExtensions::Supports("GL_ARB_viewport_array");
|
||||||
g_ogl_config.bSupportsDebug = GLExtensions::Supports("GL_KHR_debug") || GLExtensions::Supports("GL_ARB_debug_output");
|
g_ogl_config.bSupportsDebug = GLExtensions::Supports("GL_KHR_debug") || GLExtensions::Supports("GL_ARB_debug_output");
|
||||||
g_ogl_config.bSupportsGLClipControl = GLExtensions::Supports("GL_ARB_clip_control");
|
|
||||||
|
|
||||||
if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3)
|
if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3)
|
||||||
{
|
{
|
||||||
|
@ -598,7 +598,7 @@ Renderer::Renderer()
|
||||||
g_ogl_config.bSupportsMSAA ? "" : "MSAA ",
|
g_ogl_config.bSupportsMSAA ? "" : "MSAA ",
|
||||||
g_ogl_config.bSupportSampleShading ? "" : "SSAA ",
|
g_ogl_config.bSupportSampleShading ? "" : "SSAA ",
|
||||||
g_ActiveConfig.backend_info.bSupportsGSInstancing ? "" : "GSInstancing ",
|
g_ActiveConfig.backend_info.bSupportsGSInstancing ? "" : "GSInstancing ",
|
||||||
g_ogl_config.bSupportsGLClipControl ? "" : "ClipControl "
|
g_ActiveConfig.backend_info.bSupportsClipControl ? "" : "ClipControl "
|
||||||
);
|
);
|
||||||
|
|
||||||
s_last_multisample_mode = g_ActiveConfig.iMultisampleMode;
|
s_last_multisample_mode = g_ActiveConfig.iMultisampleMode;
|
||||||
|
@ -635,6 +635,8 @@ Renderer::Renderer()
|
||||||
glBlendFunc(GL_ONE, GL_ONE);
|
glBlendFunc(GL_ONE, GL_ONE);
|
||||||
|
|
||||||
glViewport(0, 0, GetTargetWidth(), GetTargetHeight()); // Reset The Current Viewport
|
glViewport(0, 0, GetTargetWidth(), GetTargetHeight()); // Reset The Current Viewport
|
||||||
|
if (g_ActiveConfig.backend_info.bSupportsClipControl)
|
||||||
|
glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
|
||||||
|
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
glClearDepthf(1.0f);
|
glClearDepthf(1.0f);
|
||||||
|
@ -646,8 +648,6 @@ Renderer::Renderer()
|
||||||
glDisable(GL_STENCIL_TEST);
|
glDisable(GL_STENCIL_TEST);
|
||||||
glEnable(GL_SCISSOR_TEST);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
|
|
||||||
if (g_ogl_config.bSupportsGLClipControl)
|
|
||||||
glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
|
|
||||||
glScissor(0, 0, GetTargetWidth(), GetTargetHeight());
|
glScissor(0, 0, GetTargetWidth(), GetTargetHeight());
|
||||||
glBlendColor(0, 0, 0, 0.5f);
|
glBlendColor(0, 0, 0, 0.5f);
|
||||||
glClearDepthf(1.0f);
|
glClearDepthf(1.0f);
|
||||||
|
|
|
@ -25,7 +25,6 @@ struct VideoConfig
|
||||||
bool bSupportsGLSync;
|
bool bSupportsGLSync;
|
||||||
bool bSupportsGLBaseVertex;
|
bool bSupportsGLBaseVertex;
|
||||||
bool bSupportsGLBufferStorage;
|
bool bSupportsGLBufferStorage;
|
||||||
bool bSupportsGLClipControl;
|
|
||||||
bool bSupportsMSAA;
|
bool bSupportsMSAA;
|
||||||
bool bSupportSampleShading;
|
bool bSupportSampleShading;
|
||||||
GLSL_VERSION eSupportedGLSLVersion;
|
GLSL_VERSION eSupportedGLSLVersion;
|
||||||
|
|
|
@ -379,7 +379,7 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ
|
||||||
|
|
||||||
//write the true depth value, if the game uses depth textures pixel shaders will override with the correct values
|
//write the true depth value, if the game uses depth textures pixel shaders will override with the correct values
|
||||||
//if not early z culling will improve speed
|
//if not early z culling will improve speed
|
||||||
if (api_type == API_D3D)
|
if (g_ActiveConfig.backend_info.bSupportsClipControl)
|
||||||
{
|
{
|
||||||
out.Write("o.pos.z = o.pos.w + o.pos.z;\n");
|
out.Write("o.pos.z = o.pos.w + o.pos.z;\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,6 +159,7 @@ struct VideoConfig final
|
||||||
bool bSupportsGSInstancing; // Needed by GeometryShaderGen, so must stay in VideoCommon
|
bool bSupportsGSInstancing; // Needed by GeometryShaderGen, so must stay in VideoCommon
|
||||||
bool bSupportsPostProcessing;
|
bool bSupportsPostProcessing;
|
||||||
bool bSupportsPaletteConversion;
|
bool bSupportsPaletteConversion;
|
||||||
|
bool bSupportsClipControl; // Needed by VertexShaderGen, so must stay in VideoCommon
|
||||||
} backend_info;
|
} backend_info;
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
|
|
Loading…
Reference in New Issue