diff --git a/kraken/nodes/KRParticleSystemNewtonian.cpp b/kraken/nodes/KRParticleSystemNewtonian.cpp index 273da46..ce6a6bf 100755 --- a/kraken/nodes/KRParticleSystemNewtonian.cpp +++ b/kraken/nodes/KRParticleSystemNewtonian.cpp @@ -107,7 +107,6 @@ void KRParticleSystemNewtonian::render(RenderInfo& ri) info.modelFormat = ModelFormat::KRENGINE_MODEL_FORMAT_TRIANGLES; KRPipeline* pParticleShader = m_pContext->getPipelineManager()->getPipeline(*ri.surface, info); - pParticleShader->setPushConstant(ShaderValue::dust_particle_size, 1.0f); pParticleShader->bind(ri, getModelMatrix()); m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &m_pContext->getMeshManager()->KRENGINE_VBO_DATA_RANDOM_PARTICLES, 1.0f); @@ -117,3 +116,13 @@ void KRParticleSystemNewtonian::render(RenderInfo& ri) } ri.reflectedObjects.pop_back(); } + +bool KRParticleSystemNewtonian::getShaderValue(ShaderValue value, float* output) const +{ + switch (value) { + case ShaderValue::dust_particle_size: + *output = 1.0f; + return true; + } + return KRParticleSystem::getShaderValue(value, output); +} \ No newline at end of file diff --git a/kraken/nodes/KRParticleSystemNewtonian.h b/kraken/nodes/KRParticleSystemNewtonian.h index 930e2f1..aa191c3 100755 --- a/kraken/nodes/KRParticleSystemNewtonian.h +++ b/kraken/nodes/KRParticleSystemNewtonian.h @@ -51,6 +51,8 @@ public: virtual void physicsUpdate(float deltaTime); virtual bool hasPhysics(); +protected: + bool getShaderValue(ShaderValue value, float* output) const override; private: float m_particlesAbsoluteTime; }; diff --git a/kraken/nodes/KRPointLight.cpp b/kraken/nodes/KRPointLight.cpp index 21029d9..4cb66db 100755 --- a/kraken/nodes/KRPointLight.cpp +++ b/kraken/nodes/KRPointLight.cpp @@ -142,6 +142,7 @@ bool KRPointLight::getShaderValue(ShaderValue value, float* output) const { return KRLight::getShaderValue(value, output); } + bool KRPointLight::getShaderValue(ShaderValue value, hydra::Vector3* output) const { return KRLight::getShaderValue(value, output); diff --git a/kraken/nodes/KRSprite.cpp b/kraken/nodes/KRSprite.cpp index 1deb30e..2aecff7 100755 --- a/kraken/nodes/KRSprite.cpp +++ b/kraken/nodes/KRSprite.cpp @@ -118,6 +118,7 @@ AABB KRSprite::getBounds() void KRSprite::render(RenderInfo& ri) { + ri.reflectedObjects.push_back(this); if (m_lod_visible >= LOD_VISIBILITY_PRESTREAM && ri.renderPass->getType() == RenderPassType::RENDER_PASS_PRESTREAM) { // Pre-stream sprites, even if the alpha is zero @@ -165,7 +166,6 @@ void KRSprite::render(RenderInfo& ri) info.modelFormat = ModelFormat::KRENGINE_MODEL_FORMAT_STRIP; KRPipeline* pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - pShader->setPushConstant(ShaderValue::material_alpha, m_spriteAlpha); pShader->setImageBinding("diffuseTexture", m_pSpriteTexture, m_pContext->getSamplerManager()->DEFAULT_CLAMPED_SAMPLER); pShader->bind(ri, getModelMatrix()); @@ -174,4 +174,15 @@ void KRSprite::render(RenderInfo& ri) } } } + ri.reflectedObjects.pop_back(); } + +bool KRSprite::getShaderValue(ShaderValue value, float* output) const +{ + switch (value) { + case ShaderValue::material_alpha: + *output = m_spriteAlpha; + return true; + } + return KRNode::getShaderValue(value, output); +} \ No newline at end of file diff --git a/kraken/nodes/KRSprite.h b/kraken/nodes/KRSprite.h index 232656a..4071c0d 100755 --- a/kraken/nodes/KRSprite.h +++ b/kraken/nodes/KRSprite.h @@ -57,6 +57,8 @@ public: protected: + bool getShaderValue(ShaderValue value, float* output) const override; + std::string m_spriteTexture; KRTexture* m_pSpriteTexture; float m_spriteAlpha;