diff options
author | Juan Linietsky <reduzio@gmail.com> | 2019-10-05 11:35:10 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2020-02-11 12:03:50 +0100 |
commit | a95fb114baf6c8deb79073810ad8ea33efd4deb9 (patch) | |
tree | 245cb3499c1bae62c0893b683b10ac55289ccb33 /scene | |
parent | 6ee2f5e6b6663f5a4987954d43bb6df6d1f62d2a (diff) |
Fixed 2D and 3D CPU Particles
Diffstat (limited to 'scene')
-rw-r--r-- | scene/2d/cpu_particles_2d.cpp | 28 | ||||
-rw-r--r-- | scene/3d/cpu_particles.cpp | 30 |
2 files changed, 29 insertions, 29 deletions
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index b4d1052c04..449951bc6c 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -58,7 +58,7 @@ void CPUParticles2D::set_amount(int p_amount) { } } - particle_data.resize((8 + 4 + 1) * p_amount); + particle_data.resize((8 + 4 + 4) * p_amount); VS::get_singleton()->multimesh_allocate(multimesh, p_amount, VS::MULTIMESH_TRANSFORM_2D, true, true); particle_order.resize(p_amount); @@ -1025,18 +1025,18 @@ void CPUParticles2D::_update_particle_data_buffer() { } Color c = r[idx].color; - uint8_t *data8 = (uint8_t *)&ptr[8]; - data8[0] = CLAMP(c.r * 255.0, 0, 255); - data8[1] = CLAMP(c.g * 255.0, 0, 255); - data8[2] = CLAMP(c.b * 255.0, 0, 255); - data8[3] = CLAMP(c.a * 255.0, 0, 255); - - ptr[9] = r[idx].custom[0]; - ptr[10] = r[idx].custom[1]; - ptr[11] = r[idx].custom[2]; - ptr[12] = r[idx].custom[3]; - - ptr += 13; + + ptr[8] = c.r; + ptr[9] = c.g; + ptr[10] = c.b; + ptr[11] = c.a; + + ptr[12] = r[idx].custom[0]; + ptr[13] = r[idx].custom[1]; + ptr[14] = r[idx].custom[2]; + ptr[15] = r[idx].custom[3]; + + ptr += 16; } } @@ -1150,7 +1150,7 @@ void CPUParticles2D::_notification(int p_what) { zeromem(ptr, sizeof(float) * 8); } - ptr += 13; + ptr += 16; } } } diff --git a/scene/3d/cpu_particles.cpp b/scene/3d/cpu_particles.cpp index 5d9a791e80..6e26f7ce8f 100644 --- a/scene/3d/cpu_particles.cpp +++ b/scene/3d/cpu_particles.cpp @@ -72,7 +72,7 @@ void CPUParticles::set_amount(int p_amount) { } } - particle_data.resize((12 + 4 + 1) * p_amount); + particle_data.resize((12 + 4 + 4) * p_amount); VS::get_singleton()->multimesh_allocate(multimesh, p_amount, VS::MULTIMESH_TRANSFORM_3D, true, true); particle_order.resize(p_amount); @@ -1093,18 +1093,18 @@ void CPUParticles::_update_particle_data_buffer() { } Color c = r[idx].color; - uint8_t *data8 = (uint8_t *)&ptr[12]; - data8[0] = CLAMP(c.r * 255.0, 0, 255); - data8[1] = CLAMP(c.g * 255.0, 0, 255); - data8[2] = CLAMP(c.b * 255.0, 0, 255); - data8[3] = CLAMP(c.a * 255.0, 0, 255); - - ptr[13] = r[idx].custom[0]; - ptr[14] = r[idx].custom[1]; - ptr[15] = r[idx].custom[2]; - ptr[16] = r[idx].custom[3]; - - ptr += 17; + + ptr[12] = c.r; + ptr[13] = c.g; + ptr[14] = c.b; + ptr[15] = c.a; + + ptr[16] = r[idx].custom[0]; + ptr[17] = r[idx].custom[1]; + ptr[18] = r[idx].custom[2]; + ptr[19] = r[idx].custom[3]; + + ptr += 20; } can_update = true; @@ -1144,7 +1144,7 @@ void CPUParticles::_update_render_thread() { update_mutex->lock(); #endif if (can_update) { - //VS::get_singleton()->multimesh_set_buffer(multimesh, particle_data); + VS::get_singleton()->multimesh_set_buffer(multimesh, particle_data); can_update = false; //wait for next time } @@ -1210,7 +1210,7 @@ void CPUParticles::_notification(int p_what) { zeromem(ptr, sizeof(float) * 12); } - ptr += 17; + ptr += 20; } can_update = true; |