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:
Diffstat (limited to 'source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl')
-rw-r--r--source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl21
1 files changed, 21 insertions, 0 deletions
diff --git a/source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl b/source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl
index 84cd65d4161..c2e0e752783 100644
--- a/source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl
+++ b/source/blender/draw/intern/shaders/common_subdiv_normals_finalize_comp.glsl
@@ -1,6 +1,18 @@
/* To be compile with common_subdiv_lib.glsl */
+#ifdef CUSTOM_NORMALS
+struct CustomNormal {
+ float x;
+ float y;
+ float z;
+};
+
+layout(std430, binding = 0) readonly buffer inputNormals
+{
+ CustomNormal custom_normals[];
+};
+#else
layout(std430, binding = 0) readonly buffer inputNormals
{
vec3 vertex_normals[];
@@ -10,6 +22,7 @@ layout(std430, binding = 1) readonly buffer inputSubdivVertLoopMap
{
uint vert_loop_map[];
};
+#endif
layout(std430, binding = 2) buffer outputPosNor
{
@@ -26,9 +39,17 @@ void main()
uint start_loop_index = quad_index * 4;
+#ifdef CUSTOM_NORMALS
+ for (int i = 0; i < 4; i++) {
+ CustomNormal custom_normal = custom_normals[start_loop_index + i];
+ vec3 nor = vec3(custom_normal.x, custom_normal.y, custom_normal.z);
+ set_vertex_nor(pos_nor[start_loop_index + i], normalize(nor));
+ }
+#else
for (int i = 0; i < 4; i++) {
uint subdiv_vert_index = vert_loop_map[start_loop_index + i];
vec3 nor = vertex_normals[subdiv_vert_index];
set_vertex_nor(pos_nor[start_loop_index + i], nor);
}
+#endif
}