Commit: 58979947bcd3c88c517580c9888dea74e16451e9
Author: Lukas Tönne
Date:   Sun Jul 22 12:46:26 2018 +0100
Branches: tmp_hair_curves
https://developer.blender.org/rB58979947bcd3c88c517580c9888dea74e16451e9

Correct point and element counts for particle hair.

===================================================================

M       source/blender/draw/intern/draw_cache_impl_particles.c

===================================================================

diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c 
b/source/blender/draw/intern/draw_cache_impl_particles.c
index f62384cbae8..0d29debfae1 100644
--- a/source/blender/draw/intern/draw_cache_impl_particles.c
+++ b/source/blender/draw/intern/draw_cache_impl_particles.c
@@ -632,8 +632,8 @@ static int particle_batch_cache_fill_segments_indices(
         Gwn_IndexBufBuilder *elb)
 {
        const ParticleSettings *part = psys->part;
-       const int strands_res = 1 << (part->draw_step + subdiv);
-       const int verts_per_hair = strands_res * thickness_res;
+       const int points_per_curve = (1 << (part->draw_step + subdiv)) + 1;
+       const int points_per_hair = points_per_curve * thickness_res;
        
        int curr_point = start_index;
        for (int i = 0; i < num_path_keys; i++) {
@@ -642,7 +642,7 @@ static int particle_batch_cache_fill_segments_indices(
                        continue;
                }
                
-               for (int k = 0; k < verts_per_hair; k++) {
+               for (int k = 0; k < points_per_hair; k++) {
                        GWN_indexbuf_add_generic_vert(elb, curr_point++);
                }
                GWN_indexbuf_add_primitive_restart(elb);
@@ -734,14 +734,13 @@ static void ensure_seg_pt_final_count(
        ParticleHairFinalCache *final_cache = &hair_cache->final[subdiv];
        
        const ParticleSettings *part = psys->part;
-       const int strands_res = 1 << (part->draw_step + subdiv);
-       
+       const int points_per_curve = (1 << (part->draw_step + subdiv)) + 1;
+
        final_cache->strands_len = hair_cache->strands_len;
-       final_cache->point_len = strands_res * final_cache->strands_len;
+       final_cache->point_len = points_per_curve * final_cache->strands_len;
        
-       const int verts_per_hair = strands_res * thickness_res;
        /* +1 for primitive restart */
-       final_cache->elems_len = (verts_per_hair + 1) * 
final_cache->strands_len;
+       final_cache->elems_len = (points_per_curve * thickness_res + 1) * 
final_cache->strands_len;
 }
 
 static void particle_batch_cache_ensure_procedural_final_points(

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to