[Bf-blender-cvs] [58979947bcd] tmp_hair_curves: Correct point and element counts for particle hair.
Lukas Tönne
noreply at git.blender.org
Sun Jul 22 14:15:16 CEST 2018
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(
More information about the Bf-blender-cvs
mailing list