52 lines
2.0 KiB
Diff
52 lines
2.0 KiB
Diff
--- blender-2.79b-orig/intern/opencolorio/ocio_impl_glsl.cc 2018-03-23 18:10:23.000000000 +0300
|
|
+++ blender-2.79b/intern/opencolorio/ocio_impl_glsl.cc 2018-07-10 09:02:08.102293700 +0300
|
|
@@ -294,10 +294,10 @@
|
|
}
|
|
|
|
/* Step 1: Create a GPU Shader Description */
|
|
- GpuShaderDesc shaderDesc;
|
|
- shaderDesc.setLanguage(GPU_LANGUAGE_GLSL_1_3);
|
|
- shaderDesc.setFunctionName("OCIODisplay");
|
|
- shaderDesc.setLut3DEdgeLen(LUT3D_EDGE_SIZE);
|
|
+ GpuShaderDescRcPtr shaderDesc = GpuShaderDesc::CreateLegacyShaderDesc(LUT3D_EDGE_SIZE);
|
|
+ shaderDesc->setLanguage(GPU_LANGUAGE_GLSL_1_3);
|
|
+ shaderDesc->setFunctionName("OCIODisplay");
|
|
+ shaderDesc->setResourcePrefix("ocio_");
|
|
|
|
if (use_curve_mapping) {
|
|
if (state->curve_mapping_cache_id != curve_mapping_settings->cache_id) {
|
|
@@ -308,21 +308,11 @@
|
|
}
|
|
}
|
|
|
|
- /* Step 2: Compute the 3D LUT */
|
|
- std::string lut3dCacheID = ocio_processor->getGpuLut3DCacheID(shaderDesc);
|
|
- if (lut3dCacheID != state->lut3dcacheid) {
|
|
- state->lut3dcacheid = lut3dCacheID;
|
|
- ocio_processor->getGpuLut3D(state->lut3d, shaderDesc);
|
|
-
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
- glBindTexture(GL_TEXTURE_3D, state->lut3d_texture);
|
|
- glTexSubImage3D(GL_TEXTURE_3D, 0, 0, 0, 0,
|
|
- LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE,
|
|
- GL_RGB, GL_FLOAT, state->lut3d);
|
|
- }
|
|
+ /* Step 2: Collect the shader program information for a specific processor */
|
|
+ ocio_processor->extractGpuShaderInfo(shaderDesc);
|
|
|
|
/* Step 3: Compute the Shader */
|
|
- std::string shaderCacheID = ocio_processor->getGpuShaderTextCacheID(shaderDesc);
|
|
+ std::string shaderCacheID = shaderDesc->getCacheID();
|
|
if (state->program == 0 ||
|
|
shaderCacheID != state->shadercacheid ||
|
|
use_predivide != state->predivide_used ||
|
|
@@ -361,7 +351,7 @@
|
|
os << "#define USE_CURVE_MAPPING\n";
|
|
}
|
|
|
|
- os << ocio_processor->getGpuShaderText(shaderDesc) << "\n";
|
|
+ os << shaderDesc->getShaderText() << "\n";
|
|
os << datatoc_gpu_shader_display_transform_glsl;
|
|
|
|
state->ocio_shader = compileShaderText(GL_FRAGMENT_SHADER, os.str().c_str());
|