David Catuhe 6 年之前
父節點
當前提交
67f7c6d785

+ 4 - 0
Playground/babylon.d.txt

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

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

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

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

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

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

@@ -875,6 +875,7 @@ declare module NODEEDITOR {
         private _light;
         private _light;
         private _dummySphere;
         private _dummySphere;
         private _camera;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         private _updatePreview;
         dispose(): void;
         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 _light;
         private _dummySphere;
         private _dummySphere;
         private _camera;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         private _updatePreview;
         dispose(): void;
         dispose(): void;
@@ -2051,6 +2052,7 @@ declare module NODEEDITOR {
         private _light;
         private _light;
         private _dummySphere;
         private _dummySphere;
         private _camera;
         private _camera;
+        private _material;
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
         private _updatePreview;
         private _updatePreview;
         dispose(): void;
         dispose(): void;

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

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

文件差異過大導致無法顯示
+ 10 - 10
dist/preview release/viewer/babylon.viewer.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 1 - 3
nodeEditor/src/previewManager.ts

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

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