diff --git a/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative b/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative index d042c499e..7c6d12d0e 160000 --- a/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative +++ b/Modules/@babylonjs/react-native-iosandroid/submodules/BabylonNative @@ -1 +1 @@ -Subproject commit d042c499e3b42aa16be668a919304b6bbe6490e6 +Subproject commit 7c6d12d0e13052ae1cc95c0fc0ca54d117432559 diff --git a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp index 133a0d4d4..2ccdb2c16 100644 --- a/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp +++ b/Modules/@babylonjs/react-native-windows/windows/BabylonReactNative/EngineView.cpp @@ -183,7 +183,7 @@ namespace winrt::BabylonReactNative::implementation { if (propertyName == "isTransparent") { bool isTransparent = propertyValue.AsBoolean(); - this->CompositeMode(isTransparent ? ElementCompositeMode::MinBlend : ElementCompositeMode::Inherit); + BabylonNative::UpdateAlphaPremultiplied(isTransparent); } else if (propertyName == "antiAliasing") { auto value = propertyValue.AsUInt8(); diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp index 7440f6220..b6a5cbb01 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.cpp +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.cpp @@ -89,6 +89,7 @@ namespace BabylonNative g_graphics->UpdateSize(width, height); } g_graphics->UpdateMSAA(mMSAAValue); + g_graphics->UpdateAlphaPremultiplied(mAlphaPremultiplied); g_graphics->EnableRendering(); m_isRenderingEnabled = true; @@ -117,6 +118,15 @@ namespace BabylonNative } } + void UpdateAlphaPremultiplied(bool enabled) + { + mAlphaPremultiplied = enabled; + if (g_graphics) + { + g_graphics->UpdateAlphaPremultiplied(enabled); + } + } + void RenderView() { // If rendering has not been explicitly enabled, or has been explicitly disabled, then don't try to render. @@ -236,6 +246,7 @@ namespace BabylonNative std::shared_ptr m_isXRActive{}; uint8_t mMSAAValue{}; + bool mAlphaPremultiplied{}; }; namespace @@ -284,6 +295,18 @@ namespace BabylonNative } } + void UpdateAlphaPremultiplied(bool enabled) + { + if (auto nativeModule{ g_nativeModule.lock() }) + { + nativeModule->UpdateAlphaPremultiplied(enabled); + } + else + { + throw std::runtime_error{ "UpdateAlphaPremultiplied must not be called before Initialize." }; + } + } + void RenderView() { if (auto nativeModule{ g_nativeModule.lock() }) diff --git a/Modules/@babylonjs/react-native/shared/BabylonNative.h b/Modules/@babylonjs/react-native/shared/BabylonNative.h index a68683d65..3e1539709 100644 --- a/Modules/@babylonjs/react-native/shared/BabylonNative.h +++ b/Modules/@babylonjs/react-native/shared/BabylonNative.h @@ -29,6 +29,7 @@ namespace BabylonNative void UpdateView(WindowType window, size_t width, size_t height); void UpdateMSAA(uint8_t value); + void UpdateAlphaPremultiplied(bool enabled); void RenderView(); void ResetView();