Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
323d08d
feat: add support of selection outliner
julien-moreau Apr 2, 2026
1f7ca33
feat: add support of HDR texture for environment texture and outline …
julien-moreau Apr 3, 2026
45e4607
feat: add support of HDR as environment texture when exporting scene …
julien-moreau Apr 3, 2026
19a37b3
feat: adding support of clustered lights
julien-moreau Apr 4, 2026
6663ad9
fix: usage of HDR environment texture in CLI
julien-moreau Apr 5, 2026
5f4967c
v5.4.1-alpha.0
julien-moreau Apr 5, 2026
033c23a
feat: make clustered light container editable in inspector
julien-moreau Apr 5, 2026
5fb8d43
v5.4.1-alpha.1
julien-moreau Apr 6, 2026
83a7c0f
fix: compute clustered light before checking scene is ready in babylo…
Apr 8, 2026
5537396
feat: add support of LOD inspector to setup custom LODs
Apr 8, 2026
498ab9b
fix: compute clustered light container after parenting is resolved
julien-moreau Apr 8, 2026
e9fc3c4
chore: use installed typescript version
julien-moreau Apr 8, 2026
5db51a6
feat: drag'n'drop lights in clustered light container
Apr 9, 2026
e6117b6
v5.4.1-alpha.2
julien-moreau Apr 9, 2026
74764a4
feat: add menu to merge animations groups in scene inspector
julien-moreau Apr 9, 2026
3434ccd
feat: add @componentFromScene decorator in babylonjs-editor-tools
Apr 10, 2026
a242b56
docs: add documentation for common decorators
Apr 10, 2026
eb252a1
fix: handle cli and tools dependency in case of mono-repo
julien-moreau Apr 10, 2026
483eba2
v5.4.1-alpha.3
julien-moreau Apr 10, 2026
133424a
feat: add support of decal map in standard and pbr material inspectors
julien-moreau Apr 11, 2026
02a30df
chore: bump Babylon.js to v9.2.1
julien-moreau Apr 13, 2026
d1d9f52
feat: introduce update from asset and animation retargeting
julien-moreau Apr 14, 2026
6df51b1
feat: create thumbnails in parallel
Apr 15, 2026
bff05a0
fix: generation of scaled textures when extension is upper-case in ba…
Apr 15, 2026
b2c4098
feat: add support of rendering configuration to disable pre-configure…
Apr 15, 2026
2235c2f
v5.4.1-alpha.4
julien-moreau Apr 15, 2026
b014e67
feat: add support of applyTexturesQuality in babylonjs-editor-tools
Apr 16, 2026
3bd705c
fix: check installed version of babylonjs-editor-tools for macOS and …
Apr 16, 2026
635ca88
feat: add support of applyShadowsQuality in babylonjs-editor-tools
julien-moreau Apr 16, 2026
1f0a1eb
v5.4.1-alpha.5
julien-moreau Apr 16, 2026
37b1a65
feat: add support of applyMeshesLODQuality in babylonjs-editor-tools
Apr 17, 2026
cd26f44
fix: improve save speed
julien-moreau Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@
"source.fixAll.eslint": "always"
},
"files.insertFinalNewline": true,
"javascript.format.semicolons": "insert",
"typescript.format.semicolons": "insert",
"typescript.preferences.quoteStyle": "double",
"javascript.preferences.quoteStyle": "double",
"js/ts.format.semicolons": "insert",
"js/ts.preferences.quoteStyle": "double",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
Expand All @@ -35,6 +33,8 @@
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"typescript.preferences.importModuleSpecifier": "project-relative",
"typescript.preferences.autoImportFileExcludePatterns": ["**/export.ts"]
"js/ts.preferences.importModuleSpecifier": "project-relative",
"js/ts.preferences.autoImportFileExcludePatterns": ["**/export.ts"],
"js/ts.tsdk.path": "node_modules/typescript/lib",
"js/ts.tsdk.promptToUseWorkspaceVersion": true
}
2 changes: 1 addition & 1 deletion cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "babylonjs-editor-cli",
"version": "5.4.0",
"version": "5.4.1-alpha.5",
"description": "Babylon.js Editor CLI is a command line interface to help you package your scenes made using the Babylon.js Editor",
"productName": "Babylon.js Editor CLI",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion cli/src/pack/assets/ktx.mts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export async function compressFileToKtxFormat(absolutePath: string, options: Com
break;

case "-dxt.ktx":
command = `"${pvrTexToolAbsolutePath}" -i "${absolutePath}" -flip y -pot + -m -ics lRGB ${hasAlpha ? "-l" : ""} -f ${hasAlpha ? "BC2" : "BC1"},UBN,lRGB -o "${options.destinationFolder}"`;
command = `"${pvrTexToolAbsolutePath}" -i "${absolutePath}" -flip y -pot + -m -dither -ics lRGB ${hasAlpha ? "-l" : ""} -f ${hasAlpha ? "BC2" : "BC1"},UBN,lRGB -o "${options.destinationFolder}"`;
break;

case "-pvrtc.ktx":
Expand Down
2 changes: 1 addition & 1 deletion cli/src/pack/assets/process.mts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { processExportedMaterial } from "./material.mjs";
import { processExportedNodeParticleSystemSet } from "./particle-system.mjs";

const supportedImagesExtensions: string[] = [".jpg", ".jpeg", ".webp", ".png", ".bmp"];
const supportedCubeTexturesExtensions: string[] = [".env", ".dds"];
const supportedCubeTexturesExtensions: string[] = [".env", ".dds", ".hdr"];
const supportedAudioExtensions: string[] = [".mp3", ".wav", ".wave", ".ogg"];
const supportedJsonExtensions: string[] = [".material", ".gui", ".cinematic", ".npss", ".ragdoll", ".json"];
const supportedMiscExtensions: string[] = [".3dl", ".exr", ".hdr"];
Expand Down
2 changes: 1 addition & 1 deletion cli/src/pack/assets/texture.mts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export interface IComputeExportedTextureOptions extends IProcessAssetFileOptions
}

