Преглед изворни кода

Fix prepareDefines not called for some blocks

Popov72 пре 5 година
родитељ
комит
2a22b9db0a

+ 5 - 1
src/Materials/Node/Blocks/Fragment/PBR/ambientOcclusionBlock.ts

@@ -77,12 +77,16 @@ export class AmbientOcclusionBlock extends NodeMaterialBlock {
     }
     }
 
 
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
+        super.prepareDefines(mesh, nodeMaterial, defines);
+
         defines.setValue("AMBIENT", this.texture.isConnected);
         defines.setValue("AMBIENT", this.texture.isConnected);
         defines.setValue("AMBIENTINGRAYSCALE", this.useAmbientInGrayScale);
         defines.setValue("AMBIENTINGRAYSCALE", this.useAmbientInGrayScale);
     }
     }
 
 
     protected _buildBlock(state: NodeMaterialBuildState) {
     protected _buildBlock(state: NodeMaterialBuildState) {
-        super._buildBlock(state);
+        if (state.target === NodeMaterialBlockTargets.Fragment) {
+            state.sharedData.blocksWithDefines.push(this);
+        }
 
 
         return this;
         return this;
     }
     }

+ 5 - 1
src/Materials/Node/Blocks/Fragment/PBR/anisotropyBlock.ts

@@ -77,12 +77,16 @@ export class AnisotropyBlock extends NodeMaterialBlock {
     }
     }
 
 
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
+        super.prepareDefines(mesh, nodeMaterial, defines);
+
         defines.setValue("ANISOTROPIC", true);
         defines.setValue("ANISOTROPIC", true);
         defines.setValue("ANISOTROPIC_TEXTURE", this.texture.isConnected);
         defines.setValue("ANISOTROPIC_TEXTURE", this.texture.isConnected);
     }
     }
 
 
     protected _buildBlock(state: NodeMaterialBuildState) {
     protected _buildBlock(state: NodeMaterialBuildState) {
-        super._buildBlock(state);
+        if (state.target === NodeMaterialBlockTargets.Fragment) {
+            state.sharedData.blocksWithDefines.push(this);
+        }
 
 
         return this;
         return this;
     }
     }

+ 5 - 1
src/Materials/Node/Blocks/Fragment/PBR/reflectivityBlock.ts

@@ -117,6 +117,8 @@ export class ReflectivityBlock extends NodeMaterialBlock {
     }
     }
 
 
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
     public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
+        super.prepareDefines(mesh, nodeMaterial, defines);
+
         defines.setValue("REFLECTIVITY", this.texture.isConnected);
         defines.setValue("REFLECTIVITY", this.texture.isConnected);
         defines.setValue("AOSTOREINMETALMAPRED", this.useAmbientOcclusionFromMetallicTextureRed);
         defines.setValue("AOSTOREINMETALMAPRED", this.useAmbientOcclusionFromMetallicTextureRed);
         defines.setValue("METALLNESSSTOREINMETALMAPBLUE", this.useMetallnessFromMetallicTextureBlue);
         defines.setValue("METALLNESSSTOREINMETALMAPBLUE", this.useMetallnessFromMetallicTextureBlue);
@@ -126,7 +128,9 @@ export class ReflectivityBlock extends NodeMaterialBlock {
     }
     }
 
 
     protected _buildBlock(state: NodeMaterialBuildState) {
     protected _buildBlock(state: NodeMaterialBuildState) {
-        super._buildBlock(state);
+        if (state.target === NodeMaterialBlockTargets.Fragment) {
+            state.sharedData.blocksWithDefines.push(this);
+        }
 
 
         return this;
         return this;
     }
     }