1111#include < array>
1212#include " Draw.h"
1313#include " glad/gl.h"
14+ #include " Shader.h"
15+ #include " PresetMan.h"
1416
1517using namespace RTE ;
1618
@@ -239,17 +241,20 @@ void PrimitiveMan::DrawPrimitives(int player, BITMAP* targetBitmap, const Vector
239241 glBlendBarrierKHR ();
240242 rlEnableAdvancedColorBlend ();
241243 }
244+ const Shader* background = dynamic_cast <const Shader*>(g_PresetMan.GetEntityPreset (" Shader" , " Background" ));
242245 rlEnableColorBlend ();
243246 for (const std::unique_ptr<GraphicalPrimitive>& primitive: m_ScheduledPrimitives) {
244247 if (int playerToDrawFor = primitive->m_Player ; playerToDrawFor == player || playerToDrawFor == -1 ) {
245248 rlDrawRenderBatchActive ();
246249 if (DrawBlendMode blendMode = primitive->m_BlendMode ; blendMode > DrawBlendMode::NoBlend) {
247250 if (const std::array<int , 4 >& blendAmounts = primitive->m_ColorChannelBlendAmounts ; blendMode != lastBlendMode || blendAmounts != lastBlendAmounts) {
251+ if (lastBlendMode == BlendDissolve) {
252+ background->Begin ();
253+ }
248254 rlEnableShader (rlGetShaderCurrent ());
249255 g_FrameMan.SetBlendMode (blendMode);
250256 GLint colorUniform = glGetUniformLocation (rlGetShaderCurrent (), " rteColor" );
251257 glUniform4f (colorUniform, blendAmounts[0 ] / static_cast <float >(MaxBlend), blendAmounts[1 ] / static_cast <float >(MaxBlend), blendAmounts[2 ] / static_cast <float >(MaxBlend), blendAmounts[3 ] / static_cast <float >(MaxBlend));
252- // g_FrameMan.SetColorTable(blendMode, blendAmounts);
253258 lastBlendMode = blendMode;
254259 lastBlendAmounts = blendAmounts;
255260 }
@@ -272,7 +277,7 @@ void PrimitiveMan::DrawPrimitives(int player, BITMAP* targetBitmap, const Vector
272277 rlDisableAdvancedColorBlend ();
273278 }
274279 rlSetBlendMode (RL_BLEND_ALPHA);
275- rlEnableShader (currentShader );
280+ background-> Begin ( );
276281 GLint colorUniform = glGetUniformLocation (rlGetShaderCurrent (), " rteColor" );
277282 glUniform4f (colorUniform, 1 .0f , 1 .0f , 1 .0f , 1 .0f );
278283 rlZDepth (c_DefaultDrawDepth);
0 commit comments