export async function processExportedTexture(absolutePath: string, options: IComputeExportedTextureOptions): Promise<void> {
const extension = extname(absolutePath).toLocaleLowerCase();
const extension = extname(absolutePath);

const metadata = await sharp(absolutePath).metadata();
if (!metadata.width || !metadata.height) {
Expand Down
16 changes: 14 additions & 2 deletions cli/src/pack/scene.mts
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,11 @@ export async function createBabylonScene(options: ICreateBabylonSceneOptions) {
physicsGravity: options.config.physics.gravity,
physicsEngine: "HavokPlugin",

metadata: options.config.metadata,
metadata: {
...options.config.metadata,
rendering: options.config.rendering,
clusteredLight: options.config.clusteredLight,
},

morphTargetManagers,
lights,
Expand Down Expand Up @@ -522,7 +526,7 @@ export async function createBabylonScene(options: ICreateBabylonSceneOptions) {
postProcesses: [],
spriteManagers: [],
reflectionProbes: [],
};
} as any;

// Resolve parenting for mesh instances.
const allNodes = [...scene.meshes, ...scene.cameras, ...scene.lights, ...scene.transformNodes, ...scene.meshes.map((m) => m.instances ?? []).flat()];
Expand All @@ -539,6 +543,14 @@ export async function createBabylonScene(options: ICreateBabylonSceneOptions) {
}
});

// Configue ennviornment texture
if (scene.environmentTexture?.name && scene.environmentTexture.customType === "BABYLON.HDRCubeTexture") {
scene.environmentTextureSize = 512;
scene.environmentTextureType = "BABYLON.HDRCubeTexture";
scene.environmentTextureRotationY = scene.environmentTexture.rotationY;
scene.environmentTexture = scene.environmentTexture.name;
}

