Skip to content

Commit b36caad

Browse files
alexchuberDebugmi
andauthored
Playground: Upgrade BJS and add glTF serializer (#1565)
This PR adds a quick test for the glTF serializer in the Playground, updating BJS along the way. - Upgrade BJS to latest (8.36.1) - Fix installation test failure introduced in #1564 - Add the Blob polyfill, NativeEncoding plugin, and babylonjs-serializers package throughout the Playground app - Port a visualization test for the glTF serializer from BJS - Note: I would port over more, but the rest happen to use the File API, which is not yet supported in Native. --------- Co-authored-by: Demi <213505693+Debugmi@users.noreply.github.com>
1 parent bb511f3 commit b36caad

File tree

16 files changed

+123
-43
lines changed

16 files changed

+123
-43
lines changed

Apps/Playground/Android/BabylonNative/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ target_link_libraries(BabylonNativeJNI
2525
-lz
2626
AndroidExtensions
2727
AppRuntime
28+
Blob
2829
Canvas
2930
Console
3031
GraphicsDevice
3132
NativeCamera
33+
NativeEncoding
3234
NativeEngine
3335
NativeInput
3436
NativeOptimizations

Apps/Playground/Android/BabylonNative/src/main/cpp/BabylonNativeJNI.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
#include <Babylon/AppRuntime.h>
1414
#include <Babylon/Graphics/Device.h>
1515
#include <Babylon/ScriptLoader.h>
16+
#include <Babylon/Plugins/NativeEncoding.h>
1617
#include <Babylon/Plugins/NativeEngine.h>
1718
#include <Babylon/Plugins/NativeInput.h>
1819
#include <Babylon/Plugins/NativeXr.h>
1920
#include <Babylon/Plugins/NativeCamera.h>
2021
#include <Babylon/Plugins/NativeOptimizations.h>
22+
#include <Babylon/Polyfills/Blob.h>
2123
#include <Babylon/Polyfills/Console.h>
2224
#include <Babylon/Polyfills/Window.h>
2325
#include <Babylon/Polyfills/XMLHttpRequest.h>
@@ -98,6 +100,8 @@ extern "C"
98100
{
99101
device->AddToJavaScript(env);
100102

103+
Babylon::Polyfills::Blob::Initialize(env);
104+
101105
Babylon::Polyfills::Console::Initialize(env, [](const char* message, Babylon::Polyfills::Console::LogLevel level)
102106
{
103107
switch (level)
@@ -114,6 +118,7 @@ extern "C"
114118
}
115119
});
116120

121+
Babylon::Plugins::NativeEncoding::Initialize(env);
117122
Babylon::Plugins::NativeEngine::Initialize(env);
118123
Babylon::Plugins::NativeOptimizations::Initialize(env);
119124

@@ -136,6 +141,7 @@ extern "C"
136141
scriptLoader->LoadScript("app:///Scripts/babylonjs.loaders.js");
137142
scriptLoader->LoadScript("app:///Scripts/babylonjs.materials.js");
138143
scriptLoader->LoadScript("app:///Scripts/babylon.gui.js");
144+
scriptLoader->LoadScript("app:///Scripts/babylonjs.serializers.js");
139145
}
140146
}
141147

Apps/Playground/Android/app/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@ task copyFiles {
116116
into 'src/main/assets/Scripts'
117117
}
118118
copy
119+
{
120+
from '../../../node_modules/babylonjs-serializers'
121+
include "babylonjs.serializers.js"
122+
into 'src/main/assets/Scripts'
123+
}
124+
copy
119125
{
120126
from '../../../Dependencies'
121127
include "*.js"

Apps/Playground/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ set(BABYLON_SCRIPTS
44
"../node_modules/babylonjs-loaders/babylonjs.loaders.js"
55
"../node_modules/babylonjs/babylon.max.js"
66
"../node_modules/babylonjs-materials/babylonjs.materials.js"
7-
"../node_modules/babylonjs-gui/babylon.gui.js")
7+
"../node_modules/babylonjs-gui/babylon.gui.js"
8+
"../node_modules/babylonjs-serializers/babylonjs.serializers.js")
89

