From fca44abb5f7b4c021c5e497c4dc9d43d913a9a55 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Tue, 27 Jan 2015 20:18:18 +0600 Subject: [PATCH] Do not create DepthImageTexture when N64DepthCompare option is off. --- DepthBuffer.cpp | 4 ++-- FrameBuffer.cpp | 2 +- GLSLCombiner.cpp | 12 ++++-------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/DepthBuffer.cpp b/DepthBuffer.cpp index 9196e9e3..5a8a4fa7 100644 --- a/DepthBuffer.cpp +++ b/DepthBuffer.cpp @@ -43,7 +43,7 @@ DepthBuffer::~DepthBuffer() void DepthBuffer::initDepthImageTexture(FrameBuffer * _pBuffer) { #ifdef GL_IMAGE_TEXTURES_SUPPORT - if (m_pDepthImageTexture != NULL) + if (!video().getRender().isImageTexturesSupported() || config.frameBufferEmulation.N64DepthCompare == 0 || m_pDepthImageTexture != NULL) return; m_pDepthImageTexture = textureCache().addFrameBufferTexture(); @@ -233,7 +233,7 @@ void DepthBufferList::saveBuffer(u32 _address) void DepthBufferList::clearBuffer() { #ifdef GL_IMAGE_TEXTURES_SUPPORT - if (!video().getRender().isImageTexturesSupported()) + if (!video().getRender().isImageTexturesSupported() || config.frameBufferEmulation.N64DepthCompare == 0) return; if (m_pCurrent == NULL || m_pCurrent->m_FBO == 0) return; diff --git a/FrameBuffer.cpp b/FrameBuffer.cpp index 8a7cdb38..cb41bffc 100644 --- a/FrameBuffer.cpp +++ b/FrameBuffer.cpp @@ -312,7 +312,7 @@ void FrameBufferList::attachDepthBuffer() pDepthBuffer->initDepthBufferTexture(m_pCurrent); m_pCurrent->m_pDepthBuffer = pDepthBuffer; pDepthBuffer->setDepthAttachment(); - if (video().getRender().isImageTexturesSupported()) + if (video().getRender().isImageTexturesSupported() && config.frameBufferEmulation.N64DepthCompare != 0) pDepthBuffer->bindDepthImageTexture(); } else m_pCurrent->m_pDepthBuffer = NULL; diff --git a/GLSLCombiner.cpp b/GLSLCombiner.cpp index 15a1778c..dd198d11 100644 --- a/GLSLCombiner.cpp +++ b/GLSLCombiner.cpp @@ -196,7 +196,7 @@ void InitShaderCombiner() assert(check_shader_compile_status(g_test_alpha_shader_object)); #ifdef GL_IMAGE_TEXTURES_SUPPORT - if (video().getRender().isImageTexturesSupported()) { + if (video().getRender().isImageTexturesSupported() && config.frameBufferEmulation.N64DepthCompare != 0) { g_calc_depth_shader_object = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(g_calc_depth_shader_object, 1, &depth_compare_shader_float, NULL); glCompileShader(g_calc_depth_shader_object); @@ -467,12 +467,8 @@ ShaderCombiner::ShaderCombiner(Combiner & _color, Combiner & _alpha, const gDPCo " } \n" ); - if (video().getRender().isImageTexturesSupported()) { - if (config.frameBufferEmulation.N64DepthCompare) - strFragmentShader.append(" if (!depth_compare()) discard; \n"); - else - strFragmentShader.append(" depth_compare(); \n"); - } + if (video().getRender().isImageTexturesSupported() && config.frameBufferEmulation.N64DepthCompare != 0) + strFragmentShader.append(" if (!depth_compare()) discard; \n"); #ifdef USE_TOONIFY strFragmentShader.append(" toonify(intensity); \n"); @@ -516,7 +512,7 @@ ShaderCombiner::ShaderCombiner(Combiner & _color, Combiner & _alpha, const gDPCo if (bUseLod) glAttachShader(m_program, g_calc_mipmap_shader_object); glAttachShader(m_program, g_test_alpha_shader_object); - if (video().getRender().isImageTexturesSupported()) + if (video().getRender().isImageTexturesSupported() && config.frameBufferEmulation.N64DepthCompare != 0) glAttachShader(m_program, g_calc_depth_shader_object); glAttachShader(m_program, g_calc_noise_shader_object); #endif