Просмотр исходного кода

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js into WebGPU

Sebastien Vandenberghe 6 лет назад
Родитель
Сommit
1d7c0b0677

+ 4 - 0
Playground/babylon.d.txt

@@ -29745,10 +29745,12 @@ declare module BABYLON {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -31255,6 +31257,7 @@ declare module BABYLON {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -50614,6 +50617,7 @@ declare module BABYLON {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;

+ 4 - 0
dist/preview release/babylon.d.ts

@@ -30322,10 +30322,12 @@ declare module BABYLON {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -31871,6 +31873,7 @@ declare module BABYLON {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -51394,6 +51397,7 @@ declare module BABYLON {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/babylon.js


Разница между файлами не показана из-за своего большого размера
+ 71 - 57
dist/preview release/babylon.max.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 13 - 0
dist/preview release/babylon.module.d.ts

@@ -31185,10 +31185,12 @@ declare module "babylonjs/Engines/engine" {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -32745,6 +32747,7 @@ declare module "babylonjs/Misc/tools" {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -36108,6 +36111,7 @@ declare module "babylonjs/Audio/audioSceneComponent" {
     import { ISceneSerializableComponent } from "babylonjs/sceneComponent";
     import { Scene } from "babylonjs/scene";
     import { AbstractScene } from "babylonjs/abstractScene";
+    import "babylonjs/Audio/audioEngine";
     module "babylonjs/abstractScene" {
         interface AbstractScene {
             /**
@@ -53784,6 +53788,7 @@ declare module "babylonjs/Materials/Node/nodeMaterial" {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;
@@ -60683,6 +60688,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/lensRenderingPi
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/chromaticAberration.fragment";
     import "babylonjs/Shaders/lensHighlights.fragment";
     import "babylonjs/Shaders/depthOfField.fragment";
@@ -60920,6 +60926,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingP
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/ssao2.fragment";
     import "babylonjs/Shaders/ssaoCombine.fragment";
     /**
@@ -61071,6 +61078,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPi
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/ssao.fragment";
     import "babylonjs/Shaders/ssaoCombine.fragment";
     /**
@@ -61187,6 +61195,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/standardRenderi
     import { DirectionalLight } from "babylonjs/Lights/directionalLight";
     import { Scene } from "babylonjs/scene";
     import { Animation } from "babylonjs/Animations/animation";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/standard.fragment";
     /**
      * Standard rendering pipeline
@@ -94262,10 +94271,12 @@ declare module BABYLON {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -95811,6 +95822,7 @@ declare module BABYLON {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -115334,6 +115346,7 @@ declare module BABYLON {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;

+ 4 - 0
dist/preview release/documentation.d.ts

@@ -30322,10 +30322,12 @@ declare module BABYLON {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -31871,6 +31873,7 @@ declare module BABYLON {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -51394,6 +51397,7 @@ declare module BABYLON {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;

+ 1 - 0
dist/preview release/nodeEditor/babylon.nodeEditor.d.ts

@@ -875,6 +875,7 @@ declare module NODEEDITOR {
         private _light;
         private _dummySphere;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         dispose(): void;

Разница между файлами не показана из-за своего большого размера
+ 2 - 2
dist/preview release/nodeEditor/babylon.nodeEditor.js


Разница между файлами не показана из-за своего большого размера
+ 29 - 13
dist/preview release/nodeEditor/babylon.nodeEditor.max.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/nodeEditor/babylon.nodeEditor.max.js.map


+ 2 - 0
dist/preview release/nodeEditor/babylon.nodeEditor.module.d.ts

@@ -1040,6 +1040,7 @@ declare module "babylonjs-node-editor/previewManager" {
         private _light;
         private _dummySphere;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         dispose(): void;
@@ -2051,6 +2052,7 @@ declare module NODEEDITOR {
         private _light;
         private _dummySphere;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         dispose(): void;

+ 13 - 0
dist/preview release/viewer/babylon.module.d.ts

@@ -31185,10 +31185,12 @@ declare module "babylonjs/Engines/engine" {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -32745,6 +32747,7 @@ declare module "babylonjs/Misc/tools" {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -36108,6 +36111,7 @@ declare module "babylonjs/Audio/audioSceneComponent" {
     import { ISceneSerializableComponent } from "babylonjs/sceneComponent";
     import { Scene } from "babylonjs/scene";
     import { AbstractScene } from "babylonjs/abstractScene";
+    import "babylonjs/Audio/audioEngine";
     module "babylonjs/abstractScene" {
         interface AbstractScene {
             /**
@@ -53784,6 +53788,7 @@ declare module "babylonjs/Materials/Node/nodeMaterial" {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;
@@ -60683,6 +60688,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/lensRenderingPi
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/chromaticAberration.fragment";
     import "babylonjs/Shaders/lensHighlights.fragment";
     import "babylonjs/Shaders/depthOfField.fragment";
@@ -60920,6 +60926,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingP
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/ssao2.fragment";
     import "babylonjs/Shaders/ssaoCombine.fragment";
     /**
@@ -61071,6 +61078,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPi
     import { Camera } from "babylonjs/Cameras/camera";
     import { PostProcessRenderPipeline } from "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipeline";
     import { Scene } from "babylonjs/scene";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/ssao.fragment";
     import "babylonjs/Shaders/ssaoCombine.fragment";
     /**
@@ -61187,6 +61195,7 @@ declare module "babylonjs/PostProcesses/RenderPipeline/Pipelines/standardRenderi
     import { DirectionalLight } from "babylonjs/Lights/directionalLight";
     import { Scene } from "babylonjs/scene";
     import { Animation } from "babylonjs/Animations/animation";
+    import "babylonjs/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent";
     import "babylonjs/Shaders/standard.fragment";
     /**
      * Standard rendering pipeline
@@ -94262,10 +94271,12 @@ declare module BABYLON {
         getRenderingCanvas(): Nullable<HTMLCanvasElement>;
         /**
          * Gets host window
+         * @returns the host window object
          */
         getHostWindow(): Window;
         /**
          * Gets host document
+         * @returns the host document object
          */
         getHostDocument(): Document;
         /**
@@ -95811,6 +95822,7 @@ declare module BABYLON {
         }[]): void;
         /**
          * Function used to unregister events from window level
+         * @param windowElement defines the Window object to use
          * @param events defines the events to unregister
          */
         static UnregisterTopRootEvents(windowElement: Window, events: {
@@ -115334,6 +115346,7 @@ declare module BABYLON {
      * Class used to create a node based material built by assembling shader blocks
      */
     export class NodeMaterial extends PushMaterial {
+        private static _BuildIdGenerator;
         private _options;
         private _vertexCompilationState;
         private _fragmentCompilationState;

Разница между файлами не показана из-за своего большого размера
+ 10 - 10
dist/preview release/viewer/babylon.viewer.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 2 - 0
nodeEditor/src/main.scss

@@ -55,10 +55,12 @@
         grid-column: 1;
         width: 100%;
         display: grid;
+        outline: 0 !important;
         
         #preview-canvas {
             width: 100%;
             height: 100%;
+            outline: 0 !important;
         }
     }
 }

+ 5 - 4
nodeEditor/src/previewManager.ts

@@ -40,7 +40,10 @@ export class PreviewManager {
 
         this._engine.runRenderLoop(() => {
             this._scene.render();
-        })
+        });
+
+        let serializationObject = this._nodeMaterial.serialize();
+        this._updatePreview(serializationObject);
     }
 
     private _updatePreview(serializationObject: any) {
@@ -49,9 +52,7 @@ export class PreviewManager {
         }        
 
         this._material = NodeMaterial.Parse(serializationObject, this._scene);
-
-        this._material.build();
-
+        this._material.build(true);
         this._dummySphere.material = this._material;
     }
 

+ 2 - 0
src/Engines/engine.ts

@@ -1745,6 +1745,7 @@ export class Engine {
 
     /**
      * Gets host window
+     * @returns the host window object
      */
     public getHostWindow(): Window {
         if (this._renderingCanvas && this._renderingCanvas.ownerDocument && this._renderingCanvas.ownerDocument.defaultView) {
@@ -1756,6 +1757,7 @@ export class Engine {
 
     /**
      * Gets host document
+     * @returns the host document object
      */
     public getHostDocument(): Document {
         if (this._renderingCanvas && this._renderingCanvas.ownerDocument) {

+ 3 - 2
src/Materials/Node/nodeMaterial.ts

@@ -96,11 +96,12 @@ export interface INodeMaterialOptions {
  * Class used to create a node based material built by assembling shader blocks
  */
 export class NodeMaterial extends PushMaterial {
+    private static _BuildIdGenerator: number = 0;
     private _options: INodeMaterialOptions;
     private _vertexCompilationState: NodeMaterialBuildState;
     private _fragmentCompilationState: NodeMaterialBuildState;
     private _sharedData: NodeMaterialBuildStateSharedData;
-    private _buildId: number = 0;
+    private _buildId: number = NodeMaterial._BuildIdGenerator++;
     private _buildWasSuccessful = false;
     private _cachedWorldViewMatrix = new Matrix();
     private _cachedWorldViewProjectionMatrix = new Matrix();
@@ -500,7 +501,7 @@ export class NodeMaterial extends PushMaterial {
         this._vertexCompilationState.finalize(this._vertexCompilationState);
         this._fragmentCompilationState.finalize(this._fragmentCompilationState);
 
-        this._buildId++;
+        this._buildId = NodeMaterial._BuildIdGenerator++;
 
         // Errors
         this._sharedData.emitErrors();