Sfoglia il codice sorgente

PBR node materials (WIP)

Popov72 5 anni fa
parent
commit
b1a9a52591

+ 6 - 0
src/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.ts

@@ -3,8 +3,10 @@ import { NodeMaterialBlockConnectionPointTypes } from '../../Enums/nodeMaterialB
 import { NodeMaterialBuildState } from '../../nodeMaterialBuildState';
 import { NodeMaterialConnectionPoint, NodeMaterialConnectionPointDirection } from '../../nodeMaterialBlockConnectionPoint';
 import { NodeMaterialBlockTargets } from '../../Enums/nodeMaterialBlockTargets';
+import { NodeMaterial, NodeMaterialDefines } from '../../nodeMaterial';
 import { editableInPropertyPage, PropertyTypeForEdition } from "../../nodeMaterialDecorator";
 import { _TypeStore } from '../../../../Misc/typeStore';
+import { AbstractMesh } from '../../../../Meshes/abstractMesh';
 import { NodeMaterialConnectionPointCustomObject } from "../../nodeMaterialConnectionPointCustomObject";
 
 export class AmbientOcclusionBlock extends NodeMaterialBlock {
@@ -46,6 +48,10 @@ export class AmbientOcclusionBlock extends NodeMaterialBlock {
         return this._outputs[0];
     }
 
+    public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {
+        defines.setValue("AMBIENTINGRAYSCALE", this.useAmbientInGrayScale);
+    }
+
     protected _buildBlock(state: NodeMaterialBuildState) {
         super._buildBlock(state);
 

+ 15 - 0
src/Materials/Node/Blocks/Fragment/pbrMetallicRoughnessBlock.ts

@@ -82,6 +82,15 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
     public opacityRGB: boolean = false;
 
     /**
+     * Initialize the block and prepare the context for build
+     * @param state defines the state that will be used for the build
+     */
+    public initialize(state: NodeMaterialBuildState) {
+        state._excludeVariableName("surfaceAlbedo");
+        state._excludeVariableName("alpha");
+    }
+
+    /**
      * Gets the current class name
      * @returns the class name
      */
@@ -229,6 +238,12 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
             defines.setValue("OPACITY", true);
         }
 
+        defines.setValue("ALPHABLEND", this.useAlphaBlending);
+        defines.setValue("ALPHAFROMALBEDO", this.useAlphaFromAlbedoTexture);
+        defines.setValue("ALPHATEST", this.useAlphaTest);
+        defines.setValue("ALPHATESTVALUE", this.alphaTestCutoff);
+        defines.setValue("OPACITYRGB", this.opacityRGB);
+
         // Ambient occlusion
         const aoBlock = this.ambientOcclusionParams.connectedPoint?.ownerBlock as Nullable<AmbientOcclusionBlock>;