diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 68567372e2..005252672d 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -211,9 +211,12 @@ void RenderableParticleEffectEntityItem::updateRenderItem() { _vertices.clear(); // build vertices from particle positions and radiuses - const glm::vec3 up = frustum->getUp(); - const glm::vec3 right = frustum->getRight(); + glm::vec3 frustumPosition = frustum->getPosition(); for (auto&& particle : particleDetails) { + glm::vec3 particleDirection = particle.position - frustumPosition; + glm::vec3 right = glm::normalize(glm::cross(glm::vec3(0.0f, 1.0f, 0.0f), particleDirection)); + glm::vec3 up = glm::normalize(glm::cross(right, particleDirection)); + glm::vec3 upOffset = up * particle.radius; glm::vec3 rightOffset = right * particle.radius; // generate corners of quad aligned to face the camera.