@babylonjs/materials 6.39.0 → 6.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cell/cellMaterial.js +6 -5
- package/cell/cellMaterial.js.map +1 -1
- package/custom/customMaterial.d.ts +205 -1
- package/custom/customMaterial.js +124 -2
- package/custom/customMaterial.js.map +1 -1
- package/custom/pbrCustomMaterial.d.ts +218 -1
- package/custom/pbrCustomMaterial.js +134 -2
- package/custom/pbrCustomMaterial.js.map +1 -1
- package/fire/fireMaterial.js +6 -5
- package/fire/fireMaterial.js.map +1 -1
- package/fur/furMaterial.js +7 -5
- package/fur/furMaterial.js.map +1 -1
- package/gradient/gradientMaterial.js +6 -5
- package/gradient/gradientMaterial.js.map +1 -1
- package/grid/gridMaterial.d.ts +4 -1
- package/grid/gridMaterial.js +7 -6
- package/grid/gridMaterial.js.map +1 -1
- package/lava/lavaMaterial.js +6 -5
- package/lava/lavaMaterial.js.map +1 -1
- package/mix/mixMaterial.js +6 -5
- package/mix/mixMaterial.js.map +1 -1
- package/normal/normalMaterial.js +6 -5
- package/normal/normalMaterial.js.map +1 -1
- package/package.json +2 -2
- package/shadowOnly/shadowOnlyMaterial.js +6 -5
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -1
- package/simple/simpleMaterial.js +6 -5
- package/simple/simpleMaterial.js.map +1 -1
- package/sky/skyMaterial.js +5 -4
- package/sky/skyMaterial.js.map +1 -1
- package/terrain/terrainMaterial.js +6 -5
- package/terrain/terrainMaterial.js.map +1 -1
- package/triPlanar/triPlanarMaterial.js +6 -5
- package/triPlanar/triPlanarMaterial.js.map +1 -1
- package/water/waterMaterial.js +6 -5
- package/water/waterMaterial.js.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"customMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/custom/customMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Effect } from \"core/Materials/effect\";\r\nimport type { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\nimport type { Nullable } from \"core/types\";\r\n\r\nexport class CustomShaderStructure {\r\n public FragmentStore: string;\r\n public VertexStore: string;\r\n\r\n constructor() {}\r\n}\r\n\r\nexport class ShaderSpecialParts {\r\n constructor() {}\r\n\r\n public Fragment_Begin: string;\r\n public Fragment_Definitions: string;\r\n public Fragment_MainBegin: string;\r\n public Fragment_MainEnd: string;\r\n\r\n // diffuseColor\r\n public Fragment_Custom_Diffuse: string;\r\n // lights\r\n public Fragment_Before_Lights: string;\r\n // fog\r\n public Fragment_Before_Fog: string;\r\n // alpha\r\n public Fragment_Custom_Alpha: string;\r\n\r\n public Fragment_Before_FragColor: string;\r\n\r\n public Vertex_Begin: string;\r\n public Vertex_Definitions: string;\r\n public Vertex_MainBegin: string;\r\n\r\n // positionUpdated\r\n public Vertex_Before_PositionUpdated: string;\r\n\r\n // normalUpdated\r\n public Vertex_Before_NormalUpdated: string;\r\n\r\n // worldPosComputed\r\n public Vertex_After_WorldPosComputed: string;\r\n\r\n // mainEnd\r\n public Vertex_MainEnd: string;\r\n}\r\n\r\nexport class CustomMaterial extends StandardMaterial {\r\n public static ShaderIndexer = 1;\r\n public CustomParts: ShaderSpecialParts;\r\n _createdShaderName: string;\r\n _customUniform: string[];\r\n _newUniforms: string[];\r\n _newUniformInstances: { [name: string]: any };\r\n _newSamplerInstances: { [name: string]: Texture };\r\n _customAttributes: string[];\r\n\r\n public FragmentShader: string;\r\n public VertexShader: string;\r\n\r\n public AttachAfterBind(mesh: Mesh | undefined, effect: Effect) {\r\n if (this._newUniformInstances) {\r\n for (const el in this._newUniformInstances) {\r\n const ea = el.toString().split(\"-\");\r\n if (ea[0] == \"vec2\") {\r\n effect.setVector2(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"vec3\") {\r\n if (this._newUniformInstances[el] instanceof Color3) {\r\n effect.setColor3(ea[1], this._newUniformInstances[el]);\r\n } else {\r\n effect.setVector3(ea[1], this._newUniformInstances[el]);\r\n }\r\n } else if (ea[0] == \"vec4\") {\r\n if (this._newUniformInstances[el] instanceof Color4) {\r\n effect.setDirectColor4(ea[1], this._newUniformInstances[el]);\r\n } else {\r\n effect.setVector4(ea[1], this._newUniformInstances[el]);\r\n }\r\n effect.setVector4(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"mat4\") {\r\n effect.setMatrix(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"float\") {\r\n effect.setFloat(ea[1], this._newUniformInstances[el]);\r\n }\r\n }\r\n }\r\n if (this._newSamplerInstances) {\r\n for (const el in this._newSamplerInstances) {\r\n const ea = el.toString().split(\"-\");\r\n if (ea[0] == \"sampler2D\" && this._newSamplerInstances[el].isReady && this._newSamplerInstances[el].isReady()) {\r\n effect.setTexture(ea[1], this._newSamplerInstances[el]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public ReviewUniform(name: string, arr: string[]): string[] {\r\n if (name == \"uniform\" && this._newUniforms) {\r\n for (let ind = 0; ind < this._newUniforms.length; ind++) {\r\n if (this._customUniform[ind].indexOf(\"sampler\") == -1) {\r\n arr.push(this._newUniforms[ind].replace(/\\[\\d*\\]/g, \"\"));\r\n }\r\n }\r\n }\r\n if (name == \"sampler\" && this._newUniforms) {\r\n for (let ind = 0; ind < this._newUniforms.length; ind++) {\r\n if (this._customUniform[ind].indexOf(\"sampler\") != -1) {\r\n arr.push(this._newUniforms[ind].replace(/\\[\\d*\\]/g, \"\"));\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n public Builder(shaderName: string, uniforms: string[], uniformBuffers: string[], samplers: string[], defines: MaterialDefines | string[], attributes?: string[]): string {\r\n if (attributes && this._customAttributes && this._customAttributes.length > 0) {\r\n attributes.push(...this._customAttributes);\r\n }\r\n\r\n this.ReviewUniform(\"uniform\", uniforms);\r\n this.ReviewUniform(\"sampler\", samplers);\r\n\r\n const name = this._createdShaderName;\r\n\r\n if (Effect.ShadersStore[name + \"VertexShader\"] && Effect.ShadersStore[name + \"PixelShader\"]) {\r\n return name;\r\n }\r\n Effect.ShadersStore[name + \"VertexShader\"] = this._injectCustomCode(this.VertexShader, \"vertex\");\r\n Effect.ShadersStore[name + \"PixelShader\"] = this._injectCustomCode(this.FragmentShader, \"fragment\");\r\n\r\n return name;\r\n }\r\n\r\n protected _injectCustomCode(code: string, shaderType: string): string {\r\n const customCode = this._getCustomCode(shaderType);\r\n\r\n for (const point in customCode) {\r\n const injectedCode = customCode[point];\r\n\r\n if (injectedCode && injectedCode.length > 0) {\r\n const fullPointName = \"#define \" + point;\r\n code = code.replace(fullPointName, \"\\n\" + injectedCode + \"\\n\" + fullPointName);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _getCustomCode(shaderType: string): { [pointName: string]: string } {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_BEGIN: this.CustomParts.Vertex_Begin,\r\n CUSTOM_VERTEX_DEFINITIONS: (this._customUniform?.join(\"\\n\") || \"\") + (this.CustomParts.Vertex_Definitions || \"\"),\r\n CUSTOM_VERTEX_MAIN_BEGIN: this.CustomParts.Vertex_MainBegin,\r\n CUSTOM_VERTEX_UPDATE_POSITION: this.CustomParts.Vertex_Before_PositionUpdated,\r\n CUSTOM_VERTEX_UPDATE_NORMAL: this.CustomParts.Vertex_Before_NormalUpdated,\r\n CUSTOM_VERTEX_MAIN_END: this.CustomParts.Vertex_MainEnd,\r\n CUSTOM_VERTEX_UPDATE_WORLDPOS: this.CustomParts.Vertex_After_WorldPosComputed,\r\n };\r\n }\r\n return {\r\n CUSTOM_FRAGMENT_BEGIN: this.CustomParts.Fragment_Begin,\r\n CUSTOM_FRAGMENT_DEFINITIONS: (this._customUniform?.join(\"\\n\") || \"\") + (this.CustomParts.Fragment_Definitions || \"\"),\r\n CUSTOM_FRAGMENT_MAIN_BEGIN: this.CustomParts.Fragment_MainBegin,\r\n CUSTOM_FRAGMENT_UPDATE_DIFFUSE: this.CustomParts.Fragment_Custom_Diffuse,\r\n CUSTOM_FRAGMENT_UPDATE_ALPHA: this.CustomParts.Fragment_Custom_Alpha,\r\n CUSTOM_FRAGMENT_BEFORE_LIGHTS: this.CustomParts.Fragment_Before_Lights,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: this.CustomParts.Fragment_Before_FragColor,\r\n CUSTOM_FRAGMENT_MAIN_END: this.CustomParts.Fragment_MainEnd,\r\n CUSTOM_FRAGMENT_BEFORE_FOG: this.CustomParts.Fragment_Before_Fog,\r\n };\r\n }\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.CustomParts = new ShaderSpecialParts();\r\n this.customShaderNameResolve = this.Builder;\r\n\r\n this.FragmentShader = Effect.ShadersStore[\"defaultPixelShader\"];\r\n this.VertexShader = Effect.ShadersStore[\"defaultVertexShader\"];\r\n\r\n CustomMaterial.ShaderIndexer++;\r\n this._createdShaderName = \"custom_\" + CustomMaterial.ShaderIndexer;\r\n }\r\n\r\n protected _afterBind(mesh?: Mesh, effect: Nullable<Effect> = null): void {\r\n if (!effect) {\r\n return;\r\n }\r\n this.AttachAfterBind(mesh, effect);\r\n try {\r\n super._afterBind(mesh, effect);\r\n } catch (e) {}\r\n }\r\n\r\n public AddUniform(name: string, kind: string, param: any): CustomMaterial {\r\n if (!this._customUniform) {\r\n this._customUniform = new Array();\r\n this._newUniforms = new Array();\r\n this._newSamplerInstances = {};\r\n this._newUniformInstances = {};\r\n }\r\n if (param) {\r\n if (kind.indexOf(\"sampler\") != -1) {\r\n (<any>this._newSamplerInstances)[kind + \"-\" + name] = param;\r\n } else {\r\n (<any>this._newUniformInstances)[kind + \"-\" + name] = param;\r\n }\r\n }\r\n this._customUniform.push(\"uniform \" + kind + \" \" + name + \";\");\r\n this._newUniforms.push(name);\r\n\r\n return this;\r\n }\r\n\r\n public AddAttribute(name: string): CustomMaterial {\r\n if (!this._customAttributes) {\r\n this._customAttributes = [];\r\n }\r\n\r\n this._customAttributes.push(name);\r\n\r\n return this;\r\n }\r\n\r\n public Fragment_Begin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Begin = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_Definitions(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Definitions = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_MainBegin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_MainBegin = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_MainEnd(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_MainEnd = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_Custom_Diffuse(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Custom_Diffuse = shaderPart.replace(\"result\", \"diffuseColor\");\r\n return this;\r\n }\r\n\r\n public Fragment_Custom_Alpha(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Custom_Alpha = shaderPart.replace(\"result\", \"alpha\");\r\n return this;\r\n }\r\n\r\n public Fragment_Before_Lights(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_Lights = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_Before_Fog(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_Fog = shaderPart;\r\n return this;\r\n }\r\n\r\n public Fragment_Before_FragColor(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_FragColor = shaderPart.replace(\"result\", \"color\");\r\n return this;\r\n }\r\n\r\n public Vertex_Begin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Begin = shaderPart;\r\n return this;\r\n }\r\n\r\n public Vertex_Definitions(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Definitions = shaderPart;\r\n return this;\r\n }\r\n\r\n public Vertex_MainBegin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_MainBegin = shaderPart;\r\n return this;\r\n }\r\n\r\n public Vertex_Before_PositionUpdated(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Before_PositionUpdated = shaderPart.replace(\"result\", \"positionUpdated\");\r\n return this;\r\n }\r\n\r\n public Vertex_Before_NormalUpdated(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Before_NormalUpdated = shaderPart.replace(\"result\", \"normalUpdated\");\r\n return this;\r\n }\r\n\r\n public Vertex_After_WorldPosComputed(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_After_WorldPosComputed = shaderPart;\r\n return this;\r\n }\r\n\r\n public Vertex_MainEnd(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_MainEnd = shaderPart;\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomMaterial\", CustomMaterial);\r\n"]}
|
1
|
+
{"version":3,"file":"customMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/custom/customMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Effect } from \"core/Materials/effect\";\r\nimport type { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\n\r\n/**\r\n * Structure of a custom shader\r\n */\r\nexport class CustomShaderStructure {\r\n /**\r\n * Fragment store\r\n */\r\n public FragmentStore: string;\r\n /**\r\n * Vertex store\r\n */\r\n public VertexStore: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n/**\r\n * Parts of a shader\r\n */\r\nexport class ShaderSpecialParts {\r\n constructor() {}\r\n\r\n /**\r\n * Beginning of the fragment shader\r\n */\r\n public Fragment_Begin: string;\r\n /**\r\n * Variable definitions of the fragment shader\r\n */\r\n public Fragment_Definitions: string;\r\n /**\r\n * Beginning of the fragment main function\r\n */\r\n public Fragment_MainBegin: string;\r\n /**\r\n * End of the fragment main function\r\n */\r\n public Fragment_MainEnd: string;\r\n\r\n /**\r\n * Diffuse color calculation\r\n */\r\n public Fragment_Custom_Diffuse: string;\r\n /**\r\n * Before lightning computations\r\n */\r\n public Fragment_Before_Lights: string;\r\n /**\r\n * Before fog computations\r\n */\r\n public Fragment_Before_Fog: string;\r\n /**\r\n * Alpha calculations\r\n */\r\n public Fragment_Custom_Alpha: string;\r\n /**\r\n * Before frag color is assigned\r\n */\r\n public Fragment_Before_FragColor: string;\r\n /**\r\n * Beginning of the vertex shader\r\n */\r\n public Vertex_Begin: string;\r\n /**\r\n * Variable definitions of the vertex shader\r\n */\r\n public Vertex_Definitions: string;\r\n /**\r\n * Start of the main function of the vertex shader\r\n */\r\n public Vertex_MainBegin: string;\r\n\r\n /**\r\n * Before the world position computation\r\n */\r\n public Vertex_Before_PositionUpdated: string;\r\n\r\n /**\r\n * Before the normal computation\r\n */\r\n public Vertex_Before_NormalUpdated: string;\r\n\r\n /**\r\n * After the world position has been computed\r\n */\r\n public Vertex_After_WorldPosComputed: string;\r\n\r\n /**\r\n * Main end of the vertex shader\r\n */\r\n public Vertex_MainEnd: string;\r\n}\r\n\r\n/**\r\n * Customized material\r\n */\r\nexport class CustomMaterial extends StandardMaterial {\r\n /**\r\n * Index for each created shader\r\n */\r\n public static ShaderIndexer = 1;\r\n /**\r\n * Custom shader structure\r\n */\r\n public CustomParts: ShaderSpecialParts;\r\n /**\r\n * Name of the shader\r\n */\r\n public _createdShaderName: string;\r\n /**\r\n * List of custom uniforms\r\n */\r\n public _customUniform: string[];\r\n /**\r\n * Names of the new uniforms\r\n */\r\n public _newUniforms: string[];\r\n /**\r\n * Instances of the new uniform objects\r\n */\r\n public _newUniformInstances: { [name: string]: any };\r\n /**\r\n * Instances of the new sampler objects\r\n */\r\n public _newSamplerInstances: { [name: string]: Texture };\r\n /**\r\n * List of the custom attributes\r\n */\r\n public _customAttributes: string[];\r\n\r\n /**\r\n * Fragment shader string\r\n */\r\n public FragmentShader: string;\r\n /**\r\n * Vertex shader string\r\n */\r\n public VertexShader: string;\r\n\r\n /**\r\n * Runs after the material is bound to a mesh\r\n * @param mesh mesh bound\r\n * @param effect bound effect used to render\r\n */\r\n public AttachAfterBind(mesh: Mesh | undefined, effect: Effect) {\r\n if (this._newUniformInstances) {\r\n for (const el in this._newUniformInstances) {\r\n const ea = el.toString().split(\"-\");\r\n if (ea[0] == \"vec2\") {\r\n effect.setVector2(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"vec3\") {\r\n if (this._newUniformInstances[el] instanceof Color3) {\r\n effect.setColor3(ea[1], this._newUniformInstances[el]);\r\n } else {\r\n effect.setVector3(ea[1], this._newUniformInstances[el]);\r\n }\r\n } else if (ea[0] == \"vec4\") {\r\n if (this._newUniformInstances[el] instanceof Color4) {\r\n effect.setDirectColor4(ea[1], this._newUniformInstances[el]);\r\n } else {\r\n effect.setVector4(ea[1], this._newUniformInstances[el]);\r\n }\r\n effect.setVector4(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"mat4\") {\r\n effect.setMatrix(ea[1], this._newUniformInstances[el]);\r\n } else if (ea[0] == \"float\") {\r\n effect.setFloat(ea[1], this._newUniformInstances[el]);\r\n }\r\n }\r\n }\r\n if (this._newSamplerInstances) {\r\n for (const el in this._newSamplerInstances) {\r\n const ea = el.toString().split(\"-\");\r\n if (ea[0] == \"sampler2D\" && this._newSamplerInstances[el].isReady && this._newSamplerInstances[el].isReady()) {\r\n effect.setTexture(ea[1], this._newSamplerInstances[el]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public ReviewUniform(name: string, arr: string[]): string[] {\r\n if (name == \"uniform\" && this._newUniforms) {\r\n for (let ind = 0; ind < this._newUniforms.length; ind++) {\r\n if (this._customUniform[ind].indexOf(\"sampler\") == -1) {\r\n arr.push(this._newUniforms[ind].replace(/\\[\\d*\\]/g, \"\"));\r\n }\r\n }\r\n }\r\n if (name == \"sampler\" && this._newUniforms) {\r\n for (let ind = 0; ind < this._newUniforms.length; ind++) {\r\n if (this._customUniform[ind].indexOf(\"sampler\") != -1) {\r\n arr.push(this._newUniforms[ind].replace(/\\[\\d*\\]/g, \"\"));\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Builds the material\r\n * @param shaderName name of the shader\r\n * @param uniforms list of uniforms\r\n * @param uniformBuffers list of uniform buffers\r\n * @param samplers list of samplers\r\n * @param defines list of defines\r\n * @param attributes list of attributes\r\n * @returns the shader name\r\n */\r\n public Builder(shaderName: string, uniforms: string[], uniformBuffers: string[], samplers: string[], defines: MaterialDefines | string[], attributes?: string[]): string {\r\n if (attributes && this._customAttributes && this._customAttributes.length > 0) {\r\n attributes.push(...this._customAttributes);\r\n }\r\n\r\n this.ReviewUniform(\"uniform\", uniforms);\r\n this.ReviewUniform(\"sampler\", samplers);\r\n\r\n const name = this._createdShaderName;\r\n\r\n if (Effect.ShadersStore[name + \"VertexShader\"] && Effect.ShadersStore[name + \"PixelShader\"]) {\r\n return name;\r\n }\r\n Effect.ShadersStore[name + \"VertexShader\"] = this._injectCustomCode(this.VertexShader, \"vertex\");\r\n Effect.ShadersStore[name + \"PixelShader\"] = this._injectCustomCode(this.FragmentShader, \"fragment\");\r\n\r\n return name;\r\n }\r\n\r\n protected _injectCustomCode(code: string, shaderType: string): string {\r\n const customCode = this._getCustomCode(shaderType);\r\n\r\n for (const point in customCode) {\r\n const injectedCode = customCode[point];\r\n\r\n if (injectedCode && injectedCode.length > 0) {\r\n const fullPointName = \"#define \" + point;\r\n code = code.replace(fullPointName, \"\\n\" + injectedCode + \"\\n\" + fullPointName);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _getCustomCode(shaderType: string): { [pointName: string]: string } {\r\n if (shaderType === \"vertex\") {\r\n return {\r\n CUSTOM_VERTEX_BEGIN: this.CustomParts.Vertex_Begin,\r\n CUSTOM_VERTEX_DEFINITIONS: (this._customUniform?.join(\"\\n\") || \"\") + (this.CustomParts.Vertex_Definitions || \"\"),\r\n CUSTOM_VERTEX_MAIN_BEGIN: this.CustomParts.Vertex_MainBegin,\r\n CUSTOM_VERTEX_UPDATE_POSITION: this.CustomParts.Vertex_Before_PositionUpdated,\r\n CUSTOM_VERTEX_UPDATE_NORMAL: this.CustomParts.Vertex_Before_NormalUpdated,\r\n CUSTOM_VERTEX_MAIN_END: this.CustomParts.Vertex_MainEnd,\r\n CUSTOM_VERTEX_UPDATE_WORLDPOS: this.CustomParts.Vertex_After_WorldPosComputed,\r\n };\r\n }\r\n return {\r\n CUSTOM_FRAGMENT_BEGIN: this.CustomParts.Fragment_Begin,\r\n CUSTOM_FRAGMENT_DEFINITIONS: (this._customUniform?.join(\"\\n\") || \"\") + (this.CustomParts.Fragment_Definitions || \"\"),\r\n CUSTOM_FRAGMENT_MAIN_BEGIN: this.CustomParts.Fragment_MainBegin,\r\n CUSTOM_FRAGMENT_UPDATE_DIFFUSE: this.CustomParts.Fragment_Custom_Diffuse,\r\n CUSTOM_FRAGMENT_UPDATE_ALPHA: this.CustomParts.Fragment_Custom_Alpha,\r\n CUSTOM_FRAGMENT_BEFORE_LIGHTS: this.CustomParts.Fragment_Before_Lights,\r\n CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR: this.CustomParts.Fragment_Before_FragColor,\r\n CUSTOM_FRAGMENT_MAIN_END: this.CustomParts.Fragment_MainEnd,\r\n CUSTOM_FRAGMENT_BEFORE_FOG: this.CustomParts.Fragment_Before_Fog,\r\n };\r\n }\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.CustomParts = new ShaderSpecialParts();\r\n this.customShaderNameResolve = this.Builder;\r\n\r\n this.FragmentShader = Effect.ShadersStore[\"defaultPixelShader\"];\r\n this.VertexShader = Effect.ShadersStore[\"defaultVertexShader\"];\r\n\r\n CustomMaterial.ShaderIndexer++;\r\n this._createdShaderName = \"custom_\" + CustomMaterial.ShaderIndexer;\r\n }\r\n\r\n protected _afterBind(mesh?: Mesh, effect: Nullable<Effect> = null, subMesh?: SubMesh): void {\r\n if (!effect) {\r\n return;\r\n }\r\n this.AttachAfterBind(mesh, effect);\r\n try {\r\n super._afterBind(mesh, effect, subMesh);\r\n } catch (e) {}\r\n }\r\n\r\n /**\r\n * Adds a new uniform to the shader\r\n * @param name the name of the uniform to add\r\n * @param kind the type of the uniform to add\r\n * @param param the value of the uniform to add\r\n * @returns the current material\r\n */\r\n public AddUniform(name: string, kind: string, param: any): CustomMaterial {\r\n if (!this._customUniform) {\r\n this._customUniform = new Array();\r\n this._newUniforms = new Array();\r\n this._newSamplerInstances = {};\r\n this._newUniformInstances = {};\r\n }\r\n if (param) {\r\n if (kind.indexOf(\"sampler\") != -1) {\r\n (<any>this._newSamplerInstances)[kind + \"-\" + name] = param;\r\n } else {\r\n (<any>this._newUniformInstances)[kind + \"-\" + name] = param;\r\n }\r\n }\r\n this._customUniform.push(\"uniform \" + kind + \" \" + name + \";\");\r\n this._newUniforms.push(name);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a custom attribute\r\n * @param name the name of the attribute\r\n * @returns the current material\r\n */\r\n public AddAttribute(name: string): CustomMaterial {\r\n if (!this._customAttributes) {\r\n this._customAttributes = [];\r\n }\r\n\r\n this._customAttributes.push(name);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Begin portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Begin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Begin = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Definitions portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Definitions(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Definitions = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_MainBegin portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_MainBegin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_MainBegin = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_MainEnd portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_MainEnd(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_MainEnd = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Custom_Diffuse portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Custom_Diffuse(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Custom_Diffuse = shaderPart.replace(\"result\", \"diffuseColor\");\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Custom_Alpha portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Custom_Alpha(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Custom_Alpha = shaderPart.replace(\"result\", \"alpha\");\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Before_Lights portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Before_Lights(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_Lights = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Before_Fog portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Before_Fog(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_Fog = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Fragment_Before_FragColor portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Fragment_Before_FragColor(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Fragment_Before_FragColor = shaderPart.replace(\"result\", \"color\");\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_Begin portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_Begin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Begin = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_Definitions portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_Definitions(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Definitions = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_MainBegin portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_MainBegin(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_MainBegin = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_Before_PositionUpdated portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_Before_PositionUpdated(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Before_PositionUpdated = shaderPart.replace(\"result\", \"positionUpdated\");\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_Before_NormalUpdated portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_Before_NormalUpdated(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_Before_NormalUpdated = shaderPart.replace(\"result\", \"normalUpdated\");\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_After_WorldPosComputed portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_After_WorldPosComputed(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_After_WorldPosComputed = shaderPart;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the code on Vertex_MainEnd portion\r\n * @param shaderPart the code string\r\n * @returns the current material\r\n */\r\n public Vertex_MainEnd(shaderPart: string): CustomMaterial {\r\n this.CustomParts.Vertex_MainEnd = shaderPart;\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomMaterial\", CustomMaterial);\r\n"]}
|
@@ -6,26 +6,87 @@ import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
6
6
|
import type { Scene } from "@babylonjs/core/scene.js";
|
7
7
|
import type { ICustomShaderNameResolveOptions } from "@babylonjs/core/Materials/material.js";
|
8
8
|
import type { Nullable } from "@babylonjs/core/types.js";
|
9
|
+
import type { SubMesh } from "@babylonjs/core/Meshes/subMesh.js";
|
10
|
+
/**
|
11
|
+
* Albedo parts of the shader
|
12
|
+
*/
|
9
13
|
export declare class ShaderAlbedoParts {
|
10
14
|
constructor();
|
15
|
+
/**
|
16
|
+
* Beginning of the fragment shader
|
17
|
+
*/
|
11
18
|
Fragment_Begin: string;
|
19
|
+
/**
|
20
|
+
* Fragment definitions
|
21
|
+
*/
|
12
22
|
Fragment_Definitions: string;
|
23
|
+
/**
|
24
|
+
* Beginning of the main function
|
25
|
+
*/
|
13
26
|
Fragment_MainBegin: string;
|
27
|
+
/**
|
28
|
+
* End of main function
|
29
|
+
*/
|
14
30
|
Fragment_MainEnd: string;
|
31
|
+
/**
|
32
|
+
* Albedo color
|
33
|
+
*/
|
15
34
|
Fragment_Custom_Albedo: string;
|
35
|
+
/**
|
36
|
+
* Lights
|
37
|
+
*/
|
16
38
|
Fragment_Before_Lights: string;
|
39
|
+
/**
|
40
|
+
* Metallic and roughness
|
41
|
+
*/
|
17
42
|
Fragment_Custom_MetallicRoughness: string;
|
43
|
+
/**
|
44
|
+
* Microsurface
|
45
|
+
*/
|
18
46
|
Fragment_Custom_MicroSurface: string;
|
47
|
+
/**
|
48
|
+
* Fog computations
|
49
|
+
*/
|
19
50
|
Fragment_Before_Fog: string;
|
51
|
+
/**
|
52
|
+
* Alpha
|
53
|
+
*/
|
20
54
|
Fragment_Custom_Alpha: string;
|
55
|
+
/**
|
56
|
+
* Color composition
|
57
|
+
*/
|
21
58
|
Fragment_Before_FinalColorComposition: string;
|
59
|
+
/**
|
60
|
+
* Fragment color
|
61
|
+
*/
|
22
62
|
Fragment_Before_FragColor: string;
|
63
|
+
/**
|
64
|
+
* Beginning of vertex shader
|
65
|
+
*/
|
23
66
|
Vertex_Begin: string;
|
67
|
+
/**
|
68
|
+
* Vertex definitions
|
69
|
+
*/
|
24
70
|
Vertex_Definitions: string;
|
71
|
+
/**
|
72
|
+
* Vertex main begin
|
73
|
+
*/
|
25
74
|
Vertex_MainBegin: string;
|
75
|
+
/**
|
76
|
+
* Vertex before position updated
|
77
|
+
*/
|
26
78
|
Vertex_Before_PositionUpdated: string;
|
79
|
+
/**
|
80
|
+
* Vertex before normal updated
|
81
|
+
*/
|
27
82
|
Vertex_Before_NormalUpdated: string;
|
83
|
+
/**
|
84
|
+
* Vertex after world pos computed
|
85
|
+
*/
|
28
86
|
Vertex_After_WorldPosComputed: string;
|
87
|
+
/**
|
88
|
+
* Vertex main end
|
89
|
+
*/
|
29
90
|
Vertex_MainEnd: string;
|
30
91
|
}
|
31
92
|
/**
|
@@ -33,48 +94,204 @@ export declare class ShaderAlbedoParts {
|
|
33
94
|
*/
|
34
95
|
export declare const ShaderAlebdoParts: typeof ShaderAlbedoParts;
|
35
96
|
export declare class PBRCustomMaterial extends PBRMaterial {
|
97
|
+
/**
|
98
|
+
* Index for each created shader
|
99
|
+
*/
|
36
100
|
static ShaderIndexer: number;
|
101
|
+
/**
|
102
|
+
* Custom shader structure
|
103
|
+
*/
|
37
104
|
CustomParts: ShaderAlbedoParts;
|
105
|
+
/**
|
106
|
+
* Name of the shader
|
107
|
+
*/
|
38
108
|
_createdShaderName: string;
|
109
|
+
/**
|
110
|
+
* List of custom uniforms
|
111
|
+
*/
|
39
112
|
_customUniform: string[];
|
113
|
+
/**
|
114
|
+
* Names of the new uniforms
|
115
|
+
*/
|
40
116
|
_newUniforms: string[];
|
117
|
+
/**
|
118
|
+
* Instances of the new uniform objects
|
119
|
+
*/
|
41
120
|
_newUniformInstances: {
|
42
121
|
[name: string]: any;
|
43
122
|
};
|
123
|
+
/**
|
124
|
+
* Instances of the new sampler objects
|
125
|
+
*/
|
44
126
|
_newSamplerInstances: {
|
45
127
|
[name: string]: Texture;
|
46
128
|
};
|
129
|
+
/**
|
130
|
+
* List of the custom attributes
|
131
|
+
*/
|
47
132
|
_customAttributes: string[];
|
133
|
+
/**
|
134
|
+
* Fragment shader string
|
135
|
+
*/
|
48
136
|
FragmentShader: string;
|
137
|
+
/**
|
138
|
+
* Vertex shader string
|
139
|
+
*/
|
49
140
|
VertexShader: string;
|
141
|
+
/**
|
142
|
+
* Runs after the material is bound to a mesh
|
143
|
+
* @param mesh mesh bound
|
144
|
+
* @param effect bound effect used to render
|
145
|
+
*/
|
50
146
|
AttachAfterBind(mesh: Mesh | undefined, effect: Effect): void;
|
147
|
+
/**
|
148
|
+
* @internal
|
149
|
+
*/
|
51
150
|
ReviewUniform(name: string, arr: string[]): string[];
|
151
|
+
/**
|
152
|
+
* Builds the material
|
153
|
+
* @param shaderName name of the shader
|
154
|
+
* @param uniforms list of uniforms
|
155
|
+
* @param uniformBuffers list of uniform buffers
|
156
|
+
* @param samplers list of samplers
|
157
|
+
* @param defines list of defines
|
158
|
+
* @param attributes list of attributes
|
159
|
+
* @param options options to compile the shader
|
160
|
+
* @returns the shader name
|
161
|
+
*/
|
52
162
|
Builder(shaderName: string, uniforms: string[], uniformBuffers: string[], samplers: string[], defines: MaterialDefines | string[], attributes?: string[], options?: ICustomShaderNameResolveOptions): string;
|
53
163
|
protected _injectCustomCode(code: string, shaderType: string): string;
|
54
164
|
protected _getCustomCode(shaderType: string): {
|
55
165
|
[pointName: string]: string;
|
56
166
|
};
|
57
167
|
constructor(name: string, scene?: Scene);
|
58
|
-
protected _afterBind(mesh?: Mesh, effect?: Nullable<Effect
|
168
|
+
protected _afterBind(mesh?: Mesh, effect?: Nullable<Effect>, subMesh?: SubMesh): void;
|
169
|
+
/**
|
170
|
+
* Adds a new uniform to the shader
|
171
|
+
* @param name the name of the uniform to add
|
172
|
+
* @param kind the type of the uniform to add
|
173
|
+
* @param param the value of the uniform to add
|
174
|
+
* @returns the current material
|
175
|
+
*/
|
59
176
|
AddUniform(name: string, kind: string, param: any): PBRCustomMaterial;
|
177
|
+
/**
|
178
|
+
* Adds a custom attribute
|
179
|
+
* @param name the name of the attribute
|
180
|
+
* @returns the current material
|
181
|
+
*/
|
60
182
|
AddAttribute(name: string): PBRCustomMaterial;
|
183
|
+
/**
|
184
|
+
* Sets the code on Fragment_Begin portion
|
185
|
+
* @param shaderPart the code string
|
186
|
+
* @returns the current material
|
187
|
+
*/
|
61
188
|
Fragment_Begin(shaderPart: string): PBRCustomMaterial;
|
189
|
+
/**
|
190
|
+
* Sets the code on Fragment_Definitions portion
|
191
|
+
* @param shaderPart the code string
|
192
|
+
* @returns the current material
|
193
|
+
*/
|
62
194
|
Fragment_Definitions(shaderPart: string): PBRCustomMaterial;
|
195
|
+
/**
|
196
|
+
* Sets the code on Fragment_MainBegin portion
|
197
|
+
* @param shaderPart the code string
|
198
|
+
* @returns the current material
|
199
|
+
*/
|
63
200
|
Fragment_MainBegin(shaderPart: string): PBRCustomMaterial;
|
201
|
+
/**
|
202
|
+
* Sets the code on Fragment_Custom_Albedo portion
|
203
|
+
* @param shaderPart the code string
|
204
|
+
* @returns the current material
|
205
|
+
*/
|
64
206
|
Fragment_Custom_Albedo(shaderPart: string): PBRCustomMaterial;
|
207
|
+
/**
|
208
|
+
* Sets the code on Fragment_Custom_Alpha portion
|
209
|
+
* @param shaderPart the code string
|
210
|
+
* @returns the current material
|
211
|
+
*/
|
65
212
|
Fragment_Custom_Alpha(shaderPart: string): PBRCustomMaterial;
|
213
|
+
/**
|
214
|
+
* Sets the code on Fragment_Before_Lights portion
|
215
|
+
* @param shaderPart the code string
|
216
|
+
* @returns the current material
|
217
|
+
*/
|
66
218
|
Fragment_Before_Lights(shaderPart: string): PBRCustomMaterial;
|
219
|
+
/**
|
220
|
+
* Sets the code on Fragment_Custom_MetallicRoughness portion
|
221
|
+
* @param shaderPart the code string
|
222
|
+
* @returns the current material
|
223
|
+
*/
|
67
224
|
Fragment_Custom_MetallicRoughness(shaderPart: string): PBRCustomMaterial;
|
225
|
+
/**
|
226
|
+
* Sets the code on Fragment_Custom_MicroSurface portion
|
227
|
+
* @param shaderPart the code string
|
228
|
+
* @returns the current material
|
229
|
+
*/
|
68
230
|
Fragment_Custom_MicroSurface(shaderPart: string): PBRCustomMaterial;
|
231
|
+
/**
|
232
|
+
* Sets the code on Fragment_Before_Fog portion
|
233
|
+
* @param shaderPart the code string
|
234
|
+
* @returns the current material
|
235
|
+
*/
|
69
236
|
Fragment_Before_Fog(shaderPart: string): PBRCustomMaterial;
|
237
|
+
/**
|
238
|
+
* Sets the code on Fragment_Before_FinalColorComposition portion
|
239
|
+
* @param shaderPart the code string
|
240
|
+
* @returns the current material
|
241
|
+
*/
|
70
242
|
Fragment_Before_FinalColorComposition(shaderPart: string): PBRCustomMaterial;
|
243
|
+
/**
|
244
|
+
* Sets the code on Fragment_Before_FragColor portion
|
245
|
+
* @param shaderPart the code string
|
246
|
+
* @returns the current material
|
247
|
+
*/
|
71
248
|
Fragment_Before_FragColor(shaderPart: string): PBRCustomMaterial;
|
249
|
+
/**
|
250
|
+
* Sets the code on Fragment_MainEnd portion
|
251
|
+
* @param shaderPart the code string
|
252
|
+
* @returns the current material
|
253
|
+
*/
|
72
254
|
Fragment_MainEnd(shaderPart: string): PBRCustomMaterial;
|
255
|
+
/**
|
256
|
+
* Sets the code on Vertex_Begin portion
|
257
|
+
* @param shaderPart the code string
|
258
|
+
* @returns the current material
|
259
|
+
*/
|
73
260
|
Vertex_Begin(shaderPart: string): PBRCustomMaterial;
|
261
|
+
/**
|
262
|
+
* Sets the code on Vertex_Definitions portion
|
263
|
+
* @param shaderPart the code string
|
264
|
+
* @returns the current material
|
265
|
+
*/
|
74
266
|
Vertex_Definitions(shaderPart: string): PBRCustomMaterial;
|
267
|
+
/**
|
268
|
+
* Sets the code on Vertex_MainBegin portion
|
269
|
+
* @param shaderPart the code string
|
270
|
+
* @returns the current material
|
271
|
+
*/
|
75
272
|
Vertex_MainBegin(shaderPart: string): PBRCustomMaterial;
|
273
|
+
/**
|
274
|
+
* Sets the code on Vertex_Before_PositionUpdated portion
|
275
|
+
* @param shaderPart the code string
|
276
|
+
* @returns the current material
|
277
|
+
*/
|
76
278
|
Vertex_Before_PositionUpdated(shaderPart: string): PBRCustomMaterial;
|
279
|
+
/**
|
280
|
+
* Sets the code on Vertex_Before_NormalUpdated portion
|
281
|
+
* @param shaderPart the code string
|
282
|
+
* @returns the current material
|
283
|
+
*/
|
77
284
|
Vertex_Before_NormalUpdated(shaderPart: string): PBRCustomMaterial;
|
285
|
+
/**
|
286
|
+
* Sets the code on Vertex_After_WorldPosComputed portion
|
287
|
+
* @param shaderPart the code string
|
288
|
+
* @returns the current material
|
289
|
+
*/
|
78
290
|
Vertex_After_WorldPosComputed(shaderPart: string): PBRCustomMaterial;
|
291
|
+
/**
|
292
|
+
* Sets the code on Vertex_MainEnd portion
|
293
|
+
* @param shaderPart the code string
|
294
|
+
* @returns the current material
|
295
|
+
*/
|
79
296
|
Vertex_MainEnd(shaderPart: string): PBRCustomMaterial;
|
80
297
|
}
|
@@ -3,6 +3,9 @@ import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
|
|
3
3
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
4
4
|
import { ShaderCodeInliner } from "@babylonjs/core/Engines/Processors/shaderCodeInliner.js";
|
5
5
|
import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
|
6
|
+
/**
|
7
|
+
* Albedo parts of the shader
|
8
|
+
*/
|
6
9
|
export class ShaderAlbedoParts {
|
7
10
|
constructor() { }
|
8
11
|
}
|
@@ -11,6 +14,11 @@ export class ShaderAlbedoParts {
|
|
11
14
|
*/
|
12
15
|
export const ShaderAlebdoParts = ShaderAlbedoParts;
|
13
16
|
export class PBRCustomMaterial extends PBRMaterial {
|
17
|
+
/**
|
18
|
+
* Runs after the material is bound to a mesh
|
19
|
+
* @param mesh mesh bound
|
20
|
+
* @param effect bound effect used to render
|
21
|
+
*/
|
14
22
|
AttachAfterBind(mesh, effect) {
|
15
23
|
if (this._newUniformInstances) {
|
16
24
|
for (const el in this._newUniformInstances) {
|
@@ -52,6 +60,9 @@ export class PBRCustomMaterial extends PBRMaterial {
|
|
52
60
|
}
|
53
61
|
}
|
54
62
|
}
|
63
|
+
/**
|
64
|
+
* @internal
|
65
|
+
*/
|
55
66
|
ReviewUniform(name, arr) {
|
56
67
|
if (name == "uniform" && this._newUniforms) {
|
57
68
|
for (let ind = 0; ind < this._newUniforms.length; ind++) {
|
@@ -69,6 +80,17 @@ export class PBRCustomMaterial extends PBRMaterial {
|
|
69
80
|
}
|
70
81
|
return arr;
|
71
82
|
}
|
83
|
+
/**
|
84
|
+
* Builds the material
|
85
|
+
* @param shaderName name of the shader
|
86
|
+
* @param uniforms list of uniforms
|
87
|
+
* @param uniformBuffers list of uniform buffers
|
88
|
+
* @param samplers list of samplers
|
89
|
+
* @param defines list of defines
|
90
|
+
* @param attributes list of attributes
|
91
|
+
* @param options options to compile the shader
|
92
|
+
* @returns the shader name
|
93
|
+
*/
|
72
94
|
Builder(shaderName, uniforms, uniformBuffers, samplers, defines, attributes, options) {
|
73
95
|
if (options) {
|
74
96
|
const currentProcessing = options.processFinalCode;
|
@@ -145,16 +167,23 @@ export class PBRCustomMaterial extends PBRMaterial {
|
|
145
167
|
PBRCustomMaterial.ShaderIndexer++;
|
146
168
|
this._createdShaderName = "custompbr_" + PBRCustomMaterial.ShaderIndexer;
|
147
169
|
}
|
148
|
-
_afterBind(mesh, effect = null) {
|
170
|
+
_afterBind(mesh, effect = null, subMesh) {
|
149
171
|
if (!effect) {
|
150
172
|
return;
|
151
173
|
}
|
152
174
|
this.AttachAfterBind(mesh, effect);
|
153
175
|
try {
|
154
|
-
super._afterBind(mesh, effect);
|
176
|
+
super._afterBind(mesh, effect, subMesh);
|
155
177
|
}
|
156
178
|
catch (e) { }
|
157
179
|
}
|
180
|
+
/**
|
181
|
+
* Adds a new uniform to the shader
|
182
|
+
* @param name the name of the uniform to add
|
183
|
+
* @param kind the type of the uniform to add
|
184
|
+
* @param param the value of the uniform to add
|
185
|
+
* @returns the current material
|
186
|
+
*/
|
158
187
|
AddUniform(name, kind, param) {
|
159
188
|
if (!this._customUniform) {
|
160
189
|
this._customUniform = new Array();
|
@@ -174,6 +203,11 @@ export class PBRCustomMaterial extends PBRMaterial {
|
|
174
203
|
this._newUniforms.push(name);
|
175
204
|
return this;
|
176
205
|
}
|
206
|
+
/**
|
207
|
+
* Adds a custom attribute
|
208
|
+
* @param name the name of the attribute
|
209
|
+
* @returns the current material
|
210
|
+
*/
|
177
211
|
AddAttribute(name) {
|
178
212
|
if (!this._customAttributes) {
|
179
213
|
this._customAttributes = [];
|
@@ -181,83 +215,181 @@ export class PBRCustomMaterial extends PBRMaterial {
|
|
181
215
|
this._customAttributes.push(name);
|
182
216
|
return this;
|
183
217
|
}
|
218
|
+
/**
|
219
|
+
* Sets the code on Fragment_Begin portion
|
220
|
+
* @param shaderPart the code string
|
221
|
+
* @returns the current material
|
222
|
+
*/
|
184
223
|
Fragment_Begin(shaderPart) {
|
185
224
|
this.CustomParts.Fragment_Begin = shaderPart;
|
186
225
|
return this;
|
187
226
|
}
|
227
|
+
/**
|
228
|
+
* Sets the code on Fragment_Definitions portion
|
229
|
+
* @param shaderPart the code string
|
230
|
+
* @returns the current material
|
231
|
+
*/
|
188
232
|
Fragment_Definitions(shaderPart) {
|
189
233
|
this.CustomParts.Fragment_Definitions = shaderPart;
|
190
234
|
return this;
|
191
235
|
}
|
236
|
+
/**
|
237
|
+
* Sets the code on Fragment_MainBegin portion
|
238
|
+
* @param shaderPart the code string
|
239
|
+
* @returns the current material
|
240
|
+
*/
|
192
241
|
Fragment_MainBegin(shaderPart) {
|
193
242
|
this.CustomParts.Fragment_MainBegin = shaderPart;
|
194
243
|
return this;
|
195
244
|
}
|
245
|
+
/**
|
246
|
+
* Sets the code on Fragment_Custom_Albedo portion
|
247
|
+
* @param shaderPart the code string
|
248
|
+
* @returns the current material
|
249
|
+
*/
|
196
250
|
Fragment_Custom_Albedo(shaderPart) {
|
197
251
|
this.CustomParts.Fragment_Custom_Albedo = shaderPart.replace("result", "surfaceAlbedo");
|
198
252
|
return this;
|
199
253
|
}
|
254
|
+
/**
|
255
|
+
* Sets the code on Fragment_Custom_Alpha portion
|
256
|
+
* @param shaderPart the code string
|
257
|
+
* @returns the current material
|
258
|
+
*/
|
200
259
|
Fragment_Custom_Alpha(shaderPart) {
|
201
260
|
this.CustomParts.Fragment_Custom_Alpha = shaderPart.replace("result", "alpha");
|
202
261
|
return this;
|
203
262
|
}
|
263
|
+
/**
|
264
|
+
* Sets the code on Fragment_Before_Lights portion
|
265
|
+
* @param shaderPart the code string
|
266
|
+
* @returns the current material
|
267
|
+
*/
|
204
268
|
Fragment_Before_Lights(shaderPart) {
|
205
269
|
this.CustomParts.Fragment_Before_Lights = shaderPart;
|
206
270
|
return this;
|
207
271
|
}
|
272
|
+
/**
|
273
|
+
* Sets the code on Fragment_Custom_MetallicRoughness portion
|
274
|
+
* @param shaderPart the code string
|
275
|
+
* @returns the current material
|
276
|
+
*/
|
208
277
|
Fragment_Custom_MetallicRoughness(shaderPart) {
|
209
278
|
this.CustomParts.Fragment_Custom_MetallicRoughness = shaderPart;
|
210
279
|
return this;
|
211
280
|
}
|
281
|
+
/**
|
282
|
+
* Sets the code on Fragment_Custom_MicroSurface portion
|
283
|
+
* @param shaderPart the code string
|
284
|
+
* @returns the current material
|
285
|
+
*/
|
212
286
|
Fragment_Custom_MicroSurface(shaderPart) {
|
213
287
|
this.CustomParts.Fragment_Custom_MicroSurface = shaderPart;
|
214
288
|
return this;
|
215
289
|
}
|
290
|
+
/**
|
291
|
+
* Sets the code on Fragment_Before_Fog portion
|
292
|
+
* @param shaderPart the code string
|
293
|
+
* @returns the current material
|
294
|
+
*/
|
216
295
|
Fragment_Before_Fog(shaderPart) {
|
217
296
|
this.CustomParts.Fragment_Before_Fog = shaderPart;
|
218
297
|
return this;
|
219
298
|
}
|
299
|
+
/**
|
300
|
+
* Sets the code on Fragment_Before_FinalColorComposition portion
|
301
|
+
* @param shaderPart the code string
|
302
|
+
* @returns the current material
|
303
|
+
*/
|
220
304
|
Fragment_Before_FinalColorComposition(shaderPart) {
|
221
305
|
this.CustomParts.Fragment_Before_FinalColorComposition = shaderPart;
|
222
306
|
return this;
|
223
307
|
}
|
308
|
+
/**
|
309
|
+
* Sets the code on Fragment_Before_FragColor portion
|
310
|
+
* @param shaderPart the code string
|
311
|
+
* @returns the current material
|
312
|
+
*/
|
224
313
|
Fragment_Before_FragColor(shaderPart) {
|
225
314
|
this.CustomParts.Fragment_Before_FragColor = shaderPart.replace("result", "color");
|
226
315
|
return this;
|
227
316
|
}
|
317
|
+
/**
|
318
|
+
* Sets the code on Fragment_MainEnd portion
|
319
|
+
* @param shaderPart the code string
|
320
|
+
* @returns the current material
|
321
|
+
*/
|
228
322
|
Fragment_MainEnd(shaderPart) {
|
229
323
|
this.CustomParts.Fragment_MainEnd = shaderPart;
|
230
324
|
return this;
|
231
325
|
}
|
326
|
+
/**
|
327
|
+
* Sets the code on Vertex_Begin portion
|
328
|
+
* @param shaderPart the code string
|
329
|
+
* @returns the current material
|
330
|
+
*/
|
232
331
|
Vertex_Begin(shaderPart) {
|
233
332
|
this.CustomParts.Vertex_Begin = shaderPart;
|
234
333
|
return this;
|
235
334
|
}
|
335
|
+
/**
|
336
|
+
* Sets the code on Vertex_Definitions portion
|
337
|
+
* @param shaderPart the code string
|
338
|
+
* @returns the current material
|
339
|
+
*/
|
236
340
|
Vertex_Definitions(shaderPart) {
|
237
341
|
this.CustomParts.Vertex_Definitions = shaderPart;
|
238
342
|
return this;
|
239
343
|
}
|
344
|
+
/**
|
345
|
+
* Sets the code on Vertex_MainBegin portion
|
346
|
+
* @param shaderPart the code string
|
347
|
+
* @returns the current material
|
348
|
+
*/
|
240
349
|
Vertex_MainBegin(shaderPart) {
|
241
350
|
this.CustomParts.Vertex_MainBegin = shaderPart;
|
242
351
|
return this;
|
243
352
|
}
|
353
|
+
/**
|
354
|
+
* Sets the code on Vertex_Before_PositionUpdated portion
|
355
|
+
* @param shaderPart the code string
|
356
|
+
* @returns the current material
|
357
|
+
*/
|
244
358
|
Vertex_Before_PositionUpdated(shaderPart) {
|
245
359
|
this.CustomParts.Vertex_Before_PositionUpdated = shaderPart.replace("result", "positionUpdated");
|
246
360
|
return this;
|
247
361
|
}
|
362
|
+
/**
|
363
|
+
* Sets the code on Vertex_Before_NormalUpdated portion
|
364
|
+
* @param shaderPart the code string
|
365
|
+
* @returns the current material
|
366
|
+
*/
|
248
367
|
Vertex_Before_NormalUpdated(shaderPart) {
|
249
368
|
this.CustomParts.Vertex_Before_NormalUpdated = shaderPart.replace("result", "normalUpdated");
|
250
369
|
return this;
|
251
370
|
}
|
371
|
+
/**
|
372
|
+
* Sets the code on Vertex_After_WorldPosComputed portion
|
373
|
+
* @param shaderPart the code string
|
374
|
+
* @returns the current material
|
375
|
+
*/
|
252
376
|
Vertex_After_WorldPosComputed(shaderPart) {
|
253
377
|
this.CustomParts.Vertex_After_WorldPosComputed = shaderPart;
|
254
378
|
return this;
|
255
379
|
}
|
380
|
+
/**
|
381
|
+
* Sets the code on Vertex_MainEnd portion
|
382
|
+
* @param shaderPart the code string
|
383
|
+
* @returns the current material
|
384
|
+
*/
|
256
385
|
Vertex_MainEnd(shaderPart) {
|
257
386
|
this.CustomParts.Vertex_MainEnd = shaderPart;
|
258
387
|
return this;
|
259
388
|
}
|
260
389
|
}
|
390
|
+
/**
|
391
|
+
* Index for each created shader
|
392
|
+
*/
|
261
393
|
PBRCustomMaterial.ShaderIndexer = 1;
|
262
394
|
RegisterClass("BABYLON.PBRCustomMaterial", PBRCustomMaterial);
|
263
395
|
//# sourceMappingURL=pbrCustomMaterial.js.map
|