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
path: root/source
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 /source
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.
Diffstat (limited to 'source')
-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));