Browse Source

Move material flags from standard

sebavan 6 năm trước cách đây
mục cha
commit
a352255dfc

+ 3 - 3
materialsLibrary/src/cell/cellMaterial.ts

@@ -7,7 +7,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -115,7 +115,7 @@ export class CellMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                     if (!this._diffuseTexture.isReady()) {
                         return false;
                     } else {
@@ -245,7 +245,7 @@ export class CellMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this._diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);

+ 3 - 3
materialsLibrary/src/fire/fireMaterial.ts

@@ -9,7 +9,7 @@ import { EffectFallbacks } from "babylonjs/Materials/effect";
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -111,7 +111,7 @@ export class FireMaterial extends PushMaterial {
         // Textures
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
-            if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 if (!this._diffuseTexture.isReady()) {
                     return false;
                 } else {
@@ -228,7 +228,7 @@ export class FireMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this._diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);

+ 3 - 3
materialsLibrary/src/fur/furMaterial.ts

@@ -10,7 +10,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -180,7 +180,7 @@ export class FurMaterial extends PushMaterial {
         // Textures
         if (defines._areTexturesDirty) {
             if (scene.texturesEnabled) {
-                if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                     if (!this.diffuseTexture.isReady()) {
                         return false;
                     } else {
@@ -327,7 +327,7 @@ export class FurMaterial extends PushMaterial {
 
         if (scene.getCachedMaterial() !== this) {
             // Textures
-            if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this._diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);

+ 3 - 3
materialsLibrary/src/grid/gridMaterial.ts

@@ -4,7 +4,7 @@ import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -146,7 +146,7 @@ export class GridMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+                if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                     if (!this._opacityTexture.isReady()) {
                         return false;
                     } else {
@@ -231,7 +231,7 @@ export class GridMaterial extends PushMaterial {
             this._gridControl.w = this.opacity;
             this._activeEffect.setVector4("gridControl", this._gridControl);
 
-            if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+            if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                 this._activeEffect.setTexture("opacitySampler", this._opacityTexture);
                  this._activeEffect.setFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
                 this._activeEffect.setMatrix("opacityMatrix", this._opacityTexture.getTextureMatrix());

+ 3 - 3
materialsLibrary/src/lava/lavaMaterial.ts

@@ -7,7 +7,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -175,7 +175,7 @@ export class LavaMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                     if (!this._diffuseTexture.isReady()) {
                         return false;
                     } else {
@@ -314,7 +314,7 @@ export class LavaMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this.diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this.diffuseTexture.coordinatesIndex, this.diffuseTexture.level);

+ 4 - 4
materialsLibrary/src/mix/mixMaterial.ts

@@ -8,7 +8,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -171,7 +171,7 @@ export class MixMaterial extends PushMaterial {
 
         // Textures
         if (scene.texturesEnabled) {
-            if (StandardMaterial.DiffuseTextureEnabled) {
+            if (MaterialFlags.DiffuseTextureEnabled) {
                 if (this._mixTexture1) {
                     if (!this._mixTexture1.isReady()) {
                         return false;
@@ -320,7 +320,7 @@ export class MixMaterial extends PushMaterial {
                 this._activeEffect.setFloat2("vTextureInfos", this._mixTexture1.coordinatesIndex, this._mixTexture1.level);
                 this._activeEffect.setMatrix("textureMatrix", this._mixTexture1.getTextureMatrix());
 
-                if (StandardMaterial.DiffuseTextureEnabled) {
+                if (MaterialFlags.DiffuseTextureEnabled) {
                     if (this._diffuseTexture1) {
                         this._activeEffect.setTexture("diffuse1Sampler", this._diffuseTexture1);
                         this._activeEffect.setFloat2("diffuse1Infos", this._diffuseTexture1.uScale, this._diffuseTexture1.vScale);
@@ -343,7 +343,7 @@ export class MixMaterial extends PushMaterial {
             if (this._mixTexture2) {
                 this._activeEffect.setTexture("mixMap2Sampler", this._mixTexture2);
 
-                if (StandardMaterial.DiffuseTextureEnabled) {
+                if (MaterialFlags.DiffuseTextureEnabled) {
                     if (this._diffuseTexture5) {
                         this._activeEffect.setTexture("diffuse5Sampler", this._diffuseTexture5);
                         this._activeEffect.setFloat2("diffuse5Infos", this._diffuseTexture5.uScale, this._diffuseTexture5.vScale);

+ 3 - 3
materialsLibrary/src/normal/normalMaterial.ts

@@ -7,7 +7,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -151,7 +151,7 @@ export class NormalMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                     if (!this._diffuseTexture.isReady()) {
                         return false;
                     } else {
@@ -279,7 +279,7 @@ export class NormalMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this.diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this.diffuseTexture.coordinatesIndex, this.diffuseTexture.level);

+ 3 - 3
materialsLibrary/src/simple/simpleMaterial.ts

@@ -7,7 +7,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -107,7 +107,7 @@ export class SimpleMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                     if (!this._diffuseTexture.isReady()) {
                         return false;
                     } else {
@@ -234,7 +234,7 @@ export class SimpleMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                 this._activeEffect.setTexture("diffuseSampler", this._diffuseTexture);
 
                 this._activeEffect.setFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);

+ 5 - 5
materialsLibrary/src/terrain/terrainMaterial.ts

@@ -8,7 +8,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -144,7 +144,7 @@ export class TerrainMaterial extends PushMaterial {
 
         // Textures
         if (scene.texturesEnabled) {
-            if (this.mixTexture && StandardMaterial.DiffuseTextureEnabled) {
+            if (this.mixTexture && MaterialFlags.DiffuseTextureEnabled) {
                 if (!this.mixTexture.isReady()) {
                     return false;
                 } else {
@@ -152,7 +152,7 @@ export class TerrainMaterial extends PushMaterial {
                     defines.DIFFUSE = true;
                 }
             }
-            if ((this.bumpTexture1 || this.bumpTexture2 || this.bumpTexture3) && StandardMaterial.BumpTextureEnabled) {
+            if ((this.bumpTexture1 || this.bumpTexture2 || this.bumpTexture3) && MaterialFlags.BumpTextureEnabled) {
                 defines._needUVs = true;
                 defines._needNormals = true;
                 defines.BUMP = true;
@@ -285,7 +285,7 @@ export class TerrainMaterial extends PushMaterial {
                 this._activeEffect.setFloat2("vTextureInfos", this._mixTexture.coordinatesIndex, this._mixTexture.level);
                 this._activeEffect.setMatrix("textureMatrix", this._mixTexture.getTextureMatrix());
 
-                if (StandardMaterial.DiffuseTextureEnabled) {
+                if (MaterialFlags.DiffuseTextureEnabled) {
                     if (this._diffuseTexture1) {
                         this._activeEffect.setTexture("diffuse1Sampler", this._diffuseTexture1);
                         this._activeEffect.setFloat2("diffuse1Infos", this._diffuseTexture1.uScale, this._diffuseTexture1.vScale);
@@ -300,7 +300,7 @@ export class TerrainMaterial extends PushMaterial {
                     }
                 }
 
-                if (StandardMaterial.BumpTextureEnabled && scene.getEngine().getCaps().standardDerivatives) {
+                if (MaterialFlags.BumpTextureEnabled && scene.getEngine().getCaps().standardDerivatives) {
                     if (this._bumpTexture1) {
                         this._activeEffect.setTexture("bump1Sampler", this._bumpTexture1);
                     }

+ 3 - 3
materialsLibrary/src/triPlanar/triPlanarMaterial.ts

@@ -7,7 +7,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -149,7 +149,7 @@ export class TriPlanarMaterial extends PushMaterial {
         // Textures
         if (defines._areTexturesDirty) {
             if (scene.texturesEnabled) {
-                if (StandardMaterial.DiffuseTextureEnabled) {
+                if (MaterialFlags.DiffuseTextureEnabled) {
                     var textures = [this.diffuseTextureX, this.diffuseTextureY, this.diffuseTextureZ];
                     var textureDefines = ["DIFFUSEX", "DIFFUSEY", "DIFFUSEZ"];
 
@@ -163,7 +163,7 @@ export class TriPlanarMaterial extends PushMaterial {
                         }
                     }
                 }
-                if (StandardMaterial.BumpTextureEnabled) {
+                if (MaterialFlags.BumpTextureEnabled) {
                     var textures = [this.normalTextureX, this.normalTextureY, this.normalTextureZ];
                     var textureDefines = ["BUMPX", "BUMPY", "BUMPZ"];
 

+ 5 - 5
materialsLibrary/src/water/waterMaterial.ts

@@ -10,7 +10,7 @@ import { EffectFallbacks, EffectCreationOptions } from "babylonjs/Materials/effe
 import { MaterialDefines } from "babylonjs/Materials/materialDefines";
 import { MaterialHelper } from "babylonjs/Materials/materialHelper";
 import { PushMaterial } from "babylonjs/Materials/pushMaterial";
-import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
+import { MaterialFlags } from "babylonjs/Materials/materialFlags";
 import { VertexBuffer } from "babylonjs/Meshes/buffer";
 import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
@@ -290,7 +290,7 @@ export class WaterMaterial extends PushMaterial {
         if (defines._areTexturesDirty) {
             defines._needUVs = false;
             if (scene.texturesEnabled) {
-                if (this.bumpTexture && StandardMaterial.BumpTextureEnabled) {
+                if (this.bumpTexture && MaterialFlags.BumpTextureEnabled) {
                     if (!this.bumpTexture.isReady()) {
                         return false;
                     } else {
@@ -299,7 +299,7 @@ export class WaterMaterial extends PushMaterial {
                     }
                 }
 
-                if (StandardMaterial.ReflectionTextureEnabled) {
+                if (MaterialFlags.ReflectionTextureEnabled) {
                     defines.REFLECTION = true;
                 }
             }
@@ -457,7 +457,7 @@ export class WaterMaterial extends PushMaterial {
 
         if (this._mustRebind(scene, effect)) {
             // Textures
-            if (this.bumpTexture && StandardMaterial.BumpTextureEnabled) {
+            if (this.bumpTexture && MaterialFlags.BumpTextureEnabled) {
                 this._activeEffect.setTexture("normalSampler", this.bumpTexture);
 
                 this._activeEffect.setFloat2("vNormalInfos", this.bumpTexture.coordinatesIndex, this.bumpTexture.level);
@@ -496,7 +496,7 @@ export class WaterMaterial extends PushMaterial {
         MaterialHelper.BindLogDepth(defines, this._activeEffect, scene);
 
         // Water
-        if (StandardMaterial.ReflectionTextureEnabled) {
+        if (MaterialFlags.ReflectionTextureEnabled) {
             this._activeEffect.setTexture("refractionSampler", this._refractionRTT);
             this._activeEffect.setTexture("reflectionSampler", this._reflectionRTT);
         }

+ 8 - 8
src/Materials/Background/backgroundMaterial.ts

@@ -13,7 +13,6 @@ import { Effect, EffectFallbacks, EffectCreationOptions } from "../../Materials/
 import { MaterialHelper } from "../../Materials/materialHelper";
 import { MaterialDefines } from "../../Materials/materialDefines";
 import { PushMaterial } from "../../Materials/pushMaterial";
-import { StandardMaterial } from "../../Materials/standardMaterial";
 import { ColorCurves } from "../../Materials/colorCurves";
 import { ImageProcessingConfiguration, IImageProcessingConfigurationDefines } from "../../Materials/imageProcessingConfiguration";
 import { BaseTexture } from "../../Materials/Textures/baseTexture";
@@ -23,7 +22,8 @@ import { IShadowLight } from "../../Lights/shadowLight";
 import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { Constants } from "../../Engines/constants";
-import { _TypeStore } from '../../Misc/typeStore';
+import { _TypeStore } from "../../Misc/typeStore";
+import { MaterialFlags } from "../materialFlags";
 
 import "../../Shaders/background.fragment";
 import "../../Shaders/background.vertex";
@@ -683,7 +683,7 @@ import "../../Shaders/background.vertex";
                         defines.TEXTURELODSUPPORT = true;
                     }
 
-                    if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                    if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                         if (!this._diffuseTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
@@ -700,7 +700,7 @@ import "../../Shaders/background.vertex";
                     }
 
                     var reflectionTexture = this._reflectionTexture;
-                    if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                         if (!reflectionTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
@@ -1046,12 +1046,12 @@ import "../../Shaders/background.vertex";
 
                     // Texture uniforms
                     if (scene.texturesEnabled) {
-                        if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                        if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                             this._uniformBuffer.updateFloat2("vDiffuseInfos", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);
                             MaterialHelper.BindTextureMatrix(this._diffuseTexture, this._uniformBuffer, "diffuse");
                         }
 
-                        if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                        if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                             this._uniformBuffer.updateMatrix("reflectionMatrix", reflectionTexture.getReflectionTextureMatrix());
                             this._uniformBuffer.updateFloat2("vReflectionInfos", reflectionTexture.level, this._reflectionBlur);
 
@@ -1085,11 +1085,11 @@ import "../../Shaders/background.vertex";
 
                 // Textures
                 if (scene.texturesEnabled) {
-                    if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
+                    if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {
                         this._uniformBuffer.setTexture("diffuseSampler", this._diffuseTexture);
                     }
 
-                    if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                         if (defines.REFLECTIONBLUR && defines.TEXTURELODSUPPORT) {
                             this._uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
                         }

+ 45 - 45
src/Materials/PBR/pbrBaseMaterial.ts

@@ -27,7 +27,7 @@ import { Texture } from "../../Materials/Textures/texture";
 import { RenderTargetTexture } from "../../Materials/Textures/renderTargetTexture";
 import { CubeTexture } from "../../Materials/Textures/cubeTexture";
 
-import { StandardMaterial } from "../../Materials/standardMaterial";
+import { MaterialFlags } from "../materialFlags";
 import { Constants } from "../../Engines/constants";
 
 import "../../Shaders/pbr.fragment";
@@ -657,11 +657,11 @@ import "../../Shaders/pbr.vertex";
             this.getRenderTargetTextures = (): SmartArray<RenderTargetTexture> => {
                 this._renderTargets.reset();
 
-                if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
+                if (MaterialFlags.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
                     this._renderTargets.push(<RenderTargetTexture>this._reflectionTexture);
                 }
 
-                if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {
+                if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {
                     this._renderTargets.push(<RenderTargetTexture>this._refractionTexture);
                 }
 
@@ -675,11 +675,11 @@ import "../../Shaders/pbr.vertex";
          * Gets a boolean indicating that current material needs to register RTT
          */
         public get hasRenderTargetTextures(): boolean {
-            if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
+            if (MaterialFlags.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
                 return true;
             }
 
-            if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {
+            if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {
                 return true;
             }
 
@@ -830,44 +830,44 @@ import "../../Shaders/pbr.vertex";
 
             if (defines._areTexturesDirty) {
                 if (scene.texturesEnabled) {
-                    if (this._albedoTexture && StandardMaterial.DiffuseTextureEnabled) {
+                    if (this._albedoTexture && MaterialFlags.DiffuseTextureEnabled) {
                         if (!this._albedoTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {
+                    if (this._ambientTexture && MaterialFlags.AmbientTextureEnabled) {
                         if (!this._ambientTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+                    if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                         if (!this._opacityTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
                     var reflectionTexture = this._getReflectionTexture();
-                    if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                         if (!reflectionTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {
+                    if (this._lightmapTexture && MaterialFlags.LightmapTextureEnabled) {
                         if (!this._lightmapTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {
+                    if (this._emissiveTexture && MaterialFlags.EmissiveTextureEnabled) {
                         if (!this._emissiveTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (StandardMaterial.SpecularTextureEnabled) {
+                    if (MaterialFlags.SpecularTextureEnabled) {
                         if (this._metallicTexture) {
                             if (!this._metallicTexture.isReadyOrNotBlocking()) {
                                 return false;
@@ -886,7 +886,7 @@ import "../../Shaders/pbr.vertex";
                         }
                     }
 
-                    if (engine.getCaps().standardDerivatives && this._bumpTexture && StandardMaterial.BumpTextureEnabled && !this._disableBumpMap) {
+                    if (engine.getCaps().standardDerivatives && this._bumpTexture && MaterialFlags.BumpTextureEnabled && !this._disableBumpMap) {
                         // Bump texture cannot be not blocking.
                         if (!this._bumpTexture.isReady()) {
                             return false;
@@ -894,13 +894,13 @@ import "../../Shaders/pbr.vertex";
                     }
 
                     var refractionTexture = this._getRefractionTexture();
-                    if (refractionTexture && StandardMaterial.RefractionTextureEnabled) {
+                    if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {
                         if (!refractionTexture.isReadyOrNotBlocking()) {
                             return false;
                         }
                     }
 
-                    if (this._environmentBRDFTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (this._environmentBRDFTexture && MaterialFlags.ReflectionTextureEnabled) {
                         // This is blocking.
                         if (!this._environmentBRDFTexture.isReady()) {
                             return false;
@@ -1137,20 +1137,20 @@ import "../../Shaders/pbr.vertex";
                         defines.LODBASEDMICROSFURACE = true;
                     }
 
-                    if (this._albedoTexture && StandardMaterial.DiffuseTextureEnabled) {
+                    if (this._albedoTexture && MaterialFlags.DiffuseTextureEnabled) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._albedoTexture, defines, "ALBEDO");
                     } else {
                         defines.ALBEDO = false;
                     }
 
-                    if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {
+                    if (this._ambientTexture && MaterialFlags.AmbientTextureEnabled) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._ambientTexture, defines, "AMBIENT");
                         defines.AMBIENTINGRAYSCALE = this._useAmbientInGrayScale;
                     } else {
                         defines.AMBIENT = false;
                     }
 
-                    if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+                    if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._opacityTexture, defines, "OPACITY");
                         defines.OPACITYRGB = this._opacityTexture.getAlphaFromRGB;
                     } else {
@@ -1158,7 +1158,7 @@ import "../../Shaders/pbr.vertex";
                     }
 
                     var reflectionTexture = this._getReflectionTexture();
-                    if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                         defines.REFLECTION = true;
                         defines.GAMMAREFLECTION = reflectionTexture.gammaSpace;
                         defines.RGBDREFLECTION = reflectionTexture.isRGBD;
@@ -1252,7 +1252,7 @@ import "../../Shaders/pbr.vertex";
                         defines.RGBDREFLECTION = false;
                     }
 
-                    if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {
+                    if (this._lightmapTexture && MaterialFlags.LightmapTextureEnabled) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._lightmapTexture, defines, "LIGHTMAP");
                         defines.USELIGHTMAPASSHADOWMAP = this._useLightmapAsShadowmap;
                         defines.GAMMALIGHTMAP = this._lightmapTexture.gammaSpace;
@@ -1260,13 +1260,13 @@ import "../../Shaders/pbr.vertex";
                         defines.LIGHTMAP = false;
                     }
 
-                    if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {
+                    if (this._emissiveTexture && MaterialFlags.EmissiveTextureEnabled) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._emissiveTexture, defines, "EMISSIVE");
                     } else {
                         defines.EMISSIVE = false;
                     }
 
-                    if (StandardMaterial.SpecularTextureEnabled) {
+                    if (MaterialFlags.SpecularTextureEnabled) {
                         if (this._metallicTexture) {
                             MaterialHelper.PrepareDefinesForMergedUV(this._metallicTexture, defines, "REFLECTIVITY");
                             defines.ROUGHNESSSTOREINMETALMAPALPHA = this._useRoughnessFromMetallicTextureAlpha;
@@ -1292,10 +1292,10 @@ import "../../Shaders/pbr.vertex";
                         defines.MICROSURFACEMAP = false;
                     }
 
-                    if (scene.getEngine().getCaps().standardDerivatives && this._bumpTexture && StandardMaterial.BumpTextureEnabled && !this._disableBumpMap) {
+                    if (scene.getEngine().getCaps().standardDerivatives && this._bumpTexture && MaterialFlags.BumpTextureEnabled && !this._disableBumpMap) {
                         MaterialHelper.PrepareDefinesForMergedUV(this._bumpTexture, defines, "BUMP");
 
-                        if (this._useParallax && this._albedoTexture && StandardMaterial.DiffuseTextureEnabled) {
+                        if (this._useParallax && this._albedoTexture && MaterialFlags.DiffuseTextureEnabled) {
                             defines.PARALLAX = true;
                             defines.PARALLAXOCCLUSION = !!this._useParallaxOcclusion;
                         }
@@ -1309,7 +1309,7 @@ import "../../Shaders/pbr.vertex";
                     }
 
                     var refractionTexture = this._getRefractionTexture();
-                    if (refractionTexture && StandardMaterial.RefractionTextureEnabled) {
+                    if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {
                         defines.REFRACTION = true;
                         defines.REFRACTIONMAP_3D = refractionTexture.isCube;
                         defines.GAMMAREFRACTION = refractionTexture.gammaSpace;
@@ -1324,7 +1324,7 @@ import "../../Shaders/pbr.vertex";
                         defines.REFRACTION = false;
                     }
 
-                    if (this._environmentBRDFTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (this._environmentBRDFTexture && MaterialFlags.ReflectionTextureEnabled) {
                         defines.ENVIRONMENTBRDF = true;
                     } else {
                         defines.ENVIRONMENTBRDF = false;
@@ -1522,22 +1522,22 @@ import "../../Shaders/pbr.vertex";
 
                     // Texture uniforms
                     if (scene.texturesEnabled) {
-                        if (this._albedoTexture && StandardMaterial.DiffuseTextureEnabled) {
+                        if (this._albedoTexture && MaterialFlags.DiffuseTextureEnabled) {
                             this._uniformBuffer.updateFloat2("vAlbedoInfos", this._albedoTexture.coordinatesIndex, this._albedoTexture.level);
                             MaterialHelper.BindTextureMatrix(this._albedoTexture, this._uniformBuffer, "albedo");
                         }
 
-                        if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {
+                        if (this._ambientTexture && MaterialFlags.AmbientTextureEnabled) {
                             this._uniformBuffer.updateFloat4("vAmbientInfos", this._ambientTexture.coordinatesIndex, this._ambientTexture.level, this._ambientTextureStrength, this._ambientTextureImpactOnAnalyticalLights);
                             MaterialHelper.BindTextureMatrix(this._ambientTexture, this._uniformBuffer, "ambient");
                         }
 
-                        if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+                        if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                             this._uniformBuffer.updateFloat2("vOpacityInfos", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);
                             MaterialHelper.BindTextureMatrix(this._opacityTexture, this._uniformBuffer, "opacity");
                         }
 
-                        if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                        if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                             this._uniformBuffer.updateMatrix("reflectionMatrix", reflectionTexture.getReflectionTextureMatrix());
                             this._uniformBuffer.updateFloat2("vReflectionInfos", reflectionTexture.level, 0);
 
@@ -1571,17 +1571,17 @@ import "../../Shaders/pbr.vertex";
                                 reflectionTexture.lodGenerationOffset);
                         }
 
-                        if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {
+                        if (this._emissiveTexture && MaterialFlags.EmissiveTextureEnabled) {
                             this._uniformBuffer.updateFloat2("vEmissiveInfos", this._emissiveTexture.coordinatesIndex, this._emissiveTexture.level);
                             MaterialHelper.BindTextureMatrix(this._emissiveTexture, this._uniformBuffer, "emissive");
                         }
 
-                        if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {
+                        if (this._lightmapTexture && MaterialFlags.LightmapTextureEnabled) {
                             this._uniformBuffer.updateFloat2("vLightmapInfos", this._lightmapTexture.coordinatesIndex, this._lightmapTexture.level);
                             MaterialHelper.BindTextureMatrix(this._lightmapTexture, this._uniformBuffer, "lightmap");
                         }
 
-                        if (StandardMaterial.SpecularTextureEnabled) {
+                        if (MaterialFlags.SpecularTextureEnabled) {
                             if (this._metallicTexture) {
                                 this._uniformBuffer.updateFloat3("vReflectivityInfos", this._metallicTexture.coordinatesIndex, this._metallicTexture.level, this._ambientTextureStrength);
                                 MaterialHelper.BindTextureMatrix(this._metallicTexture, this._uniformBuffer, "reflectivity");
@@ -1597,7 +1597,7 @@ import "../../Shaders/pbr.vertex";
                             }
                         }
 
-                        if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled && !this._disableBumpMap) {
+                        if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && MaterialFlags.BumpTextureEnabled && !this._disableBumpMap) {
                             this._uniformBuffer.updateFloat3("vBumpInfos", this._bumpTexture.coordinatesIndex, this._bumpTexture.level, this._parallaxScaleBias);
                             MaterialHelper.BindTextureMatrix(this._bumpTexture, this._uniformBuffer, "bump");
 
@@ -1608,7 +1608,7 @@ import "../../Shaders/pbr.vertex";
                             }
                         }
 
-                        if (refractionTexture && StandardMaterial.RefractionTextureEnabled) {
+                        if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {
                             this._uniformBuffer.updateMatrix("refractionMatrix", refractionTexture.getReflectionTextureMatrix());
 
                             var depth = 1.0;
@@ -1640,7 +1640,7 @@ import "../../Shaders/pbr.vertex";
                         this._uniformBuffer.updateColor4("vReflectivityColor", this._reflectivityColor, this._microSurface);
                     }
 
-                    this._uniformBuffer.updateColor3("vEmissiveColor", StandardMaterial.EmissiveTextureEnabled ? this._emissiveColor : Color3.BlackReadOnly);
+                    this._uniformBuffer.updateColor3("vEmissiveColor", MaterialFlags.EmissiveTextureEnabled ? this._emissiveColor : Color3.BlackReadOnly);
                     this._uniformBuffer.updateColor3("vReflectionColor", this._reflectionColor);
                     this._uniformBuffer.updateColor4("vAlbedoColor", this._albedoColor, this.alpha * mesh.visibility);
 
@@ -1655,19 +1655,19 @@ import "../../Shaders/pbr.vertex";
 
                 // Textures
                 if (scene.texturesEnabled) {
-                    if (this._albedoTexture && StandardMaterial.DiffuseTextureEnabled) {
+                    if (this._albedoTexture && MaterialFlags.DiffuseTextureEnabled) {
                         this._uniformBuffer.setTexture("albedoSampler", this._albedoTexture);
                     }
 
-                    if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {
+                    if (this._ambientTexture && MaterialFlags.AmbientTextureEnabled) {
                         this._uniformBuffer.setTexture("ambientSampler", this._ambientTexture);
                     }
 
-                    if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {
+                    if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {
                         this._uniformBuffer.setTexture("opacitySampler", this._opacityTexture);
                     }
 
-                    if (reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {
+                    if (reflectionTexture && MaterialFlags.ReflectionTextureEnabled) {
                         if (defines.LODBASEDMICROSFURACE) {
                             this._uniformBuffer.setTexture("reflectionSampler", reflectionTexture);
                         }
@@ -1682,7 +1682,7 @@ import "../../Shaders/pbr.vertex";
                         this._uniformBuffer.setTexture("environmentBrdfSampler", this._environmentBRDFTexture);
                     }
 
-                    if (refractionTexture && StandardMaterial.RefractionTextureEnabled) {
+                    if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {
                         if (defines.LODBASEDMICROSFURACE) {
                             this._uniformBuffer.setTexture("refractionSampler", refractionTexture);
                         }
@@ -1693,15 +1693,15 @@ import "../../Shaders/pbr.vertex";
                         }
                     }
 
-                    if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {
+                    if (this._emissiveTexture && MaterialFlags.EmissiveTextureEnabled) {
                         this._uniformBuffer.setTexture("emissiveSampler", this._emissiveTexture);
                     }
 
-                    if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {
+                    if (this._lightmapTexture && MaterialFlags.LightmapTextureEnabled) {
                         this._uniformBuffer.setTexture("lightmapSampler", this._lightmapTexture);
                     }
 
-                    if (StandardMaterial.SpecularTextureEnabled) {
+                    if (MaterialFlags.SpecularTextureEnabled) {
                         if (this._metallicTexture) {
                             this._uniformBuffer.setTexture("reflectivitySampler", this._metallicTexture);
                         }
@@ -1714,7 +1714,7 @@ import "../../Shaders/pbr.vertex";
                         }
                     }
 
-                    if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled && !this._disableBumpMap) {
+                    if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && MaterialFlags.BumpTextureEnabled && !this._disableBumpMap) {
                         this._uniformBuffer.setTexture("bumpSampler", this._bumpTexture);
                     }
                 }

+ 2 - 1
src/Materials/index.ts

@@ -12,4 +12,5 @@ export * from "./pushMaterial";
 export * from "./shaderMaterial";
 export * from "./standardMaterial";
 export * from "./Textures/index";
-export * from "./uniformBuffer";
+export * from "./uniformBuffer";
+export * from "./materialFlags";

+ 184 - 0
src/Materials/materialFlags.ts

@@ -0,0 +1,184 @@
+import { Engine } from "../Engines/engine";
+import { Constants } from "../Engines/constants";
+
+    /**
+     * This groups all the flags used to control the materials channel.
+     */
+    export class MaterialFlags {
+        // Flags used to enable or disable a type of texture for all Standard Materials
+        private static _DiffuseTextureEnabled = true;
+        /**
+         * Are diffuse textures enabled in the application.
+         */
+        public static get DiffuseTextureEnabled(): boolean {
+            return this._DiffuseTextureEnabled;
+        }
+        public static set DiffuseTextureEnabled(value: boolean) {
+            if (this._DiffuseTextureEnabled === value) {
+                return;
+            }
+
+            this._DiffuseTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _AmbientTextureEnabled = true;
+        /**
+         * Are ambient textures enabled in the application.
+         */
+        public static get AmbientTextureEnabled(): boolean {
+            return this._AmbientTextureEnabled;
+        }
+        public static set AmbientTextureEnabled(value: boolean) {
+            if (this._AmbientTextureEnabled === value) {
+                return;
+            }
+
+            this._AmbientTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _OpacityTextureEnabled = true;
+        /**
+         * Are opacity textures enabled in the application.
+         */
+        public static get OpacityTextureEnabled(): boolean {
+            return this._OpacityTextureEnabled;
+        }
+        public static set OpacityTextureEnabled(value: boolean) {
+            if (this._OpacityTextureEnabled === value) {
+                return;
+            }
+
+            this._OpacityTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _ReflectionTextureEnabled = true;
+        /**
+         * Are reflection textures enabled in the application.
+         */
+        public static get ReflectionTextureEnabled(): boolean {
+            return this._ReflectionTextureEnabled;
+        }
+        public static set ReflectionTextureEnabled(value: boolean) {
+            if (this._ReflectionTextureEnabled === value) {
+                return;
+            }
+
+            this._ReflectionTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _EmissiveTextureEnabled = true;
+        /**
+         * Are emissive textures enabled in the application.
+         */
+        public static get EmissiveTextureEnabled(): boolean {
+            return this._EmissiveTextureEnabled;
+        }
+        public static set EmissiveTextureEnabled(value: boolean) {
+            if (this._EmissiveTextureEnabled === value) {
+                return;
+            }
+
+            this._EmissiveTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _SpecularTextureEnabled = true;
+        /**
+         * Are specular textures enabled in the application.
+         */
+        public static get SpecularTextureEnabled(): boolean {
+            return this._SpecularTextureEnabled;
+        }
+        public static set SpecularTextureEnabled(value: boolean) {
+            if (this._SpecularTextureEnabled === value) {
+                return;
+            }
+
+            this._SpecularTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _BumpTextureEnabled = true;
+        /**
+         * Are bump textures enabled in the application.
+         */
+        public static get BumpTextureEnabled(): boolean {
+            return this._BumpTextureEnabled;
+        }
+        public static set BumpTextureEnabled(value: boolean) {
+            if (this._BumpTextureEnabled === value) {
+                return;
+            }
+
+            this._BumpTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _LightmapTextureEnabled = true;
+        /**
+         * Are lightmap textures enabled in the application.
+         */
+        public static get LightmapTextureEnabled(): boolean {
+            return this._LightmapTextureEnabled;
+        }
+        public static set LightmapTextureEnabled(value: boolean) {
+            if (this._LightmapTextureEnabled === value) {
+                return;
+            }
+
+            this._LightmapTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _RefractionTextureEnabled = true;
+        /**
+         * Are refraction textures enabled in the application.
+         */
+        public static get RefractionTextureEnabled(): boolean {
+            return this._RefractionTextureEnabled;
+        }
+        public static set RefractionTextureEnabled(value: boolean) {
+            if (this._RefractionTextureEnabled === value) {
+                return;
+            }
+
+            this._RefractionTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _ColorGradingTextureEnabled = true;
+        /**
+         * Are color grading textures enabled in the application.
+         */
+        public static get ColorGradingTextureEnabled(): boolean {
+            return this._ColorGradingTextureEnabled;
+        }
+        public static set ColorGradingTextureEnabled(value: boolean) {
+            if (this._ColorGradingTextureEnabled === value) {
+                return;
+            }
+
+            this._ColorGradingTextureEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+        }
+
+        private static _FresnelEnabled = true;
+        /**
+         * Are fresnels enabled in the application.
+         */
+        public static get FresnelEnabled(): boolean {
+            return this._FresnelEnabled;
+        }
+        public static set FresnelEnabled(value: boolean) {
+            if (this._FresnelEnabled === value) {
+                return;
+            }
+
+            this._FresnelEnabled = value;
+            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag);
+        }
+    }

+ 24 - 90
src/Materials/standardMaterial.ts

@@ -6,7 +6,6 @@ import { IAnimatable } from "../Misc/tools";
 import { Nullable } from "../types";
 import { Scene } from "../scene";
 import { Matrix, Color3 } from "../Maths/math";
-import { Engine } from "../Engines/engine";
 import { VertexBuffer } from "../Meshes/buffer";
 import { SubMesh } from "../Meshes/subMesh";
 import { AbstractMesh } from "../Meshes/abstractMesh";
@@ -24,7 +23,8 @@ import { BaseTexture } from "../Materials/Textures/baseTexture";
 import { Texture } from "../Materials/Textures/texture";
 import { CubeTexture } from "../Materials/Textures/cubeTexture";
 import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture";
-import { _TypeStore } from '../Misc/typeStore';
+import { _TypeStore } from "../Misc/typeStore";
+import { MaterialFlags } from "./materialFlags";
 
 import "../Shaders/default.fragment";
 import "../Shaders/default.vertex";
@@ -1715,180 +1715,114 @@ import { Constants } from "../Engines/constants";
         }
 
         // Flags used to enable or disable a type of texture for all Standard Materials
-        private static _DiffuseTextureEnabled = true;
         /**
          * Are diffuse textures enabled in the application.
          */
         public static get DiffuseTextureEnabled(): boolean {
-            return StandardMaterial._DiffuseTextureEnabled;
+            return MaterialFlags.DiffuseTextureEnabled;
         }
         public static set DiffuseTextureEnabled(value: boolean) {
-            if (StandardMaterial._DiffuseTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._DiffuseTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.DiffuseTextureEnabled = value;
         }
 
-        private static _AmbientTextureEnabled = true;
         /**
          * Are ambient textures enabled in the application.
          */
         public static get AmbientTextureEnabled(): boolean {
-            return StandardMaterial._AmbientTextureEnabled;
+            return MaterialFlags.AmbientTextureEnabled;
         }
         public static set AmbientTextureEnabled(value: boolean) {
-            if (StandardMaterial._AmbientTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._AmbientTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.AmbientTextureEnabled = value;
         }
 
-        private static _OpacityTextureEnabled = true;
         /**
          * Are opacity textures enabled in the application.
          */
         public static get OpacityTextureEnabled(): boolean {
-            return StandardMaterial._OpacityTextureEnabled;
+            return MaterialFlags.OpacityTextureEnabled;
         }
         public static set OpacityTextureEnabled(value: boolean) {
-            if (StandardMaterial._OpacityTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._OpacityTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.OpacityTextureEnabled = value;
         }
 
-        private static _ReflectionTextureEnabled = true;
         /**
          * Are reflection textures enabled in the application.
          */
         public static get ReflectionTextureEnabled(): boolean {
-            return StandardMaterial._ReflectionTextureEnabled;
+            return MaterialFlags.ReflectionTextureEnabled;
         }
         public static set ReflectionTextureEnabled(value: boolean) {
-            if (StandardMaterial._ReflectionTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._ReflectionTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.ReflectionTextureEnabled = value;
         }
 
-        private static _EmissiveTextureEnabled = true;
         /**
          * Are emissive textures enabled in the application.
          */
         public static get EmissiveTextureEnabled(): boolean {
-            return StandardMaterial._EmissiveTextureEnabled;
+            return MaterialFlags.EmissiveTextureEnabled;
         }
         public static set EmissiveTextureEnabled(value: boolean) {
-            if (StandardMaterial._EmissiveTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._EmissiveTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.EmissiveTextureEnabled = value;
         }
 
-        private static _SpecularTextureEnabled = true;
         /**
          * Are specular textures enabled in the application.
          */
         public static get SpecularTextureEnabled(): boolean {
-            return StandardMaterial._SpecularTextureEnabled;
+            return MaterialFlags.SpecularTextureEnabled;
         }
         public static set SpecularTextureEnabled(value: boolean) {
-            if (StandardMaterial._SpecularTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._SpecularTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.SpecularTextureEnabled = value;
         }
 
-        private static _BumpTextureEnabled = true;
         /**
          * Are bump textures enabled in the application.
          */
         public static get BumpTextureEnabled(): boolean {
-            return StandardMaterial._BumpTextureEnabled;
+            return MaterialFlags.BumpTextureEnabled;
         }
         public static set BumpTextureEnabled(value: boolean) {
-            if (StandardMaterial._BumpTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._BumpTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.BumpTextureEnabled = value;
         }
 
-        private static _LightmapTextureEnabled = true;
         /**
          * Are lightmap textures enabled in the application.
          */
         public static get LightmapTextureEnabled(): boolean {
-            return StandardMaterial._LightmapTextureEnabled;
+            return MaterialFlags.LightmapTextureEnabled;
         }
         public static set LightmapTextureEnabled(value: boolean) {
-            if (StandardMaterial._LightmapTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._LightmapTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.LightmapTextureEnabled = value;
         }
 
-        private static _RefractionTextureEnabled = true;
         /**
          * Are refraction textures enabled in the application.
          */
         public static get RefractionTextureEnabled(): boolean {
-            return StandardMaterial._RefractionTextureEnabled;
+            return MaterialFlags.RefractionTextureEnabled;
         }
         public static set RefractionTextureEnabled(value: boolean) {
-            if (StandardMaterial._RefractionTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._RefractionTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.RefractionTextureEnabled = value;
         }
 
-        private static _ColorGradingTextureEnabled = true;
         /**
          * Are color grading textures enabled in the application.
          */
         public static get ColorGradingTextureEnabled(): boolean {
-            return StandardMaterial._ColorGradingTextureEnabled;
+            return MaterialFlags.ColorGradingTextureEnabled;
         }
         public static set ColorGradingTextureEnabled(value: boolean) {
-            if (StandardMaterial._ColorGradingTextureEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._ColorGradingTextureEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
+            MaterialFlags.ColorGradingTextureEnabled = value;
         }
 
-        private static _FresnelEnabled = true;
         /**
          * Are fresnels enabled in the application.
          */
         public static get FresnelEnabled(): boolean {
-            return StandardMaterial._FresnelEnabled;
+            return MaterialFlags.FresnelEnabled;
         }
         public static set FresnelEnabled(value: boolean) {
-            if (StandardMaterial._FresnelEnabled === value) {
-                return;
-            }
-
-            StandardMaterial._FresnelEnabled = value;
-            Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag);
+            MaterialFlags.FresnelEnabled = value;
         }
     }