Skip to content

Commit

Permalink
Update shaders if texture parameters have changed
Browse files Browse the repository at this point in the history
  • Loading branch information
KOPRajs committed Apr 10, 2024
1 parent b329dbd commit e0eb7bf
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ CRPBaseRenderer::CRPBaseRenderer(const CRenderSettings& renderSettings,
: m_context(context),
m_bufferPool(std::move(bufferPool)),
m_renderSettings(renderSettings),
m_shadersNeedUpdate(true),
m_bShadersNeedUpdate(true),
m_bUseShaderPreset(false)
{
m_bufferPool->RegisterRenderer(this);
Expand Down Expand Up @@ -157,7 +157,7 @@ void CRPBaseRenderer::SetShaderPreset(const std::string& presetPath)
if (presetPath != m_renderSettings.VideoSettings().GetShaderPreset())
{
m_renderSettings.VideoSettings().SetShaderPreset(presetPath);
m_shadersNeedUpdate = true;
m_bShadersNeedUpdate = true;
}
}

Expand All @@ -180,6 +180,11 @@ void CRPBaseRenderer::ManageRenderArea(const IRenderBuffer& renderBuffer)
const unsigned int rotationDegCCW =
(sourceRotationDegCCW + m_renderSettings.VideoSettings().GetRenderRotation()) % 360;

// Check if texture parameters have changed
if (sourceWidth != m_sourceRect.Width() || sourceHeight != m_sourceRect.Height()) {
m_bShadersNeedUpdate = true;
}

// Get screen parameters
float screenWidth;
float screenHeight;
Expand Down Expand Up @@ -245,7 +250,7 @@ void CRPBaseRenderer::MarkDirty()
*/
void CRPBaseRenderer::Updateshaders()
{
if (m_shadersNeedUpdate)
if (m_bShadersNeedUpdate)
{
if (m_shaderPreset)
{
Expand All @@ -263,7 +268,7 @@ void CRPBaseRenderer::Updateshaders()
m_bUseShaderPreset =
m_shaderPreset->SetShaderPreset(m_renderSettings.VideoSettings().GetShaderPreset());
}
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class CRPBaseRenderer
void Updateshaders();
std::unique_ptr<SHADER::IShaderPreset> m_shaderPreset;

bool m_shadersNeedUpdate;
bool m_bShadersNeedUpdate;
bool m_bUseShaderPreset;

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ void CRPRendererDMA::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ void CRPRendererOpenGL::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ void CRPRendererOpenGLES::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ void CRPWinRenderer::Render(CD3DTexture& target)
m_targetTexture.SetTexture(target);
if (!m_shaderPreset->RenderUpdate(destPoints, renderBufferTarget, &m_targetTexture))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down

0 comments on commit e0eb7bf

Please sign in to comment.