From 480def9c5587b710ce478a58985e2e4359c14467 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 30 Aug 2017 18:28:33 +0200 Subject: Fix T52591: OpenColorIO not working correct with OpenGL core profile on macOS. Also remove textureSize() replacement code, is always supported now. --- intern/opencolorio/ocio_impl_glsl.cc | 45 +++++------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) (limited to 'intern/opencolorio/ocio_impl_glsl.cc') diff --git a/intern/opencolorio/ocio_impl_glsl.cc b/intern/opencolorio/ocio_impl_glsl.cc index c8b64f72440..6d634da0477 100644 --- a/intern/opencolorio/ocio_impl_glsl.cc +++ b/intern/opencolorio/ocio_impl_glsl.cc @@ -85,8 +85,6 @@ typedef struct OCIO_GLSLDrawState { bool predivide_used; - bool texture_size_used; - /* Cache */ std::string lut3dcacheid; std::string shadercacheid; @@ -240,17 +238,6 @@ bool OCIOImpl::supportGLSLDraw() return GLEW_VERSION_3_0 || GLEW_ARB_texture_float; } -static bool supportGLSL13() -{ - const char *version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); - int major = 1, minor = 0; - - if (version && sscanf(version, "%d.%d", &major, &minor) == 2) - return (major > 1 || (major == 1 && minor >= 30)); - - return false; -} - /** * Setup OpenGL contexts for a transform defined by processor using GLSL * All LUT allocating baking and shader compilation happens here. @@ -353,13 +340,7 @@ bool OCIOImpl::setupGLSLDraw(OCIO_GLSLDrawState **state_r, OCIO_ConstProcessorRc /* Vertex shader */ std::ostringstream osv; - if (supportGLSL13()) { - osv << "#version 330\n"; - } - else { - osv << "#version 120\n"; - } - + osv << "#version 330\n"; osv << datatoc_gpu_shader_display_transform_vertex_glsl; state->vert_shader = compileShaderText(GL_VERTEX_SHADER, osv.str().c_str()); @@ -367,13 +348,11 @@ bool OCIOImpl::setupGLSLDraw(OCIO_GLSLDrawState **state_r, OCIO_ConstProcessorRc /* Fragment shader */ std::ostringstream os; - if (supportGLSL13()) { - os << "#version 330\n"; - } - else { - os << "#define USE_TEXTURE_SIZE\n"; - state->texture_size_used = use_dither; - } + os << "#version 330\n"; + + /* Work around OpenColorIO not supporting latest GLSL yet. */ + os << "#define texture2D texture\n"; + os << "#define texture3D texture\n"; if (use_predivide) { os << "#define USE_PREDIVIDE\n"; @@ -432,18 +411,6 @@ bool OCIOImpl::setupGLSLDraw(OCIO_GLSLDrawState **state_r, OCIO_ConstProcessorRc immUniform1i("image_texture", 0); immUniform1i("lut3d_texture", 1); - if (state->texture_size_used) { - /* we use textureSize() if possible for best performance, if not - * supported we query the size and pass it as uniform variables */ - GLint width, height; - - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height); - - immUniform1f("image_texture_width", (float)width); - immUniform1f("image_texture_height", (float)height); - } - if (use_dither) { immUniform1f("dither", dither); } -- cgit v1.2.3