910
set(DEPENDENCIES
1011
"../Dependencies/ammo.js"
@@ -126,11 +127,13 @@ target_include_directories(Playground PRIVATE "Source" ".")
126127

127128
target_link_libraries(Playground
128129
PRIVATE AppRuntime
130+
PRIVATE Blob
129131
PRIVATE Canvas
130132
PRIVATE Console
131133
PRIVATE ExternalTexture
132134
PRIVATE GraphicsDevice
133135
PRIVATE NativeCapture
136+
PRIVATE NativeEncoding
134137
PRIVATE NativeEngine
135138
PRIVATE NativeInput
136139
PRIVATE NativeOptimizations
9.34 KB
Loading

Apps/Playground/Scripts/config.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@
8888
"playgroundId": "#YG3BBF#2",
8989
"referenceImage": "glTFSheen.png"
9090
},
91+
{
92+
"title": "GLTF Serializer multimaterial with raw texture",
93+
"playgroundId": "#KU72PX",
94+
"referenceImage": "glTFSerializerMultimaterial.png"
95+
},
9196
{
9297
"title": "GLTF Extension KHR_materials_specular",
9398
"playgroundId": "#RNT7K4#9",

Apps/Playground/UWP/App.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
#include <Babylon/Graphics/Device.h>
44
#include <Babylon/ScriptLoader.h>
5+
#include <Babylon/Plugins/NativeEncoding.h>
56
#include <Babylon/Plugins/NativeEngine.h>
67
#include <Babylon/Plugins/NativeOptimizations.h>
8+
#include <Babylon/Polyfills/Blob.h>
79
#include <Babylon/Polyfills/Console.h>
810
#include <Babylon/Polyfills/Window.h>
911
#include <Babylon/Polyfills/XMLHttpRequest.h>
@@ -386,6 +388,8 @@ void App::RestartRuntime(Windows::Foundation::Rect bounds)
386388
m_runtime->Dispatch([this](Napi::Env env) {
387389
m_device->AddToJavaScript(env);
388390

391+
Babylon::Polyfills::Blob::Initialize(env);
392+
389393
Babylon::Polyfills::Console::Initialize(env, [](const char* message, auto) {
390394
OutputDebugStringA(message);
391395
});
@@ -396,6 +400,8 @@ void App::RestartRuntime(Windows::Foundation::Rect bounds)
396400

397401
Babylon::Polyfills::XMLHttpRequest::Initialize(env);
398402

403+
Babylon::Plugins::NativeEncoding::Initialize(env);
404+
399405
Babylon::Plugins::NativeEngine::Initialize(env);
400406

401407
Babylon::Plugins::NativeOptimizations::Initialize(env);
@@ -411,6 +417,7 @@ void App::RestartRuntime(Windows::Foundation::Rect bounds)
411417
loader.LoadScript("app:///Scripts/babylonjs.loaders.js");
412418
loader.LoadScript("app:///Scripts/babylonjs.materials.js");
413419
loader.LoadScript("app:///Scripts/babylon.gui.js");
420+
loader.LoadScript("app:///Scripts/babylonjs.serializers.js");
414421

415422
if (m_files == nullptr)
416423
{

Apps/Playground/Win32/App.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
#include <Babylon/Graphics/Device.h>
1616
#include <Babylon/ScriptLoader.h>
1717
#include <Babylon/Plugins/NativeCapture.h>
18+
#include <Babylon/Plugins/NativeEncoding.h>
1819
#include <Babylon/Plugins/NativeEngine.h>
1920
#include <Babylon/Plugins/NativeOptimizations.h>
2021
#include <Babylon/Plugins/NativeCamera.h>
2122
#include <Babylon/Plugins/NativeInput.h>
2223
#include <Babylon/Plugins/TestUtils.h>
24+
#include <Babylon/Polyfills/Blob.h>
2325
#include <Babylon/Polyfills/Console.h>
2426
#include <Babylon/Polyfills/Window.h>
2527
#include <Babylon/Polyfills/XMLHttpRequest.h>
@@ -167,6 +169,8 @@ namespace
167169
runtime->Dispatch([hWnd](Napi::Env env) {
168170
device->AddToJavaScript(env);
169171

172+
Babylon::Polyfills::Blob::Initialize(env);
173+
170174
Babylon::Polyfills::Console::Initialize(env, [](const char* message, Babylon::Polyfills::Console::LogLevel logLevel) {
171175
std::ostringstream ss{};
172176
ss << "[" << GetLogLevelString(logLevel) << "] " << message << std::endl;
@@ -182,6 +186,8 @@ namespace
182186

183187
nativeCanvas.emplace(Babylon::Polyfills::Canvas::Initialize(env));
184188

189+
Babylon::Plugins::NativeEncoding::Initialize(env);
190+
185191
Babylon::Plugins::NativeEngine::Initialize(env);
186192

187193
Babylon::Plugins::NativeOptimizations::Initialize(env);
@@ -204,6 +210,7 @@ namespace
204210
loader.LoadScript("app:///Scripts/babylonjs.materials.js");
205211
loader.LoadScript("app:///Scripts/babylon.gui.js");
206212
loader.LoadScript("app:///Scripts/meshwriter.min.js");
213+
loader.LoadScript("app:///Scripts/babylonjs.serializers.js");
207214

208215
std::vector<std::string> scripts = GetCommandLineArguments();
209216
if (scripts.empty())

Apps/Playground/X11/App.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
#include <Babylon/AppRuntime.h>
1212
#include <Babylon/Graphics/Device.h>
1313
#include <Babylon/ScriptLoader.h>
14+
#include <Babylon/Plugins/NativeEncoding.h>
1415
#include <Babylon/Plugins/NativeEngine.h>
1516
#include <Babylon/Plugins/NativeOptimizations.h>
1617
#include <Babylon/Plugins/NativeInput.h>
1718
#include <Babylon/Plugins/TestUtils.h>
19+
#include <Babylon/Polyfills/Blob.h>
1820
#include <Babylon/Polyfills/Console.h>
1921
#include <Babylon/Polyfills/Window.h>
2022
#include <Babylon/Polyfills/XMLHttpRequest.h>
@@ -70,6 +72,8 @@ namespace
7072
runtime.emplace();
7173

7274
runtime->Dispatch([window](Napi::Env env) {
75+
Babylon::Polyfills::Blob::Initialize(env);
76+
7377
Babylon::Polyfills::Console::Initialize(env, [](const char* message, auto) {
7478
printf("%s\n", message);
7579
fflush(stdout);
@@ -79,8 +83,11 @@ namespace
7983
Babylon::Polyfills::XMLHttpRequest::Initialize(env);
8084
nativeCanvas.emplace(Babylon::Polyfills::Canvas::Initialize(env));
8185

82-
// Initialize NativeEngine plugin.
8386
device->AddToJavaScript(env);
87+
88+
Babylon::Plugins::NativeEncoding::Initialize(env);
89+
90+
// Initialize NativeEngine plugin.
8491
Babylon::Plugins::NativeEngine::Initialize(env);
8592

8693
Babylon::Plugins::NativeOptimizations::Initialize(env);
@@ -98,6 +105,7 @@ namespace
98105
loader.LoadScript("app:///Scripts/babylonjs.loaders.js");
99106
loader.LoadScript("app:///Scripts/babylonjs.materials.js");
100107
loader.LoadScript("app:///Scripts/babylon.gui.js");
108+
loader.LoadScript("app:///Scripts/babylonjs.serializers.js");
101109

102110
if (scripts.empty())
103111
{

Apps/Playground/iOS/LibNativeBridge.mm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
#import <Babylon/Graphics/Device.h>
55
#import <Babylon/ScriptLoader.h>
66
#import <Babylon/Plugins/NativeCamera.h>
7+
#import <Babylon/Plugins/NativeEncoding.h>
78
#import <Babylon/Plugins/NativeEngine.h>
89
#import <Babylon/Plugins/NativeInput.h>
910
#import <Babylon/Plugins/NativeOptimizations.h>
1011
#import <Babylon/Plugins/NativeXr.h>
12+
#import <Babylon/Polyfills/Blob.h>
1113
#import <Babylon/Polyfills/Canvas.h>
1214
#import <Babylon/Polyfills/Console.h>
1315
#import <Babylon/Polyfills/Window.h>
@@ -74,6 +76,8 @@ - (void)init:(MTKView*)view screenScale:(float)inScreenScale width:(int)inWidth
7476
{
7577
device->AddToJavaScript(env);
7678

79+
Babylon::Polyfills::Blob::Initialize(env);
80+
7781
Babylon::Polyfills::Console::Initialize(env, [](const char* message, auto) {
7882
NSLog(@"%s", message);
7983
});
@@ -86,6 +90,8 @@ - (void)init:(MTKView*)view screenScale:(float)inScreenScale width:(int)inWidth
8690

8791
Babylon::Plugins::NativeCamera::Initialize(env);
8892

93+
Babylon::Plugins::NativeEncoding::Initialize(env);
94+
8995
Babylon::Plugins::NativeEngine::Initialize(env);
9096

9197
Babylon::Plugins::NativeOptimizations::Initialize(env);
@@ -104,6 +110,7 @@ - (void)init:(MTKView*)view screenScale:(float)inScreenScale width:(int)inWidth
104110
loader.LoadScript("app:///Scripts/babylonjs.loaders.js");
105111
loader.LoadScript("app:///Scripts/babylonjs.materials.js");
106112
loader.LoadScript("app:///Scripts/babylon.gui.js");
113+
loader.LoadScript("app:///Scripts/babylonjs.serializers.js");
107114
loader.LoadScript("app:///Scripts/experience.js");
108115
}
109116

0 commit comments

Comments
 (0)