From 27c6190665b6139c8fc39d57e65c54fa1bedbef4 Mon Sep 17 00:00:00 2001 From: eric levin Date: Mon, 15 Jun 2015 14:24:18 -0700 Subject: [PATCH 1/4] fixed particles not showing up by fixing billboarding code to account for new winding order --- .../src/RenderableParticleEffectEntityItem.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 91c89bb183..465306c2f0 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -53,7 +53,7 @@ void RenderableParticleEffectEntityItem::render(RenderArgs* args) { batch.setUniformTexture(0, _texture->getGPUTexture()); } batch.setModelTransform(getTransformToCenter()); - DependencyManager::get()->bindSimpleProgram(batch); + DependencyManager::get()->bindSimpleProgram(batch, textured); DependencyManager::get()->renderVertices(batch, gpu::QUADS, _cacheID); }; @@ -96,10 +96,11 @@ void RenderableParticleEffectEntityItem::updateQuads(RenderArgs* args, bool text glm::vec3 pos = (textured) ? positions[i] : _particlePositions[i]; // generate corners of quad aligned to face the camera. - vertices.append(pos - rightOffset + upOffset); vertices.append(pos + rightOffset + upOffset); - vertices.append(pos + rightOffset - upOffset); + vertices.append(pos - rightOffset + upOffset); vertices.append(pos - rightOffset - upOffset); + vertices.append(pos + rightOffset - upOffset); + } if (textured) { From 2663e5a87603ab9852aa76b59e5ea658389ef8c7 Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Mon, 15 Jun 2015 14:43:13 -0700 Subject: [PATCH 2/4] correct particle count for systems without textures --- .../src/RenderableParticleEffectEntityItem.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 465306c2f0..9f46da4944 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -75,22 +75,24 @@ void RenderableParticleEffectEntityItem::updateQuads(RenderArgs* args, bool text vertices.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); if (textured) { - positions.reserve(getLivingParticleCount()); - textureCoords.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); - - for (quint32 i = _particleHeadIndex; i != _particleTailIndex; i = (i + 1) % _maxParticles) { - positions.append(_particlePositions[i]); - + textureCoords.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); + } + positions.reserve(getLivingParticleCount()); + + + for (quint32 i = _particleHeadIndex; i != _particleTailIndex; i = (i + 1) % _maxParticles) { + positions.append(_particlePositions[i]); + if (textured) { textureCoords.append(glm::vec2(0, 1)); textureCoords.append(glm::vec2(1, 1)); textureCoords.append(glm::vec2(1, 0)); textureCoords.append(glm::vec2(0, 0)); } + } // sort particles back to front ::zSortAxis = args->_viewFrustum->getDirection(); qSort(positions.begin(), positions.end(), zSort); - } for (int i = 0; i < positions.size(); i++) { glm::vec3 pos = (textured) ? positions[i] : _particlePositions[i]; From 67ed1369cc5576f1373bbe796ad3aba9f9f6ab44 Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Mon, 15 Jun 2015 15:04:38 -0700 Subject: [PATCH 3/4] fixed indentation --- .../src/RenderableParticleEffectEntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 9f46da4944..2ea3c99026 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -75,7 +75,7 @@ void RenderableParticleEffectEntityItem::updateQuads(RenderArgs* args, bool text vertices.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); if (textured) { - textureCoords.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); + textureCoords.reserve(getLivingParticleCount() * VERTS_PER_PARTICLE); } positions.reserve(getLivingParticleCount()); From 70e042085b7a5f3924d0d68bf52db9a29f49a21b Mon Sep 17 00:00:00 2001 From: ericrius1 Date: Tue, 16 Jun 2015 09:11:36 -0700 Subject: [PATCH 4/4] fixed indentation --- .../src/RenderableParticleEffectEntityItem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 2ea3c99026..d00728a9eb 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -90,9 +90,9 @@ void RenderableParticleEffectEntityItem::updateQuads(RenderArgs* args, bool text } } - // sort particles back to front - ::zSortAxis = args->_viewFrustum->getDirection(); - qSort(positions.begin(), positions.end(), zSort); + // sort particles back to front + ::zSortAxis = args->_viewFrustum->getDirection(); + qSort(positions.begin(), positions.end(), zSort); for (int i = 0; i < positions.size(); i++) { glm::vec3 pos = (textured) ? positions[i] : _particlePositions[i];