Skip to content

Commit 1ed3e5b

Browse files
Alpha premultiplied backbuffer Windows (#429)
* Alpha premultiplied backbuffer Windows * submodule update
1 parent 3afe4b8 commit 1ed3e5b

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed
Submodule BabylonNative updated 49 files

Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ namespace winrt::BabylonReactNative::implementation {
183183
if (propertyName == "isTransparent")
184184
{
185185
bool isTransparent = propertyValue.AsBoolean();
186-
this->CompositeMode(isTransparent ? ElementCompositeMode::MinBlend : ElementCompositeMode::Inherit);
186+
BabylonNative::UpdateAlphaPremultiplied(isTransparent);
187187
} else if (propertyName == "antiAliasing")
188188
{
189189
auto value = propertyValue.AsUInt8();

Modules/@babylonjs/react-native/shared/BabylonNative.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ namespace BabylonNative
8989
g_graphics->UpdateSize(width, height);
9090
}
9191
g_graphics->UpdateMSAA(mMSAAValue);
92+
g_graphics->UpdateAlphaPremultiplied(mAlphaPremultiplied);
9293

9394
g_graphics->EnableRendering();
9495
m_isRenderingEnabled = true;
@@ -117,6 +118,15 @@ namespace BabylonNative
117118
}
118119
}
119120

121+
void UpdateAlphaPremultiplied(bool enabled)
122+
{
123+
mAlphaPremultiplied = enabled;
124+
if (g_graphics)
125+
{
126+
g_graphics->UpdateAlphaPremultiplied(enabled);
127+
}
128+
}
129+
120130
void RenderView()
121131
{
122132
// If rendering has not been explicitly enabled, or has been explicitly disabled, then don't try to render.
@@ -236,6 +246,7 @@ namespace BabylonNative
236246

237247
std::shared_ptr<bool> m_isXRActive{};
238248
uint8_t mMSAAValue{};
249+
bool mAlphaPremultiplied{};
239250
};
240251

241252
namespace
@@ -284,6 +295,18 @@ namespace BabylonNative
284295
}
285296
}
286297

298+
void UpdateAlphaPremultiplied(bool enabled)
299+
{
300+
if (auto nativeModule{ g_nativeModule.lock() })
301+
{
302+
nativeModule->UpdateAlphaPremultiplied(enabled);
303+
}
304+
else
305+
{
306+
throw std::runtime_error{ "UpdateAlphaPremultiplied must not be called before Initialize." };
307+
}
308+
}
309+
287310
void RenderView()
288311
{
289312
if (auto nativeModule{ g_nativeModule.lock() })

Modules/@babylonjs/react-native/shared/BabylonNative.h

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace BabylonNative
2929

3030
void UpdateView(WindowType window, size_t width, size_t height);
3131
void UpdateMSAA(uint8_t value);
32+
void UpdateAlphaPremultiplied(bool enabled);
3233

3334
void RenderView();
3435
void ResetView();

0 commit comments

Comments
 (0)