@babylonjs/materials 6.39.0 → 6.41.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|