Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-02-17 19:03:23 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-02-19 00:30:45 +0300
commit16d565836588de15b739ae5965d12d7794b87f3e (patch)
tree935a55de98502bb17fe765bf4db338451333ed22 /intern/opencolorio/CMakeLists.txt
parente81dda4f3865827f3b3039caa57d9e97e2019781 (diff)
OCIO: Port shader creation logic to use GPUShaderCreateInfo
This commit should suffice to make the shader API agnostic now (given that all users of it use the GPU API). This makes the shaders not trigger a false positive error anymore since the binding slots are now garanteed by the backend and not changed at after compilation. This also bundles all uniforms into UBOs. Making them extendable without limitations of push constants. The generated uniforms from OCIO are not densely packed in the UBO to avoid complexity. Another approach would be to use GPU_uniformbuf_create_from_list but this requires converting uniforms to GPUInputs which is too complex for what it is. Reviewed by: brecht, jbakker Differential Revision: https://developer.blender.org/D14123
Diffstat (limited to 'intern/opencolorio/CMakeLists.txt')
-rw-r--r--intern/opencolorio/CMakeLists.txt36
1 files changed, 34 insertions, 2 deletions
diff --git a/intern/opencolorio/CMakeLists.txt b/intern/opencolorio/CMakeLists.txt
index dfccb9301ac..be6ccc5c2c5 100644
--- a/intern/opencolorio/CMakeLists.txt
+++ b/intern/opencolorio/CMakeLists.txt
@@ -7,6 +7,7 @@ set(INC
../guardedalloc
../../source/blender/blenlib
../../source/blender/gpu
+ ../../source/blender/gpu/intern
../../source/blender/makesdna
)
@@ -20,6 +21,7 @@ set(SRC
ocio_capi.h
ocio_impl.h
+ ocio_shader_shared.hh
)
set(LIB
@@ -56,8 +58,38 @@ if(WITH_OPENCOLORIO)
)
endif()
- data_to_c_simple(gpu_shader_display_transform.glsl SRC)
- data_to_c_simple(gpu_shader_display_transform_vertex.glsl SRC)
+ set(GLSL_SRC
+ gpu_shader_display_transform_vert.glsl
+ gpu_shader_display_transform_frag.glsl
+
+ ocio_shader_shared.hh
+ )
+
+ set(GLSL_C)
+ foreach(GLSL_FILE ${GLSL_SRC})
+ data_to_c_simple(${GLSL_FILE} GLSL_C)
+ endforeach()
+
+ blender_add_lib(bf_ocio_shaders "${GLSL_C}" "" "" "")
+
+ list(APPEND LIB
+ bf_ocio_shaders
+ )
+
+ set(GLSL_SOURCE_CONTENT "")
+ foreach(GLSL_FILE ${GLSL_SRC})
+ get_filename_component(GLSL_FILE_NAME ${GLSL_FILE} NAME)
+ string(REPLACE "." "_" GLSL_FILE_NAME_UNDERSCORES ${GLSL_FILE_NAME})
+ string(APPEND GLSL_SOURCE_CONTENT "SHADER_SOURCE\(datatoc_${GLSL_FILE_NAME_UNDERSCORES}, \"${GLSL_FILE_NAME}\", \"${GLSL_FILE}\"\)\n")
+ endforeach()
+
+ set(glsl_source_list_file "${CMAKE_CURRENT_BINARY_DIR}/glsl_ocio_source_list.h")
+ file(GENERATE OUTPUT ${glsl_source_list_file} CONTENT "${GLSL_SOURCE_CONTENT}")
+ list(APPEND SRC ${glsl_source_list_file})
+ list(APPEND INC ${CMAKE_CURRENT_BINARY_DIR})
+
+ target_include_directories(bf_ocio_shaders PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+
endif()