// Write final scene file.
const destination = join(options.publicDir, `${options.sceneName}.babylon`);
await fs.writeJSON(destination, scene, {
Expand Down
28 changes: 14 additions & 14 deletions editor/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "babylonjs-editor",
"version": "5.4.0",
"version": "5.4.1-alpha.5",
"description": "Babylon.js Editor is a Web Application helping artists to work with Babylon.js",
"productName": "Babylon.js Editor",
"main": "build/src/index.js",
Expand Down Expand Up @@ -40,9 +40,9 @@
"vitest": "4.0.17"
},
"dependencies": {
"@babylonjs/addons": "9.0.0",
"@babylonjs/core": "9.0.0",
"@babylonjs/havok": "1.3.10",
"@babylonjs/addons": "9.2.1",
"@babylonjs/core": "9.2.1",
"@babylonjs/havok": "1.3.12",
"@blueprintjs/core": "^5.10.0",
"@blueprintjs/select": "^5.1.2",
"@emotion/react": "^11.13.3",
Expand Down Expand Up @@ -75,18 +75,18 @@
"@xterm/xterm": "6.1.0-beta.22",
"assimpjs": "0.0.10",
"axios": "1.15.0",
"babylonjs": "9.0.0",
"babylonjs-addons": "9.0.0",
"babylonjs": "9.2.1",
"babylonjs-addons": "9.2.1",
"babylonjs-editor-cli": "latest",
"babylonjs-editor-tools": "latest",
"babylonjs-gui": "9.0.0",
"babylonjs-gui-editor": "9.0.0",
"babylonjs-loaders": "9.0.0",
"babylonjs-materials": "9.0.0",
"babylonjs-node-editor": "9.0.0",
"babylonjs-node-particle-editor": "9.0.0",
"babylonjs-post-process": "9.0.0",
"babylonjs-procedural-textures": "9.0.0",
"babylonjs-gui": "9.2.1",
"babylonjs-gui-editor": "9.2.1",
"babylonjs-loaders": "9.2.1",
"babylonjs-materials": "9.2.1",
"babylonjs-node-editor": "9.2.1",
"babylonjs-node-particle-editor": "9.2.1",
"babylonjs-post-process": "9.2.1",
"babylonjs-procedural-textures": "9.2.1",
"chokidar": "^4.0.3",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
Expand Down
3 changes: 2 additions & 1 deletion editor/src/editor/layout/assets-browser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ const ParticleSystemSelectable = createSelectable(AssetBrowserParticleSystemItem

const directoryPackagesExtensions = [".scene", ".navmesh"];

RegisterSceneLoaderPlugin(new AssimpJSLoader(true));
RegisterSceneLoaderPlugin(new AssimpJSLoader(true, true));

export interface IEditorAssetsBrowserProps {
/**
Expand Down Expand Up @@ -1452,6 +1452,7 @@ export class EditorAssetsBrowser extends Component<IEditorAssetsBrowserProps, IE
return openModelViewer(this.props.editor, item.props.absolutePath);

case ".env":
case ".hdr":
return openEnvViewer(item.props.absolutePath);

case ".ts":
Expand Down
31 changes: 21 additions & 10 deletions editor/src/editor/layout/assets-browser/viewers/env-viewer.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { basename } from "path/posix";
import { basename, extname } from "path/posix";

import { useEffect, useRef } from "react";

import { Engine, Scene, CreateSphere, ArcRotateCamera, Vector3, PBRMaterial, CubeTexture, Texture } from "babylonjs";
import { Engine, Scene, CreateSphere, ArcRotateCamera, Vector3, PBRMaterial, CubeTexture, Texture, HDRCubeTexture } from "babylonjs";

import { showAlert } from "../../../../ui/dialog";

Expand Down Expand Up @@ -30,16 +30,27 @@ function AssetBrowserEnvViewer(props: IAssetBrowserEnvViewerProps) {
const scene = new Scene(engine);
scene.clearColor.set(0, 0, 0, 0);

const texture = CubeTexture.CreateFromPrefilteredData(props.absolutePath, scene);
texture.coordinatesMode = Texture.CUBIC_MODE;
let texture: CubeTexture | HDRCubeTexture | null = null;
switch (extname(props.absolutePath).toLowerCase()) {
case ".env":
texture = CubeTexture.CreateFromPrefilteredData(props.absolutePath, scene);
break;
case ".hdr":
texture = new HDRCubeTexture(props.absolutePath, scene, 512);
break;
}

const material = new PBRMaterial("material", scene);
material.metallic = 1;
material.roughness = 0;
material.reflectionTexture = texture;
if (texture) {
texture.coordinatesMode = Texture.CUBIC_MODE;

const sphere = CreateSphere("sphere", { diameter: 100 }, scene);
sphere.material = material;
const material = new PBRMaterial("material", scene);
material.metallic = 1;
material.roughness = 0;
material.reflectionTexture = texture;

const sphere = CreateSphere("sphere", { diameter: 100 }, scene);
sphere.material = material;
}

const camera = new ArcRotateCamera("camera", Math.PI / 2, Math.PI / 2, 150, Vector3.Zero(), scene, true);
camera.lowerRadiusLimit = 75;
Expand Down
Loading