From b7e4415b16064534bf25baf6b47289b6a220e9ac Mon Sep 17 00:00:00 2001 From: kearwood Date: Wed, 6 Jul 2022 21:59:50 -0700 Subject: [PATCH] Inlined, removed wrapper function KRPipelineManager::selectPipeline --- kraken/KRCamera.cpp | 6 ++-- kraken/KRCollider.cpp | 8 ++--- kraken/KRDirectionalLight.cpp | 17 +++++----- kraken/KRLight.cpp | 47 ++++++++++++++-------------- kraken/KRMaterial.cpp | 5 +-- kraken/KRParticleSystemNewtonian.cpp | 16 +++++----- kraken/KRPipelineManager.cpp | 9 ------ kraken/KRPipelineManager.h | 1 - kraken/KRPointLight.cpp | 32 +++++++++---------- kraken/KRReverbZone.cpp | 15 +++++---- kraken/KRSprite.cpp | 14 ++++----- 11 files changed, 77 insertions(+), 93 deletions(-) diff --git a/kraken/KRCamera.cpp b/kraken/KRCamera.cpp index 72bb005..0412ee1 100755 --- a/kraken/KRCamera.cpp +++ b/kraken/KRCamera.cpp @@ -567,7 +567,9 @@ void KRCamera::renderPost(VkCommandBuffer& commandBuffer, KRSurface& surface) KRPipeline *postShader = m_pContext->getPipelineManager()->getPipeline(surface, info); Vector3 rim_color; - getContext().getPipelineManager()->selectPipeline(surface, *this, postShader, m_viewport, Matrix4(), nullptr, nullptr, nullptr, 0, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, rim_color, 0.0f, m_fade_color); + + + postShader->bind(*this, m_viewport, Matrix4(), nullptr, nullptr, nullptr, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, rim_color, 0.0f, m_fade_color); m_pContext->getTextureManager()->selectTexture(GL_TEXTURE_2D, 0, compositeDepthTexture); m_pContext->getTextureManager()->selectTexture(GL_TEXTURE_2D, 1, compositeColorTexture); @@ -743,7 +745,7 @@ void KRCamera::renderPost(VkCommandBuffer& commandBuffer, KRSurface& surface) info.rasterMode = PipelineInfo::RasterMode::kAlphaBlendNoTest; info.cullMode = PipelineInfo::CullMode::kCullNone; KRPipeline *fontShader = m_pContext->getPipelineManager()->getPipeline(surface, info); - getContext().getPipelineManager()->selectPipeline(surface, *this, fontShader, m_viewport, Matrix4(), nullptr, nullptr, nullptr, 0, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, Vector3::Zero(), 0.0f, Vector4::Zero()); + fontShader->bind(*this, m_viewport, Matrix4(), nullptr, nullptr, nullptr, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, Vector3::Zero(), 0.0f, Vector4::Zero()); m_pContext->getTextureManager()->selectTexture(0, m_pContext->getTextureManager()->getTexture("font"), 0.0f, KRTexture::TEXTURE_USAGE_UI); diff --git a/kraken/KRCollider.cpp b/kraken/KRCollider.cpp index 1deb81b..059240c 100755 --- a/kraken/KRCollider.cpp +++ b/kraken/KRCollider.cpp @@ -215,11 +215,11 @@ void KRCollider::render(RenderInfo& ri) info.rasterMode = PipelineInfo::RasterMode::kAdditive; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); + + pShader->bind(*ri.camera, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { - for(int i=0; i < m_models[0]->getSubmeshCount(); i++) { - m_models[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f); - } + for(int i=0; i < m_models[0]->getSubmeshCount(); i++) { + m_models[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f); } GL_POP_GROUP_MARKER; diff --git a/kraken/KRDirectionalLight.cpp b/kraken/KRDirectionalLight.cpp index 92e2ff2..dbb7b71 100755 --- a/kraken/KRDirectionalLight.cpp +++ b/kraken/KRDirectionalLight.cpp @@ -152,16 +152,15 @@ void KRDirectionalLight::render(RenderInfo& ri) { info.modelFormat = KRMesh::model_format_t::KRENGINE_MODEL_FORMAT_STRIP; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), nullptr, &this_light, nullptr, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { + pShader->bind(*ri.camera, ri.viewport, getModelMatrix(), nullptr, &this_light, nullptr, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); + + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DIRECTION_VIEW_SPACE, light_direction_view_space); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DIRECTION_VIEW_SPACE, light_direction_view_space); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f); - - // Render a full screen quad - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &vertices, 1.0f); - vkCmdDraw(ri.commandBuffer, 4, 1, 0, 0); - } + // Render a full screen quad + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &vertices, 1.0f); + vkCmdDraw(ri.commandBuffer, 4, 1, 0, 0); } } diff --git a/kraken/KRLight.cpp b/kraken/KRLight.cpp index a91dff7..289089d 100755 --- a/kraken/KRLight.cpp +++ b/kraken/KRLight.cpp @@ -318,25 +318,25 @@ void KRLight::render(RenderInfo& ri) { info.cullMode = PipelineInfo::CullMode::kCullNone; KRPipeline *pFogShader = m_pContext->getPipelineManager()->getPipeline(*ri.surface, info); + + pFogShader->bind(*ri.camera, ri.viewport, Matrix4(), &this_point_light, &this_directional_light, &this_spot_light, KRNode::RENDER_PASS_VOLUMETRIC_EFFECTS_ADDITIVE, Vector3::Zero(), 0.0f, Vector4::Zero()); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pFogShader, ri.viewport, Matrix4(), &this_point_light, &this_directional_light, &this_spot_light, 0, KRNode::RENDER_PASS_VOLUMETRIC_EFFECTS_ADDITIVE, Vector3::Zero(), 0.0f, Vector4::Zero())) { - int slice_count = (int)(ri.camera->settings.volumetric_environment_quality * 495.0) + 5; + int slice_count = (int)(ri.camera->settings.volumetric_environment_quality * 495.0) + 5; - float slice_near = -ri.camera->settings.getPerspectiveNearZ(); - float slice_far = -ri.camera->settings.volumetric_environment_max_distance; - float slice_spacing = (slice_far - slice_near) / slice_count; + float slice_near = -ri.camera->settings.getPerspectiveNearZ(); + float slice_far = -ri.camera->settings.volumetric_environment_max_distance; + float slice_spacing = (slice_far - slice_near) / slice_count; - pFogShader->setUniform(KRPipeline::KRENGINE_UNIFORM_SLICE_DEPTH_SCALE, Vector2::Create(slice_near, slice_spacing)); - pFogShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, (m_color * ri.camera->settings.volumetric_environment_intensity * m_intensity * -slice_spacing / 1000.0f)); + pFogShader->setUniform(KRPipeline::KRENGINE_UNIFORM_SLICE_DEPTH_SCALE, Vector2::Create(slice_near, slice_spacing)); + pFogShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, (m_color * ri.camera->settings.volumetric_environment_intensity * m_intensity * -slice_spacing / 1000.0f)); - KRDataBlock index_data; - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, m_pContext->getMeshManager()->getVolumetricLightingVertexes(), index_data, (1 << KRMesh::KRENGINE_ATTRIB_VERTEX), true, 1.0f + KRDataBlock index_data; + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, m_pContext->getMeshManager()->getVolumetricLightingVertexes(), index_data, (1 << KRMesh::KRENGINE_ATTRIB_VERTEX), true, 1.0f #if KRENGINE_DEBUG_GPU_LABELS - , "Participating Media" + , "Participating Media" #endif - ); - GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, slice_count*6)); - } + ); + GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, slice_count*6)); } @@ -417,13 +417,13 @@ void KRLight::render(RenderInfo& ri) { info.cullMode = PipelineInfo::CullMode::kCullNone; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_MATERIAL_ALPHA, 1.0f); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_FLARE_SIZE, m_flareSize); - m_pContext->getTextureManager()->selectTexture(0, m_pFlareTexture, 0.0f, KRTexture::TEXTURE_USAGE_LIGHT_FLARE); - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &getContext().getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f); - GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); - } + pShader->bind(*ri.camera, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); + + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_MATERIAL_ALPHA, 1.0f); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_FLARE_SIZE, m_flareSize); + m_pContext->getTextureManager()->selectTexture(0, m_pFlareTexture, 0.0f, KRTexture::TEXTURE_USAGE_LIGHT_FLARE); + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &getContext().getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f); + GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); } } } @@ -525,12 +525,11 @@ void KRLight::renderShadowBuffers(RenderInfo& ri) info.shader_name = &shader_name; info.pCamera = ri.camera; info.renderPass = KRNode::RENDER_PASS_FORWARD_TRANSPARENT; - info.rasterMode = PipelineInfo::RasterMode::kOpaqueLessTest; + info.rasterMode = PipelineInfo::RasterMode::kOpaqueLessTest; // TODO - This is sub-optimal. Evaluate increasing depth buffer resolution instead of disabling depth test. info.cullMode = PipelineInfo::CullMode::kCullNone; // Disabling culling, which eliminates some self-cast shadow artifacts KRPipeline *shadowShader = m_pContext->getPipelineManager()->getPipeline(*ri.surface, info); - - getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, shadowShader, m_shadowViewports[iShadow], Matrix4(), nullptr, nullptr, nullptr, 0, KRNode::RENDER_PASS_SHADOWMAP, Vector3::Zero(), 0.0f, Vector4::Zero()); - + + shadowShader->bind(*ri.camera, m_shadowViewports[iShadow], Matrix4(), nullptr, nullptr, nullptr, KRNode::RENDER_PASS_SHADOWMAP, Vector3::Zero(), 0.0f, Vector4::Zero()); getScene().render(ri.commandBuffer, *ri.surface, ri.camera, m_shadowViewports[iShadow].getVisibleBounds(), m_shadowViewports[iShadow], KRNode::RENDER_PASS_SHADOWMAP, true); } diff --git a/kraken/KRMaterial.cpp b/kraken/KRMaterial.cpp index 84799ea..d7bd422 100755 --- a/kraken/KRMaterial.cpp +++ b/kraken/KRMaterial.cpp @@ -349,10 +349,7 @@ bool KRMaterial::bind(const KRNode::RenderInfo& ri, const std::vector info.renderPass = ri.renderPass; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - Vector4 fade_color; - if(!getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, matModel, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, rim_color, rim_power, fade_color)) { - return false; - } + pShader->bind(*ri.camera, ri.viewport, matModel, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, rim_color, rim_power, Vector4::Zero()); // Bind bones if(pShader->m_uniforms[KRPipeline::KRENGINE_UNIFORM_BONE_TRANSFORMS] != -1) { diff --git a/kraken/KRParticleSystemNewtonian.cpp b/kraken/KRParticleSystemNewtonian.cpp index 1532cca..7f55376 100755 --- a/kraken/KRParticleSystemNewtonian.cpp +++ b/kraken/KRParticleSystemNewtonian.cpp @@ -105,19 +105,17 @@ void KRParticleSystemNewtonian::render(RenderInfo& ri) { KRPipeline *pParticleShader = m_pContext->getPipelineManager()->getPipeline(*ri.surface, info); - // Vector3 rim_color; Vector4 fade_color; - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pParticleShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { - pParticleShader->setUniform(KRPipeline::KRENGINE_UNIFORM_FLARE_SIZE, 1.0f); + pParticleShader->bind(*ri.camera, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); + pParticleShader->setUniform(KRPipeline::KRENGINE_UNIFORM_FLARE_SIZE, 1.0f); - KRDataBlock index_data; - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, m_pContext->getMeshManager()->getRandomParticles(), index_data, (1 << KRMesh::KRENGINE_ATTRIB_VERTEX) | (1 << KRMesh::KRENGINE_ATTRIB_TEXUVA), false, 1.0f + KRDataBlock index_data; + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, m_pContext->getMeshManager()->getRandomParticles(), index_data, (1 << KRMesh::KRENGINE_ATTRIB_VERTEX) | (1 << KRMesh::KRENGINE_ATTRIB_TEXUVA), false, 1.0f #if KRENGINE_DEBUG_GPU_LABELS - , "Newtonian Particles" + , "Newtonian Particles" #endif - ); - vkCmdDraw(ri.commandBuffer, particle_count * 3, 1, 0, 0); - } + ); + vkCmdDraw(ri.commandBuffer, particle_count * 3, 1, 0, 0); } } } diff --git a/kraken/KRPipelineManager.cpp b/kraken/KRPipelineManager.cpp index ea6b7bb..93f6736 100644 --- a/kraken/KRPipelineManager.cpp +++ b/kraken/KRPipelineManager.cpp @@ -294,15 +294,6 @@ KRPipeline *KRPipelineManager::getPipeline(KRSurface& surface, const PipelineInf } */ -bool KRPipelineManager::selectPipeline(KRSurface& surface, KRCamera &camera, KRPipeline *pPipeline, const KRViewport &viewport, const Matrix4 &matModel, const std::vector *point_lights, const std::vector *directional_lights, const std::vector *spot_lights, int bone_count, const KRNode::RenderPass &renderPass, const Vector3 &rim_color, float rim_power, const Vector4 &fade_color) -{ - if(pPipeline) { - return pPipeline->bind(camera, viewport, matModel, point_lights, directional_lights, spot_lights, renderPass, rim_color, rim_power, fade_color); - } else { - return false; - } -} - size_t KRPipelineManager::getPipelineHandlesUsed() { return m_pipelines.size(); } diff --git a/kraken/KRPipelineManager.h b/kraken/KRPipelineManager.h index 112d3dd..49484c7 100644 --- a/kraken/KRPipelineManager.h +++ b/kraken/KRPipelineManager.h @@ -58,7 +58,6 @@ public: KRPipeline* get(const char* szKey); KRPipeline* getPipeline(KRSurface& surface, const PipelineInfo& info); - bool selectPipeline(KRSurface& surface, KRCamera &camera, KRPipeline *pPipeline, const KRViewport &viewport, const Matrix4 &matModel, const std::vector *point_lights, const std::vector *directional_lights, const std::vector *spot_lights, int bone_count, const KRNode::RenderPass &renderPass, const Vector3 &rim_color, float rim_power, const Vector4 &fade_color); size_t getPipelineHandlesUsed(); diff --git a/kraken/KRPointLight.cpp b/kraken/KRPointLight.cpp index fdf051f..1ce4622 100755 --- a/kraken/KRPointLight.cpp +++ b/kraken/KRPointLight.cpp @@ -110,26 +110,26 @@ void KRPointLight::render(RenderInfo& ri) } KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &this_light, nullptr, nullptr, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { + pShader->bind(*ri.camera, ri.viewport, sphereModelMatrix, &this_light, nullptr, nullptr, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DECAY_START, getDecayStart()); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_CUTOFF, KRLIGHT_MIN_INFLUENCE); - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_POSITION, light_position); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DECAY_START, getDecayStart()); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_CUTOFF, KRLIGHT_MIN_INFLUENCE); + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_POSITION, light_position); - if(bInsideLight) { - // Render a full screen quad - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &m_pContext->getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f); - GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); - } else { - // Render sphere of light's influence - generateMesh(); + if(bInsideLight) { + // Render a full screen quad + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &m_pContext->getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f); + GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); + } else { + // Render sphere of light's influence + generateMesh(); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, m_sphereVertices)); - GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, m_cVertices)); - } + GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, m_sphereVertices)); + GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, m_cVertices)); } + } } } diff --git a/kraken/KRReverbZone.cpp b/kraken/KRReverbZone.cpp index eefd9c2..c04eb07 100755 --- a/kraken/KRReverbZone.cpp +++ b/kraken/KRReverbZone.cpp @@ -138,16 +138,15 @@ void KRReverbZone::render(RenderInfo& ri) info.rasterMode = PipelineInfo::RasterMode::kAlphaBlend; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - info.rasterMode = PipelineInfo::RasterMode::kAdditive; - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { - std::vector sphereModels = getContext().getMeshManager()->getModel("__sphere"); - if(sphereModels.size()) { - for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) { - sphereModels[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f); - } - } + pShader->bind(*ri.camera, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); + + std::vector sphereModels = getContext().getMeshManager()->getModel("__sphere"); + if(sphereModels.size()) { + for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) { + sphereModels[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f); + } } } } diff --git a/kraken/KRSprite.cpp b/kraken/KRSprite.cpp index 2a9c587..32492c9 100755 --- a/kraken/KRSprite.cpp +++ b/kraken/KRSprite.cpp @@ -158,14 +158,14 @@ void KRSprite::render(RenderInfo& ri) { info.modelFormat = KRMesh::model_format_t::KRENGINE_MODEL_FORMAT_STRIP; KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info); - if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) { - pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_MATERIAL_ALPHA, m_spriteAlpha); - m_pContext->getTextureManager()->selectTexture(0, m_pSpriteTexture, 0.0f, KRTexture::TEXTURE_USAGE_SPRITE); - m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &vertices, 1.0f); - vkCmdDraw(ri.commandBuffer, 4, 1, 0, 0); - } + + pShader->bind(*ri.camera, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero()); + + pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_MATERIAL_ALPHA, m_spriteAlpha); + m_pContext->getTextureManager()->selectTexture(0, m_pSpriteTexture, 0.0f, KRTexture::TEXTURE_USAGE_SPRITE); + m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &vertices, 1.0f); + vkCmdDraw(ri.commandBuffer, 4, 1, 0, 0); } } - } }