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:
authorKévin Dietrich <kevin.dietrich@mailoo.org>2022-02-15 19:48:49 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2022-02-15 19:53:12 +0300
commit430ced76d559d828b6f47c5fbb22530dcc70c257 (patch)
tree64cba8e815c7a4165ba9139b4fad7a40c3a7b42c
parent7083ea36e20a8364a37dc4a21d9a02002c80a8da (diff)
GPU subdiv: fix custom data interpolation for N-gons
Not all coarse vertices were used to compute the center value (off by one), and the interpolation for the current would always start at the base corner for the base face instead of the base corner for the current patch.
-rw-r--r--source/blender/draw/intern/shaders/common_subdiv_custom_data_interp_comp.glsl4
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/draw/intern/shaders/common_subdiv_custom_data_interp_comp.glsl b/source/blender/draw/intern/shaders/common_subdiv_custom_data_interp_comp.glsl
index 36c3970d9a0..df0016761e2 100644
--- a/source/blender/draw/intern/shaders/common_subdiv_custom_data_interp_comp.glsl
+++ b/source/blender/draw/intern/shaders/common_subdiv_custom_data_interp_comp.glsl
@@ -185,7 +185,7 @@ void main()
}
else {
/* Interpolate the src data for the center. */
- uint loop_end = loop_start + number_of_vertices - 1;
+ uint loop_end = loop_start + number_of_vertices;
Vertex center_value;
clear(center_value);
@@ -202,7 +202,7 @@ void main()
uint prev_coarse_corner = (current_coarse_corner + number_of_vertices - 1) %
number_of_vertices;
- v0 = read_vertex(loop_start);
+ v0 = read_vertex(loop_start + current_coarse_corner);
v1 = average(v0, read_vertex(loop_start + next_coarse_corner));
v3 = average(v0, read_vertex(loop_start + prev_coarse_corner));