UNPKG

@babylonjs/core

Version:

Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.

141 lines (140 loc) 4.39 kB
import type { NodeMaterialConnectionPoint } from "./nodeMaterialBlockConnectionPoint.js"; import type { NodeMaterialBlock } from "./nodeMaterialBlock.js"; import type { InputBlock } from "./Blocks/Input/inputBlock.js"; import type { Scene } from "../../scene.js"; import type { Immutable, Nullable } from "../../types.js"; import type { NodeMaterial, NodeMaterialTextureBlocks } from "./nodeMaterial.js"; /** * Class used to store shared data between 2 NodeMaterialBuildState */ export declare class NodeMaterialBuildStateSharedData { /** * The node material we are currently building */ nodeMaterial: NodeMaterial; /** * Gets the list of emitted varyings */ temps: string[]; /** * Gets the list of emitted varyings */ varyings: string[]; /** * Gets the varying declaration string (for vertex shader) */ varyingDeclaration: string; /** * Gets the varying declaration string (for fragment shader) * This is potentially different from varyingDeclaration only in WebGPU */ varyingDeclarationFragment: string; /** * Gets the varying initialization string (for fragment shader) * Only used in WebGPU, to reconstruct the varying values from the vertex shader if their types is mat4x4f */ varyingInitializationsFragment: string; /** * List of the fragment output nodes */ fragmentOutputNodes: Immutable<Array<NodeMaterialBlock>>; /** * Input blocks */ inputBlocks: InputBlock[]; /** * Input blocks */ textureBlocks: NodeMaterialTextureBlocks[]; /** * Bindable blocks (Blocks that need to set data to the effect) */ bindableBlocks: NodeMaterialBlock[]; /** * Bindable blocks (Blocks that need to set data to the effect) that will always be called (by bindForSubMesh), contrary to bindableBlocks that won't be called if _mustRebind() returns false */ forcedBindableBlocks: NodeMaterialBlock[]; /** * List of blocks that can provide a compilation fallback */ blocksWithFallbacks: NodeMaterialBlock[]; /** * List of blocks that can provide a define update */ blocksWithDefines: NodeMaterialBlock[]; /** * List of blocks that can provide a repeatable content */ repeatableContentBlocks: NodeMaterialBlock[]; /** * List of blocks that can provide a dynamic list of uniforms */ dynamicUniformBlocks: NodeMaterialBlock[]; /** * List of blocks that can block the isReady function for the material */ blockingBlocks: NodeMaterialBlock[]; /** * Gets the list of animated inputs */ animatedInputs: InputBlock[]; /** * Configurations used to format the generated code */ formatConfig: { getUniformAnnotation: Nullable<(name: string) => string>; formatVariablename: (name: string) => string; }; /** * Build Id used to avoid multiple recompilations */ buildId: number; /** List of emitted variables */ variableNames: { [key: string]: number; }; /** List of emitted defines */ defineNames: { [key: string]: number; }; /** Should emit comments? */ emitComments: boolean; /** Emit build activity */ verbose: boolean; /** Gets or sets the hosting scene */ scene: Scene; /** * Gets the compilation hints emitted at compilation time */ hints: { needWorldViewMatrix: boolean; needWorldViewProjectionMatrix: boolean; needAlphaBlending: boolean; needAlphaTesting: boolean; }; /** * List of compilation checks */ checks: { emitVertex: boolean; emitFragment: boolean; notConnectedNonOptionalInputs: NodeMaterialConnectionPoint[]; customErrors: string[]; }; /** * Is vertex program allowed to be empty? */ allowEmptyVertexProgram: boolean; /** Creates a new shared data */ constructor(); /** * Push a new error to the build state, avoiding exceptions that can break the build process * @param message defines the error message to push */ raiseBuildError(message: string): void; /** * Emits console errors and exceptions if there is a failing check * @returns true if all checks pass */ emitErrors(): boolean; }