@babylonjs/materials 9.22.1 → 9.23.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.d.ts +1 -1
- package/cell/cellMaterial.js +4 -12
- package/cell/cellMaterial.js.map +1 -1
- package/fire/fireMaterial.d.ts +1 -1
- package/fire/fireMaterial.js +3 -12
- package/fire/fireMaterial.js.map +1 -1
- package/fur/furMaterial.d.ts +1 -1
- package/fur/furMaterial.js +3 -12
- package/fur/furMaterial.js.map +1 -1
- package/gradient/gradientMaterial.d.ts +1 -1
- package/gradient/gradientMaterial.js +4 -12
- package/gradient/gradientMaterial.js.map +1 -1
- package/grid/gridMaterial.d.ts +1 -1
- package/grid/gridMaterial.js +3 -12
- package/grid/gridMaterial.js.map +1 -1
- package/lava/lavaMaterial.d.ts +1 -1
- package/lava/lavaMaterial.js +3 -12
- package/lava/lavaMaterial.js.map +1 -1
- package/mix/mixMaterial.d.ts +1 -1
- package/mix/mixMaterial.js +4 -12
- package/mix/mixMaterial.js.map +1 -1
- package/normal/normalMaterial.d.ts +1 -1
- package/normal/normalMaterial.js +4 -12
- package/normal/normalMaterial.js.map +1 -1
- package/package.json +2 -2
- package/shadowOnly/shadowOnlyMaterial.d.ts +1 -1
- package/shadowOnly/shadowOnlyMaterial.js +3 -12
- package/shadowOnly/shadowOnlyMaterial.js.map +1 -1
- package/simple/simpleMaterial.d.ts +1 -1
- package/simple/simpleMaterial.js +4 -12
- package/simple/simpleMaterial.js.map +1 -1
- package/sky/skyMaterial.d.ts +1 -1
- package/sky/skyMaterial.js +3 -12
- package/sky/skyMaterial.js.map +1 -1
- package/terrain/terrainMaterial.d.ts +1 -1
- package/terrain/terrainMaterial.js +4 -12
- package/terrain/terrainMaterial.js.map +1 -1
- package/triPlanar/triPlanarMaterial.d.ts +1 -1
- package/triPlanar/triPlanarMaterial.js +4 -12
- package/triPlanar/triPlanarMaterial.js.map +1 -1
- package/water/waterMaterial.d.ts +1 -1
- package/water/waterMaterial.js +3 -12
- package/water/waterMaterial.js.map +1 -1
package/fur/furMaterial.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"furMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/fur/furMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { Tags } from \"core/Misc/tags\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { DynamicTexture } from \"core/Materials/Textures/dynamicTexture\";\r\nimport { type IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\n\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass FurMaterialDefines extends MaterialDefines {\r\n public DIFFUSE = false;\r\n public HEIGHTMAP = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public HIGHLEVEL = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public AREALIGHTNOROUGHTNESS = true;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class FurMaterial extends PushMaterial {\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor diffuseTexture: BaseTexture;\r\n\r\n @serializeAsTexture(\"heightTexture\")\r\n private _heightTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor heightTexture: BaseTexture;\r\n\r\n @serializeAsColor3()\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serialize()\r\n public furLength: number = 1;\r\n\r\n @serialize()\r\n public furAngle: number = 0;\r\n\r\n @serializeAsColor3()\r\n public furColor = new Color3(0.44, 0.21, 0.02);\r\n\r\n @serialize()\r\n public furOffset: number = 0.0;\r\n\r\n @serialize()\r\n public furSpacing: number = 12;\r\n\r\n @serializeAsVector3()\r\n public furGravity = new Vector3(0, 0, 0);\r\n\r\n @serialize()\r\n public furSpeed: number = 100;\r\n\r\n @serialize()\r\n public furDensity: number = 20;\r\n\r\n @serialize()\r\n public furOcclusion: number = 0.0;\r\n\r\n public furTexture: DynamicTexture;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor disableLighting: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor maxSimultaneousLights: number;\r\n\r\n @serialize()\r\n public highLevelFur: boolean = true;\r\n\r\n public _meshes: AbstractMesh[];\r\n\r\n private _furTime: number = 0;\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * Instantiates a Fur Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n @serialize()\r\n public get furTime() {\r\n return this._furTime;\r\n }\r\n\r\n public set furTime(furTime: number) {\r\n this._furTime = furTime;\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public updateFur(): void {\r\n for (let i = 1; i < this._meshes.length; i++) {\r\n const offsetFur = <FurMaterial>this._meshes[i].material;\r\n\r\n offsetFur.furLength = this.furLength;\r\n offsetFur.furAngle = this.furAngle;\r\n offsetFur.furGravity = this.furGravity;\r\n offsetFur.furSpacing = this.furSpacing;\r\n offsetFur.furSpeed = this.furSpeed;\r\n offsetFur.furColor = this.furColor;\r\n offsetFur.diffuseTexture = this.diffuseTexture;\r\n offsetFur.furTexture = this.furTexture;\r\n offsetFur.highLevelFur = this.highLevelFur;\r\n offsetFur.furTime = this.furTime;\r\n offsetFur.furDensity = this.furDensity;\r\n }\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FurMaterialDefines();\r\n }\r\n\r\n const defines = <FurMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this.diffuseTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.DIFFUSE = true;\r\n }\r\n }\r\n if (this.heightTexture && engine.getCaps().maxVertexTextureImageUnits) {\r\n if (!this.heightTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.HEIGHTMAP = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // High level\r\n if (this.highLevelFur !== defines.HIGHLEVEL) {\r\n defines.HIGHLEVEL = true;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Lights\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this.maxSimultaneousLights);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"fur\";\r\n const join = defines.toString();\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vDiffuseColor\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"mBones\",\r\n \"diffuseMatrix\",\r\n \"logarithmicDepthConstant\",\r\n \"furLength\",\r\n \"furAngle\",\r\n \"furColor\",\r\n \"furOffset\",\r\n \"furGravity\",\r\n \"furTime\",\r\n \"furSpacing\",\r\n \"furDensity\",\r\n \"furOcclusion\",\r\n ];\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers = [\"diffuseSampler\", \"heightTexture\", \"furTexture\", \"areaLightsLTC1Sampler\", \"areaLightsLTC2Sampler\"];\r\n\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this.maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/fur.vertex\"), import(\"./wgsl/fur.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"./fur.vertex\"), import(\"./fur.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n // Check if Area Lights have LTC texture.\r\n if (defines[\"AREALIGHTUSED\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FurMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Textures\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._activeEffect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n\r\n this._activeEffect.setFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n this._activeEffect.setMatrix(\"diffuseMatrix\", this._diffuseTexture.getTextureMatrix());\r\n }\r\n\r\n if (this._heightTexture) {\r\n this._activeEffect.setTexture(\"heightTexture\", this._heightTexture);\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(this._activeEffect, this, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n this._activeEffect.setColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha * mesh.visibility);\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setFloat(\"furLength\", this.furLength);\r\n this._activeEffect.setFloat(\"furAngle\", this.furAngle);\r\n this._activeEffect.setColor4(\"furColor\", this.furColor, 1.0);\r\n\r\n if (this.highLevelFur) {\r\n this._activeEffect.setVector3(\"furGravity\", this.furGravity);\r\n this._activeEffect.setFloat(\"furOffset\", this.furOffset);\r\n this._activeEffect.setFloat(\"furSpacing\", this.furSpacing);\r\n this._activeEffect.setFloat(\"furDensity\", this.furDensity);\r\n this._activeEffect.setFloat(\"furOcclusion\", this.furOcclusion);\r\n\r\n this._furTime += this.getScene().getEngine().getDeltaTime() / this.furSpeed;\r\n this._activeEffect.setFloat(\"furTime\", this._furTime);\r\n\r\n this._activeEffect.setTexture(\"furTexture\", this.furTexture);\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = [];\r\n\r\n if (this.diffuseTexture && this.diffuseTexture.animations && this.diffuseTexture.animations.length > 0) {\r\n results.push(this.diffuseTexture);\r\n }\r\n\r\n if (this.heightTexture && this.heightTexture.animations && this.heightTexture.animations.length > 0) {\r\n results.push(this.heightTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._heightTexture) {\r\n activeTextures.push(this._heightTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this.diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._heightTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n if (this.diffuseTexture) {\r\n this.diffuseTexture.dispose();\r\n }\r\n\r\n if (this._meshes) {\r\n for (let i = 1; i < this._meshes.length; i++) {\r\n const mat = this._meshes[i].material;\r\n\r\n if (mat) {\r\n mat.dispose(forceDisposeEffect);\r\n }\r\n this._meshes[i].dispose();\r\n }\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): FurMaterial {\r\n return SerializationHelper.Clone(() => new FurMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.FurMaterial\";\r\n\r\n if (this._meshes) {\r\n serializationObject.sourceMeshName = this._meshes[0].name;\r\n serializationObject.quality = this._meshes.length;\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FurMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FurMaterial {\r\n const material = SerializationHelper.Parse(() => new FurMaterial(source.name, scene), source, scene, rootUrl);\r\n\r\n if (source.sourceMeshName && material.highLevelFur) {\r\n scene.executeWhenReady(() => {\r\n const sourceMesh = <Mesh>scene.getMeshByName(source.sourceMeshName);\r\n if (sourceMesh) {\r\n const furTexture = FurMaterial.GenerateTexture(\"Fur Texture\", scene);\r\n material.furTexture = furTexture;\r\n FurMaterial.FurifyMesh(sourceMesh, source.quality);\r\n }\r\n });\r\n }\r\n\r\n return material;\r\n }\r\n\r\n public static GenerateTexture(name: string, scene: Scene): DynamicTexture {\r\n // Generate fur textures\r\n const texture = new DynamicTexture(\"FurTexture \" + name, 256, scene, true);\r\n const context = texture.getContext();\r\n\r\n for (let i = 0; i < 20000; ++i) {\r\n context.fillStyle = \"rgba(255, \" + Math.floor(Math.random() * 255) + \", \" + Math.floor(Math.random() * 255) + \", 1)\";\r\n context.fillRect(Math.random() * texture.getSize().width, Math.random() * texture.getSize().height, 2, 2);\r\n }\r\n\r\n texture.update(false);\r\n texture.wrapU = Texture.WRAP_ADDRESSMODE;\r\n texture.wrapV = Texture.WRAP_ADDRESSMODE;\r\n\r\n return texture;\r\n }\r\n\r\n // Creates and returns an array of meshes used as shells for the Fur Material\r\n // that can be disposed later in your code\r\n // The quality is in interval [0, 100]\r\n public static FurifyMesh(sourceMesh: Mesh, quality: number): Mesh[] {\r\n const meshes = [sourceMesh];\r\n const mat: FurMaterial = <FurMaterial>sourceMesh.material;\r\n let i;\r\n\r\n if (!(mat instanceof FurMaterial)) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw \"The material of the source mesh must be a Fur Material\";\r\n }\r\n\r\n for (i = 1; i < quality; i++) {\r\n const offsetFur = new FurMaterial(mat.name + i, sourceMesh.getScene());\r\n sourceMesh.getScene().materials.pop();\r\n Tags.EnableFor(offsetFur);\r\n Tags.AddTagsTo(offsetFur, \"furShellMaterial\");\r\n\r\n offsetFur.furLength = mat.furLength;\r\n offsetFur.furAngle = mat.furAngle;\r\n offsetFur.furGravity = mat.furGravity;\r\n offsetFur.furSpacing = mat.furSpacing;\r\n offsetFur.furSpeed = mat.furSpeed;\r\n offsetFur.furColor = mat.furColor;\r\n offsetFur.diffuseTexture = mat.diffuseTexture;\r\n offsetFur.furOffset = i / quality;\r\n offsetFur.furTexture = mat.furTexture;\r\n offsetFur.highLevelFur = mat.highLevelFur;\r\n offsetFur.furTime = mat.furTime;\r\n offsetFur.furDensity = mat.furDensity;\r\n\r\n const offsetMesh = sourceMesh.clone(sourceMesh.name + i);\r\n\r\n offsetMesh.material = offsetFur;\r\n offsetMesh.skeleton = sourceMesh.skeleton;\r\n offsetMesh.position = Vector3.Zero();\r\n meshes.push(offsetMesh);\r\n }\r\n\r\n for (i = 1; i < meshes.length; i++) {\r\n meshes[i].parent = sourceMesh;\r\n }\r\n\r\n (<FurMaterial>sourceMesh.material)._meshes = meshes;\r\n\r\n return meshes;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FurMaterial\", FurMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"furMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/fur/furMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { Tags } from \"core/Misc/tags\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { DynamicTexture } from \"core/Materials/Textures/dynamicTexture\";\r\nimport { type IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { _ShaderImportLoader } from \"core/Misc/shaderImportLoader\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\n\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass FurMaterialDefines extends MaterialDefines {\r\n public DIFFUSE = false;\r\n public HEIGHTMAP = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public HIGHLEVEL = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public AREALIGHTNOROUGHTNESS = true;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class FurMaterial extends PushMaterial {\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor diffuseTexture: BaseTexture;\r\n\r\n @serializeAsTexture(\"heightTexture\")\r\n private _heightTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor heightTexture: BaseTexture;\r\n\r\n @serializeAsColor3()\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serialize()\r\n public furLength: number = 1;\r\n\r\n @serialize()\r\n public furAngle: number = 0;\r\n\r\n @serializeAsColor3()\r\n public furColor = new Color3(0.44, 0.21, 0.02);\r\n\r\n @serialize()\r\n public furOffset: number = 0.0;\r\n\r\n @serialize()\r\n public furSpacing: number = 12;\r\n\r\n @serializeAsVector3()\r\n public furGravity = new Vector3(0, 0, 0);\r\n\r\n @serialize()\r\n public furSpeed: number = 100;\r\n\r\n @serialize()\r\n public furDensity: number = 20;\r\n\r\n @serialize()\r\n public furOcclusion: number = 0.0;\r\n\r\n public furTexture: DynamicTexture;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor disableLighting: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor maxSimultaneousLights: number;\r\n\r\n @serialize()\r\n public highLevelFur: boolean = true;\r\n\r\n public _meshes: AbstractMesh[];\r\n\r\n private _furTime: number = 0;\r\n private static readonly _ShaderLoader = /*#__PURE__*/ new _ShaderImportLoader(\r\n () => [import(\"./fur.vertex\"), import(\"./fur.fragment\")],\r\n () => [import(\"./wgsl/fur.vertex\"), import(\"./wgsl/fur.fragment\")]\r\n );\r\n\r\n /**\r\n * Instantiates a Fur Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n @serialize()\r\n public get furTime() {\r\n return this._furTime;\r\n }\r\n\r\n public set furTime(furTime: number) {\r\n this._furTime = furTime;\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public updateFur(): void {\r\n for (let i = 1; i < this._meshes.length; i++) {\r\n const offsetFur = <FurMaterial>this._meshes[i].material;\r\n\r\n offsetFur.furLength = this.furLength;\r\n offsetFur.furAngle = this.furAngle;\r\n offsetFur.furGravity = this.furGravity;\r\n offsetFur.furSpacing = this.furSpacing;\r\n offsetFur.furSpeed = this.furSpeed;\r\n offsetFur.furColor = this.furColor;\r\n offsetFur.diffuseTexture = this.diffuseTexture;\r\n offsetFur.furTexture = this.furTexture;\r\n offsetFur.highLevelFur = this.highLevelFur;\r\n offsetFur.furTime = this.furTime;\r\n offsetFur.furDensity = this.furDensity;\r\n }\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FurMaterialDefines();\r\n }\r\n\r\n const defines = <FurMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this.diffuseTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.DIFFUSE = true;\r\n }\r\n }\r\n if (this.heightTexture && engine.getCaps().maxVertexTextureImageUnits) {\r\n if (!this.heightTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.HEIGHTMAP = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // High level\r\n if (this.highLevelFur !== defines.HIGHLEVEL) {\r\n defines.HIGHLEVEL = true;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n // Lights\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks, this.maxSimultaneousLights);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"fur\";\r\n const join = defines.toString();\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vDiffuseColor\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"mBones\",\r\n \"diffuseMatrix\",\r\n \"logarithmicDepthConstant\",\r\n \"furLength\",\r\n \"furAngle\",\r\n \"furColor\",\r\n \"furOffset\",\r\n \"furGravity\",\r\n \"furTime\",\r\n \"furSpacing\",\r\n \"furDensity\",\r\n \"furOcclusion\",\r\n ];\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers = [\"diffuseSampler\", \"heightTexture\", \"furTexture\", \"areaLightsLTC1Sampler\", \"areaLightsLTC2Sampler\"];\r\n\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: this.maxSimultaneousLights,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: FurMaterial._ShaderLoader.getLoadCallback(this._shaderLanguage),\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n // Check if Area Lights have LTC texture.\r\n if (defines[\"AREALIGHTUSED\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FurMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Textures\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._activeEffect.setTexture(\"diffuseSampler\", this._diffuseTexture);\r\n\r\n this._activeEffect.setFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\r\n this._activeEffect.setMatrix(\"diffuseMatrix\", this._diffuseTexture.getTextureMatrix());\r\n }\r\n\r\n if (this._heightTexture) {\r\n this._activeEffect.setTexture(\"heightTexture\", this._heightTexture);\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(this._activeEffect, this, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n this._activeEffect.setColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha * mesh.visibility);\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setFloat(\"furLength\", this.furLength);\r\n this._activeEffect.setFloat(\"furAngle\", this.furAngle);\r\n this._activeEffect.setColor4(\"furColor\", this.furColor, 1.0);\r\n\r\n if (this.highLevelFur) {\r\n this._activeEffect.setVector3(\"furGravity\", this.furGravity);\r\n this._activeEffect.setFloat(\"furOffset\", this.furOffset);\r\n this._activeEffect.setFloat(\"furSpacing\", this.furSpacing);\r\n this._activeEffect.setFloat(\"furDensity\", this.furDensity);\r\n this._activeEffect.setFloat(\"furOcclusion\", this.furOcclusion);\r\n\r\n this._furTime += this.getScene().getEngine().getDeltaTime() / this.furSpeed;\r\n this._activeEffect.setFloat(\"furTime\", this._furTime);\r\n\r\n this._activeEffect.setTexture(\"furTexture\", this.furTexture);\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = [];\r\n\r\n if (this.diffuseTexture && this.diffuseTexture.animations && this.diffuseTexture.animations.length > 0) {\r\n results.push(this.diffuseTexture);\r\n }\r\n\r\n if (this.heightTexture && this.heightTexture.animations && this.heightTexture.animations.length > 0) {\r\n results.push(this.heightTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n if (this._heightTexture) {\r\n activeTextures.push(this._heightTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this.diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._heightTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n if (this.diffuseTexture) {\r\n this.diffuseTexture.dispose();\r\n }\r\n\r\n if (this._meshes) {\r\n for (let i = 1; i < this._meshes.length; i++) {\r\n const mat = this._meshes[i].material;\r\n\r\n if (mat) {\r\n mat.dispose(forceDisposeEffect);\r\n }\r\n this._meshes[i].dispose();\r\n }\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): FurMaterial {\r\n return SerializationHelper.Clone(() => new FurMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.FurMaterial\";\r\n\r\n if (this._meshes) {\r\n serializationObject.sourceMeshName = this._meshes[0].name;\r\n serializationObject.quality = this._meshes.length;\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FurMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FurMaterial {\r\n const material = SerializationHelper.Parse(() => new FurMaterial(source.name, scene), source, scene, rootUrl);\r\n\r\n if (source.sourceMeshName && material.highLevelFur) {\r\n scene.executeWhenReady(() => {\r\n const sourceMesh = <Mesh>scene.getMeshByName(source.sourceMeshName);\r\n if (sourceMesh) {\r\n const furTexture = FurMaterial.GenerateTexture(\"Fur Texture\", scene);\r\n material.furTexture = furTexture;\r\n FurMaterial.FurifyMesh(sourceMesh, source.quality);\r\n }\r\n });\r\n }\r\n\r\n return material;\r\n }\r\n\r\n public static GenerateTexture(name: string, scene: Scene): DynamicTexture {\r\n // Generate fur textures\r\n const texture = new DynamicTexture(\"FurTexture \" + name, 256, scene, true);\r\n const context = texture.getContext();\r\n\r\n for (let i = 0; i < 20000; ++i) {\r\n context.fillStyle = \"rgba(255, \" + Math.floor(Math.random() * 255) + \", \" + Math.floor(Math.random() * 255) + \", 1)\";\r\n context.fillRect(Math.random() * texture.getSize().width, Math.random() * texture.getSize().height, 2, 2);\r\n }\r\n\r\n texture.update(false);\r\n texture.wrapU = Texture.WRAP_ADDRESSMODE;\r\n texture.wrapV = Texture.WRAP_ADDRESSMODE;\r\n\r\n return texture;\r\n }\r\n\r\n // Creates and returns an array of meshes used as shells for the Fur Material\r\n // that can be disposed later in your code\r\n // The quality is in interval [0, 100]\r\n public static FurifyMesh(sourceMesh: Mesh, quality: number): Mesh[] {\r\n const meshes = [sourceMesh];\r\n const mat: FurMaterial = <FurMaterial>sourceMesh.material;\r\n let i;\r\n\r\n if (!(mat instanceof FurMaterial)) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw \"The material of the source mesh must be a Fur Material\";\r\n }\r\n\r\n for (i = 1; i < quality; i++) {\r\n const offsetFur = new FurMaterial(mat.name + i, sourceMesh.getScene());\r\n sourceMesh.getScene().materials.pop();\r\n Tags.EnableFor(offsetFur);\r\n Tags.AddTagsTo(offsetFur, \"furShellMaterial\");\r\n\r\n offsetFur.furLength = mat.furLength;\r\n offsetFur.furAngle = mat.furAngle;\r\n offsetFur.furGravity = mat.furGravity;\r\n offsetFur.furSpacing = mat.furSpacing;\r\n offsetFur.furSpeed = mat.furSpeed;\r\n offsetFur.furColor = mat.furColor;\r\n offsetFur.diffuseTexture = mat.diffuseTexture;\r\n offsetFur.furOffset = i / quality;\r\n offsetFur.furTexture = mat.furTexture;\r\n offsetFur.highLevelFur = mat.highLevelFur;\r\n offsetFur.furTime = mat.furTime;\r\n offsetFur.furDensity = mat.furDensity;\r\n\r\n const offsetMesh = sourceMesh.clone(sourceMesh.name + i);\r\n\r\n offsetMesh.material = offsetFur;\r\n offsetMesh.skeleton = sourceMesh.skeleton;\r\n offsetMesh.position = Vector3.Zero();\r\n meshes.push(offsetMesh);\r\n }\r\n\r\n for (i = 1; i < meshes.length; i++) {\r\n meshes[i].parent = sourceMesh;\r\n }\r\n\r\n (<FurMaterial>sourceMesh.material)._meshes = meshes;\r\n\r\n return meshes;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FurMaterial\", FurMaterial);\r\n"]}
|
|
@@ -20,7 +20,7 @@ export declare class GradientMaterial extends PushMaterial {
|
|
|
20
20
|
smoothness: number;
|
|
21
21
|
private _disableLighting;
|
|
22
22
|
accessor disableLighting: boolean;
|
|
23
|
-
private
|
|
23
|
+
private static readonly _ShaderLoader;
|
|
24
24
|
/**
|
|
25
25
|
* Instantiates a Gradient Material in the given scene
|
|
26
26
|
* @param name The friendly name of the material
|
|
@@ -7,6 +7,7 @@ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
|
7
7
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
8
8
|
import { Scene } from "@babylonjs/core/scene.js";
|
|
9
9
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
10
|
+
import { _ShaderImportLoader } from "@babylonjs/core/Misc/shaderImportLoader.js";
|
|
10
11
|
import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
|
|
11
12
|
import { AddClipPlaneUniforms, BindClipPlane } from "@babylonjs/core/Materials/clipPlaneMaterialHelper.js";
|
|
12
13
|
import { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, HandleFallbacksForShadows, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
@@ -104,7 +105,7 @@ let GradientMaterial = (() => {
|
|
|
104
105
|
this.smoothness = (__runInitializers(this, _scale_extraInitializers), __runInitializers(this, _smoothness_initializers, 1.0));
|
|
105
106
|
this._disableLighting = (__runInitializers(this, _smoothness_extraInitializers), __runInitializers(this, __disableLighting_initializers, false));
|
|
106
107
|
_GradientMaterial_disableLighting_accessor_storage.set(this, (__runInitializers(this, __disableLighting_extraInitializers), __runInitializers(this, _disableLighting_initializers, void 0)));
|
|
107
|
-
|
|
108
|
+
__runInitializers(this, _disableLighting_extraInitializers);
|
|
108
109
|
}
|
|
109
110
|
needAlphaBlending() {
|
|
110
111
|
return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;
|
|
@@ -210,17 +211,7 @@ let GradientMaterial = (() => {
|
|
|
210
211
|
onError: this.onError,
|
|
211
212
|
indexParameters: { maxSimultaneousLights: 4 },
|
|
212
213
|
shaderLanguage: this._shaderLanguage,
|
|
213
|
-
extraInitializationsAsync: this.
|
|
214
|
-
? undefined
|
|
215
|
-
: async () => {
|
|
216
|
-
if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
|
|
217
|
-
await Promise.all([import("./wgsl/gradient.vertex.js"), import("./wgsl/gradient.fragment.js")]);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
await Promise.all([import("./gradient.vertex.js"), import("./gradient.fragment.js")]);
|
|
221
|
-
}
|
|
222
|
-
this._shadersLoaded = true;
|
|
223
|
-
},
|
|
214
|
+
extraInitializationsAsync: _a._ShaderLoader.getLoadCallback(this._shaderLanguage),
|
|
224
215
|
}, engine), defines, this._materialContext);
|
|
225
216
|
}
|
|
226
217
|
// Check if Area Lights have LTC texture.
|
|
@@ -334,6 +325,7 @@ let GradientMaterial = (() => {
|
|
|
334
325
|
__esDecorate(null, null, __disableLighting_decorators, { kind: "field", name: "_disableLighting", static: false, private: false, access: { has: obj => "_disableLighting" in obj, get: obj => obj._disableLighting, set: (obj, value) => { obj._disableLighting = value; } }, metadata: _metadata }, __disableLighting_initializers, __disableLighting_extraInitializers);
|
|
335
326
|
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
336
327
|
})(),
|
|
328
|
+
_a._ShaderLoader = new _ShaderImportLoader(() => [import("./gradient.vertex.js"), import("./gradient.fragment.js")], () => [import("./wgsl/gradient.vertex.js"), import("./wgsl/gradient.fragment.js")]),
|
|
337
329
|
_a;
|
|
338
330
|
})();
|
|
339
331
|
export { GradientMaterial };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradientMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/gradient/gradientMaterial.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EACH,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,iCAAiC,EACjC,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,GACjC,MAAM,yCAAyC,CAAC;AAEjD,MAAM,uBAAwB,SAAQ,eAAe;IA2BjD;QACI,KAAK,EAAE,CAAC;QA3BL,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAAG,KAAK,CAAC;QAClB,QAAG,GAAG,KAAK,CAAC;QACZ,WAAM,GAAG,KAAK,CAAC;QACf,QAAG,GAAG,KAAK,CAAC;QACZ,QAAG,GAAG,KAAK,CAAC;QACZ,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,yBAAoB,GAAG,CAAC,CAAC;QACzB,iBAAY,GAAG,CAAC,CAAC;QACjB,cAAS,GAAG,KAAK,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QACvB,+BAA0B,GAAG,KAAK,CAAC;QACnC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,qBAAgB,GAAG,KAAK,CAAC;QACzB,uBAAkB,GAAG,IAAI,CAAC;QAC1B,0BAAqB,GAAG,IAAI,CAAC;QAIhC,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;CACJ;IAEY,gBAAgB;;sBAAS,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAArC,gBAAiB,SAAQ,WAAY;YAI9C,IAAgB,qBAAqB,0GAAS;YAA9C,IAAgB,qBAAqB,+GAAS;YA6B9C,IAAgB,eAAe,oGAAU;YAAzC,IAAgB,eAAe,yGAAU;YAIzC;;;;;eAKG;YACH,YAAY,IAAY,EAAE,KAAa,EAAE,SAAS,GAAG,KAAK;gBACtD,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBA1CrC,2BAAsB,iEAAG,CAAC,EAAC;gBAEnB,+MAA8B;gBAE9C,yCAAyC;gBAElC,aAAQ,uHAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAC;gBAG/B,kBAAa,+GAAG,GAAG,GAAC;gBAE3B,0CAA0C;gBAEnC,gBAAW,kHAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAC;gBAGlC,qBAAgB,qHAAG,GAAG,GAAC;gBAE9B,kBAAkB;gBAEX,WAAM,gHAAG,CAAC,GAAC;gBAGX,UAAK,qGAAG,GAAG,GAAC;gBAGZ,eAAU,yGAAG,GAAG,GAAC;gBAGhB,qBAAgB,oHAAG,KAAK,GAAC;gBAEjB,6LAAyB;gBAEjC,mBAAc,iEAAG,KAAK,EAAC;YAU/B,CAAC;YAEe,iBAAiB;gBAC7B,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;YACvF,CAAC;YAEe,gBAAgB;gBAC5B,OAAO,IAAI,CAAC;YAChB,CAAC;YAEe,mBAAmB;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,UAAU;YACM,iBAAiB,CAAC,IAAkB,EAAE,OAAgB,EAAE,YAAsB;gBAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;gBAEzC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,mBAAmB,IAAI,WAAW,CAAC,4BAA4B,KAAK,YAAY,EAAE,CAAC;wBACrH,OAAO,IAAI,CAAC;oBAChB,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC3B,OAAO,CAAC,eAAe,GAAG,IAAI,uBAAuB,EAAE,CAAC;gBAC5D,CAAC;gBAED,MAAM,OAAO,GAA4B,OAAO,CAAC,eAAe,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAEjC,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAE7F,qBAAqB,CACjB,IAAI,EACJ,KAAK,EACL,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAClC,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,CAAC,wBAAwB,CAChC,CAAC;gBAEF,OAAO,CAAC,YAAY,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEhI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEzC,UAAU;gBACV,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAExD,qBAAqB;gBACrB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,CAAC,eAAe,EAAE,CAAC;oBAE1B,KAAK,CAAC,mBAAmB,EAAE,CAAC;oBAE5B,YAAY;oBACZ,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBACxC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpC,CAAC;oBAED,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAE9C,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;wBACnC,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9C,CAAC;oBAED,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;oBAE3F,YAAY;oBACZ,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAE5C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC1C,CAAC;oBAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACtC,CAAC;oBAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACvC,CAAC;oBAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;wBACtB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBACzC,CAAC;oBAED,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;oBAC7D,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAEhD,uBAAuB;oBACvB,MAAM,UAAU,GAAG,UAAU,CAAC;oBAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAEhC,MAAM,QAAQ,GAAG;wBACb,OAAO;wBACP,MAAM;wBACN,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,QAAQ;wBACR,0BAA0B;wBAC1B,UAAU;wBACV,aAAa;wBACb,QAAQ;wBACR,YAAY;wBACZ,OAAO;qBACV,CAAC;oBACF,oBAAoB,CAAC,QAAQ,CAAC,CAAC;oBAC/B,MAAM,QAAQ,GAAa,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;oBAC9E,MAAM,cAAc,GAAa,EAAE,CAAC;oBAEpC,8BAA8B,CAAyB;wBACnD,aAAa,EAAE,QAAQ;wBACvB,mBAAmB,EAAE,cAAc;wBACnC,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE,OAAO;wBAChB,qBAAqB,EAAE,CAAC;wBACxB,cAAc,EAAE,IAAI,CAAC,eAAe;qBACvC,CAAC,CAAC;oBAEH,OAAO,CAAC,SAAS,CACb,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,CAC1B,UAAU,EACc;wBACpB,UAAU,EAAE,OAAO;wBACnB,aAAa,EAAE,QAAQ;wBACvB,mBAAmB,EAAE,cAAc;wBACnC,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE;wBAC7C,cAAc,EAAE,IAAI,CAAC,eAAe;wBACpC,yBAAyB,EAAE,IAAI,CAAC,cAAc;4BAC1C,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,KAAK,IAAI,EAAE;gCACP,IAAI,IAAI,CAAC,cAAc,gCAAwB,EAAE,CAAC;oCAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;gCAC9F,CAAC;qCAAM,CAAC;oCACJ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gCACpF,CAAC;gCAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;4BAC/B,CAAC;qBACV,EACD,MAAM,CACT,EACD,OAAO,EACP,IAAI,CAAC,gBAAgB,CACxB,CAAC;gBACN,CAAC;gBAED,yCAAyC;gBACzC,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;wBAC5D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;4BACvC,OAAO,KAAK,CAAC;wBACjB,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC/C,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACxC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACvC,WAAW,CAAC,4BAA4B,GAAG,CAAC,CAAC,YAAY,CAAC;gBAE1D,OAAO,IAAI,CAAC;YAChB,CAAC;YAEe,cAAc,CAAC,KAAa,EAAE,IAAU,EAAE,OAAgB;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE9B,MAAM,OAAO,GAA4B,OAAO,CAAC,eAAe,CAAC;gBACjE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gBAE5B,WAAW;gBACX,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAE3E,QAAQ;gBACR,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAElC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3C,aAAa;oBACb,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAEnC,aAAa;oBACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7D,CAAC;oBAED,aAAa;oBACb,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACzC,CAAC;oBAED,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;gBAED,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC/C,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACrF,CAAC;gBAED,OAAO;gBACP,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC5E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,MAAM;gBACN,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAEnD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACrF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE3D,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YAEe,cAAc;gBAC1B,OAAO,EAAE,CAAC;YACd,CAAC;YAEe,OAAO,CAAC,kBAA4B;gBAChD,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACtC,CAAC;YAEe,KAAK,CAAC,IAAY;gBAC9B,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9F,CAAC;YAEe,SAAS;gBACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC9C,mBAAmB,CAAC,UAAU,GAAG,0BAA0B,CAAC;gBAC5D,OAAO,mBAAmB,CAAC;YAC/B,CAAC;YAEe,YAAY;gBACxB,OAAO,kBAAkB,CAAC;YAC9B,CAAC;YAED,UAAU;YACH,MAAM,CAAU,KAAK,CAAC,MAAW,EAAE,KAAY,EAAE,OAAe;gBACnE,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7G,CAAC;;;;;;kDA9TA,SAAS,CAAC,uBAAuB,CAAC;iDAElC,gBAAgB,CAAC,gCAAgC,CAAC;oCAIlD,iBAAiB,EAAE;yCAGnB,SAAS,EAAE;uCAIX,iBAAiB,EAAE;4CAGnB,SAAS,EAAE;kCAIX,SAAS,EAAE;iCAGX,SAAS,EAAE;sCAGX,SAAS,EAAE;4CAGX,SAAS,CAAC,iBAAiB,CAAC;2CAE5B,gBAAgB,CAAC,gCAAgC,CAAC;YA5BnD,kNAAgB,qBAAqB,6BAArB,qBAAqB,qHAAS;YA6B9C,gMAAgB,eAAe,6BAAf,eAAe,yGAAU;YA/BzC,oNAAQ,sBAAsB,6BAAtB,sBAAsB,uHAAK;YAMnC,0KAAO,QAAQ,6BAAR,QAAQ,2FAAuB;YAGtC,yLAAO,aAAa,6BAAb,aAAa,qGAAO;YAI3B,mLAAO,WAAW,6BAAX,WAAW,iGAAuB;YAGzC,kMAAO,gBAAgB,6BAAhB,gBAAgB,2GAAO;YAI9B,oKAAO,MAAM,6BAAN,MAAM,uFAAK;YAGlB,iKAAO,KAAK,6BAAL,KAAK,qFAAO;YAGnB,gLAAO,UAAU,6BAAV,UAAU,+FAAO;YAGxB,kMAAQ,gBAAgB,6BAAhB,gBAAgB,2GAAS;;;;;SA/BxB,gBAAgB;AAkU7B,aAAa,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { type IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass GradientMaterialDefines extends MaterialDefines {\r\n public EMISSIVE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public AREALIGHTNOROUGHTNESS = true;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class GradientMaterial extends PushMaterial {\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor maxSimultaneousLights: number;\r\n\r\n // The gradient top color, red by default\r\n @serializeAsColor3()\r\n public topColor = new Color3(1, 0, 0);\r\n\r\n @serialize()\r\n public topColorAlpha = 1.0;\r\n\r\n // The gradient top color, blue by default\r\n @serializeAsColor3()\r\n public bottomColor = new Color3(0, 0, 1);\r\n\r\n @serialize()\r\n public bottomColorAlpha = 1.0;\r\n\r\n // Gradient offset\r\n @serialize()\r\n public offset = 0;\r\n\r\n @serialize()\r\n public scale = 1.0;\r\n\r\n @serialize()\r\n public smoothness = 1.0;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor disableLighting: boolean;\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * Instantiates a Gradient Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GradientMaterialDefines();\r\n }\r\n\r\n const defines = <GradientMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);\r\n\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n defines.EMISSIVE = this._disableLighting;\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"gradient\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n \"logarithmicDepthConstant\",\r\n \"topColor\",\r\n \"bottomColor\",\r\n \"offset\",\r\n \"smoothness\",\r\n \"scale\",\r\n ];\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers: string[] = [\"areaLightsLTC1Sampler\", \"areaLightsLTC2Sampler\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/gradient.vertex\"), import(\"./wgsl/gradient.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"./gradient.vertex\"), import(\"./gradient.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n // Check if Area Lights have LTC texture.\r\n if (defines[\"AREALIGHTUSED\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GradientMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n BindBonesParameters(mesh, effect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setColor4(\"topColor\", this.topColor, this.topColorAlpha);\r\n this._activeEffect.setColor4(\"bottomColor\", this.bottomColor, this.bottomColorAlpha);\r\n this._activeEffect.setFloat(\"offset\", this.offset);\r\n this._activeEffect.setFloat(\"scale\", this.scale);\r\n this._activeEffect.setFloat(\"smoothness\", this.smoothness);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GradientMaterial {\r\n return SerializationHelper.Clone(() => new GradientMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GradientMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GradientMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GradientMaterial {\r\n return SerializationHelper.Parse(() => new GradientMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientMaterial\", GradientMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"gradientMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/gradient/gradientMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { type IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { _ShaderImportLoader } from \"core/Misc/shaderImportLoader\";\r\n\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass GradientMaterialDefines extends MaterialDefines {\r\n public EMISSIVE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public VERTEXCOLOR = false;\r\n public VERTEXALPHA = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public INSTANCESCOLOR = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public AREALIGHTNOROUGHTNESS = true;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class GradientMaterial extends PushMaterial {\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor maxSimultaneousLights: number;\r\n\r\n // The gradient top color, red by default\r\n @serializeAsColor3()\r\n public topColor = new Color3(1, 0, 0);\r\n\r\n @serialize()\r\n public topColorAlpha = 1.0;\r\n\r\n // The gradient top color, blue by default\r\n @serializeAsColor3()\r\n public bottomColor = new Color3(0, 0, 1);\r\n\r\n @serialize()\r\n public bottomColorAlpha = 1.0;\r\n\r\n // Gradient offset\r\n @serialize()\r\n public offset = 0;\r\n\r\n @serialize()\r\n public scale = 1.0;\r\n\r\n @serialize()\r\n public smoothness = 1.0;\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public accessor disableLighting: boolean;\r\n\r\n private static readonly _ShaderLoader = /*#__PURE__*/ new _ShaderImportLoader(\r\n () => [import(\"./gradient.vertex\"), import(\"./gradient.fragment\")],\r\n () => [import(\"./wgsl/gradient.vertex\"), import(\"./wgsl/gradient.fragment\")]\r\n );\r\n\r\n /**\r\n * Instantiates a Gradient Material in the given scene\r\n * @param name The friendly name of the material\r\n * @param scene The scene to add the material to\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0 || this.topColorAlpha < 1.0 || this.bottomColorAlpha < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GradientMaterialDefines();\r\n }\r\n\r\n const defines = <GradientMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);\r\n\r\n PrepareDefinesForMisc(\r\n mesh,\r\n scene,\r\n this._useLogarithmicDepth,\r\n this.pointsCloud,\r\n this.fogEnabled,\r\n this.needAlphaTestingForMesh(mesh),\r\n defines,\r\n undefined,\r\n undefined,\r\n undefined,\r\n this._isVertexOutputInvariant\r\n );\r\n\r\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n defines.EMISSIVE = this._disableLighting;\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, false, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"gradient\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"mBones\",\r\n \"logarithmicDepthConstant\",\r\n \"topColor\",\r\n \"bottomColor\",\r\n \"offset\",\r\n \"smoothness\",\r\n \"scale\",\r\n ];\r\n AddClipPlaneUniforms(uniforms);\r\n const samplers: string[] = [\"areaLightsLTC1Sampler\", \"areaLightsLTC2Sampler\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: GradientMaterial._ShaderLoader.getLoadCallback(this._shaderLanguage),\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n // Check if Area Lights have LTC texture.\r\n if (defines[\"AREALIGHTUSED\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GradientMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n BindBonesParameters(mesh, effect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n BindLights(scene, mesh, this._activeEffect, defines, this.maxSimultaneousLights);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._activeEffect.setColor4(\"topColor\", this.topColor, this.topColorAlpha);\r\n this._activeEffect.setColor4(\"bottomColor\", this.bottomColor, this.bottomColorAlpha);\r\n this._activeEffect.setFloat(\"offset\", this.offset);\r\n this._activeEffect.setFloat(\"scale\", this.scale);\r\n this._activeEffect.setFloat(\"smoothness\", this.smoothness);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GradientMaterial {\r\n return SerializationHelper.Clone(() => new GradientMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GradientMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GradientMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GradientMaterial {\r\n return SerializationHelper.Parse(() => new GradientMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientMaterial\", GradientMaterial);\r\n"]}
|
package/grid/gridMaterial.d.ts
CHANGED
|
@@ -106,7 +106,7 @@ export declare class GridMaterial extends PushMaterial {
|
|
|
106
106
|
* @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false
|
|
107
107
|
*/
|
|
108
108
|
constructor(name: string, scene?: Scene, forceGLSL?: boolean);
|
|
109
|
-
private
|
|
109
|
+
private static readonly _ShaderLoader;
|
|
110
110
|
/**
|
|
111
111
|
* @returns whether or not the grid requires alpha blending.
|
|
112
112
|
*/
|
package/grid/gridMaterial.js
CHANGED
|
@@ -9,6 +9,7 @@ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
|
9
9
|
import { MaterialFlags } from "@babylonjs/core/Materials/materialFlags.js";
|
|
10
10
|
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
11
11
|
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
12
|
+
import { _ShaderImportLoader } from "@babylonjs/core/Misc/shaderImportLoader.js";
|
|
12
13
|
import { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, } from "@babylonjs/core/Materials/materialHelper.functions.js";
|
|
13
14
|
import { AddClipPlaneUniforms, BindClipPlane } from "@babylonjs/core/Materials/clipPlaneMaterialHelper.js";
|
|
14
15
|
class GridMaterialDefines extends MaterialDefines {
|
|
@@ -219,7 +220,6 @@ let GridMaterial = (() => {
|
|
|
219
220
|
_GridMaterial_opacityTexture_accessor_storage.set(this, (__runInitializers(this, __opacityTexture_extraInitializers), __runInitializers(this, _opacityTexture_initializers, void 0)));
|
|
220
221
|
this._gridControl = (__runInitializers(this, _opacityTexture_extraInitializers), new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity));
|
|
221
222
|
this._viewportSize = new Vector2();
|
|
222
|
-
this._shadersLoaded = false;
|
|
223
223
|
}
|
|
224
224
|
/**
|
|
225
225
|
* @returns whether or not the grid requires alpha blending.
|
|
@@ -349,17 +349,7 @@ let GridMaterial = (() => {
|
|
|
349
349
|
onCompiled: this.onCompiled,
|
|
350
350
|
onError: this.onError,
|
|
351
351
|
shaderLanguage: this._shaderLanguage,
|
|
352
|
-
extraInitializationsAsync: this.
|
|
353
|
-
? undefined
|
|
354
|
-
: async () => {
|
|
355
|
-
if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
|
|
356
|
-
await Promise.all([import("./wgsl/grid.vertex.js"), import("./wgsl/grid.fragment.js")]);
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
await Promise.all([import("./grid.vertex.js"), import("./grid.fragment.js")]);
|
|
360
|
-
}
|
|
361
|
-
this._shadersLoaded = true;
|
|
362
|
-
},
|
|
352
|
+
extraInitializationsAsync: _a._ShaderLoader.getLoadCallback(this._shaderLanguage),
|
|
363
353
|
}, scene.getEngine()), defines, this._materialContext);
|
|
364
354
|
}
|
|
365
355
|
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
@@ -507,6 +497,7 @@ let GridMaterial = (() => {
|
|
|
507
497
|
__esDecorate(null, null, __opacityTexture_decorators, { kind: "field", name: "_opacityTexture", static: false, private: false, access: { has: obj => "_opacityTexture" in obj, get: obj => obj._opacityTexture, set: (obj, value) => { obj._opacityTexture = value; } }, metadata: _metadata }, __opacityTexture_initializers, __opacityTexture_extraInitializers);
|
|
508
498
|
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
509
499
|
})(),
|
|
500
|
+
_a._ShaderLoader = new _ShaderImportLoader(() => [import("./grid.vertex.js"), import("./grid.fragment.js")], () => [import("./wgsl/grid.vertex.js"), import("./wgsl/grid.fragment.js")]),
|
|
510
501
|
_a;
|
|
511
502
|
})();
|
|
512
503
|
export { GridMaterial };
|
package/grid/gridMaterial.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gridMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/gridMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, serializeAsVector3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector4, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\nimport {\r\n BindFogParameters,\r\n BindLogDepth,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForMisc,\r\n} from \"core/Materials/materialHelper.functions\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public OPACITY = false;\r\n public ANTIALIAS = false;\r\n public LINES_ONLY = false;\r\n public FOG = false;\r\n public PREMULTIPLYALPHA = false;\r\n public MAX_LINE = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public MULTI_SCALE = false;\r\n public HORIZON_FADE = false;\r\n public BELOW_LINE_COLOR = false;\r\n public ORIGIN_MARKER = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * The grid materials allows you to wrap any shape with a grid.\r\n * Colors are customizable.\r\n */\r\nexport class GridMaterial extends PushMaterial {\r\n /**\r\n * Main color of the grid (e.g. between lines)\r\n */\r\n @serializeAsColor3()\r\n public mainColor = Color3.Black();\r\n\r\n /**\r\n * Color of the grid lines.\r\n */\r\n @serializeAsColor3()\r\n public lineColor = Color3.Teal();\r\n\r\n /**\r\n * The scale of the grid compared to unit.\r\n */\r\n @serialize()\r\n public gridRatio = 1.0;\r\n\r\n /**\r\n * Allows setting an offset for the grid lines.\r\n */\r\n @serializeAsVector3()\r\n public gridOffset = Vector3.Zero();\r\n\r\n /**\r\n * The frequency of thicker lines.\r\n */\r\n @serialize()\r\n public majorUnitFrequency = 10;\r\n\r\n /**\r\n * The visibility of minor units in the grid.\r\n */\r\n @serialize()\r\n public minorUnitVisibility = 0.33;\r\n\r\n /**\r\n * Overall mesh opacity. In linesOnly mode this also scales the maximum line alpha.\r\n */\r\n @serialize()\r\n public opacity = 1.0;\r\n\r\n /**\r\n * Whether to antialias the grid\r\n */\r\n @serialize()\r\n public antialias = true;\r\n\r\n /**\r\n * Color of grid lines when the camera is below the surface.\r\n * When set, lineColor acts as the above-surface color.\r\n */\r\n @serializeAsColor3()\r\n public get belowLineColor(): Nullable<Color3> {\r\n return this._belowLineColor;\r\n }\r\n public set belowLineColor(value: Nullable<Color3>) {\r\n if (this._belowLineColor === value) {\r\n return;\r\n }\r\n this._belowLineColor = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _belowLineColor: Nullable<Color3> = null;\r\n\r\n /**\r\n * Enable multi-scale logarithmic grid LOD. Number of octaves is controlled by gridOctaves.\r\n */\r\n @serialize()\r\n public useMultiScale: boolean = false;\r\n\r\n /**\r\n * World-unit spacing of the finest octave. Default 0.001.\r\n */\r\n @serialize()\r\n public minGridSpacing: number = 0.001;\r\n\r\n /**\r\n * Number of logarithmic octaves rendered (1–8). Default 4.\r\n */\r\n @serialize()\r\n public gridOctaves: number = 4;\r\n\r\n /**\r\n * Enable camera-distance-aware horizon (grazing-angle) fade.\r\n */\r\n @serialize()\r\n public useHorizonFade: boolean = false;\r\n\r\n /**\r\n * Render an ultra-fine crosshair at the world origin.\r\n */\r\n @serialize()\r\n public useOriginMarker: boolean = false;\r\n\r\n /**\r\n * When true, only grid lines are visible — non-grid pixels are discarded.\r\n * Puts the material in the alpha-blend queue and enables a depth pre-pass so grid lines\r\n * correctly occlude translucent objects (e.g. Gaussian splats). Set mesh.alphaIndex to a\r\n * value lower than other transparent objects so the depth pre-pass fires first.\r\n */\r\n @serialize()\r\n public get linesOnly(): boolean {\r\n return this._linesOnly;\r\n }\r\n public set linesOnly(value: boolean) {\r\n if (this._linesOnly === value) {\r\n return;\r\n }\r\n this._linesOnly = value;\r\n this.needDepthPrePass = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _linesOnly = false;\r\n\r\n /**\r\n * Scales grid line width. Values \\> 1 produce thicker lines. Default 1.0.\r\n */\r\n @serialize()\r\n public gridThicknessModifier: number = 1.0;\r\n\r\n /**\r\n * Determine RBG output is premultiplied by alpha value.\r\n */\r\n @serialize()\r\n public preMultiplyAlpha = false;\r\n\r\n /**\r\n * Determines if the max line value will be used instead of the sum wherever grid lines intersect.\r\n */\r\n @serialize()\r\n public useMaxLine = false;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: BaseTexture;\r\n /**\r\n * Texture to define opacity of the grid\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor opacityTexture: BaseTexture;\r\n\r\n private _gridControl: Vector4 = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);\r\n private _viewportSize: Vector2 = new Vector2();\r\n\r\n /**\r\n * constructor\r\n * @param name The name given to the material in order to identify it afterwards.\r\n * @param scene The scene the material is used in.\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * @returns whether or not the grid requires alpha blending.\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.linesOnly || this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public override needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GridMaterialDefines();\r\n }\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n if (defines.LINES_ONLY !== this.linesOnly) {\r\n defines.LINES_ONLY = this.linesOnly;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {\r\n defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MAX_LINE !== this.useMaxLine) {\r\n defines.MAX_LINE = !defines.MAX_LINE;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ANTIALIAS !== this.antialias) {\r\n defines.ANTIALIAS = this.antialias;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MULTI_SCALE !== this.useMultiScale) {\r\n defines.MULTI_SCALE = this.useMultiScale;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.HORIZON_FADE !== this.useHorizonFade) {\r\n defines.HORIZON_FADE = this.useHorizonFade;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n const wantsBelowColor = this._belowLineColor !== null;\r\n if (defines.BELOW_LINE_COLOR !== wantsBelowColor) {\r\n defines.BELOW_LINE_COLOR = wantsBelowColor;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ORIGIN_MARKER !== this.useOriginMarker) {\r\n defines.ORIGIN_MARKER = this.useOriginMarker;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.OPACITY = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Attributes\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"projection\",\r\n \"mainColor\",\r\n \"lineColor\",\r\n \"gridControl\",\r\n \"gridOffset\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"world\",\r\n \"view\",\r\n \"opacityMatrix\",\r\n \"vOpacityInfos\",\r\n \"visibility\",\r\n \"logarithmicDepthConstant\",\r\n \"gridThicknessModifier\",\r\n ];\r\n if (defines.MULTI_SCALE) {\r\n uniforms.push(\"minGridSpacing\", \"gridOctaves\");\r\n }\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n uniforms.push(\"cameraPosition\", \"viewportSize\");\r\n }\r\n if (defines.BELOW_LINE_COLOR) {\r\n uniforms.push(\"belowLineColor\");\r\n }\r\n // Defines\r\n const join = defines.toString();\r\n AddClipPlaneUniforms(uniforms);\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n \"grid\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: [\"Scene\"],\r\n samplers: [\"opacitySampler\"],\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/grid.vertex\"), import(\"./wgsl/grid.fragment\")]);\r\n } else {\r\n await Promise.all([import(\"./grid.vertex\"), import(\"./grid.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n scene.getEngine()\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n this._activeEffect.setFloat(\"visibility\", mesh.visibility);\r\n\r\n // Matrices\r\n if (!defines.INSTANCES || defines.THIN_INSTANCE) {\r\n this.bindOnlyWorldMatrix(world);\r\n }\r\n this.bindView(effect);\r\n this.bindViewProjection(effect);\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setColor3(\"mainColor\", this.mainColor);\r\n this._activeEffect.setColor3(\"lineColor\", this.lineColor);\r\n\r\n this._activeEffect.setVector3(\"gridOffset\", this.gridOffset);\r\n\r\n this._gridControl.x = this.gridRatio;\r\n this._gridControl.y = Math.round(this.majorUnitFrequency);\r\n this._gridControl.z = this.minorUnitVisibility;\r\n this._gridControl.w = this.opacity;\r\n this._activeEffect.setVector4(\"gridControl\", this._gridControl);\r\n this._activeEffect.setFloat(\"gridThicknessModifier\", this.gridThicknessModifier);\r\n\r\n if (defines.BELOW_LINE_COLOR && this._belowLineColor) {\r\n this._activeEffect.setColor3(\"belowLineColor\", this._belowLineColor);\r\n }\r\n\r\n if (defines.MULTI_SCALE) {\r\n this._activeEffect.setFloat(\"minGridSpacing\", this.minGridSpacing);\r\n this._activeEffect.setFloat(\"gridOctaves\", Math.max(1, Math.min(8, Math.round(this.gridOctaves))));\r\n }\r\n\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n this._activeEffect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n this._activeEffect.setFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n this._activeEffect.setMatrix(\"opacityMatrix\", this._opacityTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n }\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n // Camera uniforms — must be updated every frame\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n const cam = scene.activeCamera;\r\n if (cam) {\r\n this._activeEffect.setVector3(\"cameraPosition\", cam.globalPosition);\r\n const engine = scene.getEngine();\r\n this._viewportSize.x = engine.getRenderWidth();\r\n this._viewportSize.y = engine.getRenderHeight();\r\n this._activeEffect.setVector2(\"viewportSize\", this._viewportSize);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Dispose the material and its associated resources.\r\n * @param forceDisposeEffect will also dispose the used effect when true\r\n */\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GridMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n /**\r\n * Parse a JSON input to create back a grid material.\r\n * @param source the JSON data to parse\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new grid material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GridMaterial {\r\n return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GridMaterial\", GridMaterial);\r\n"]}
|
|
1
|
+
{"version":3,"file":"gridMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/grid/gridMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3, serializeAsVector3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector4, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { _ShaderImportLoader } from \"core/Misc/shaderImportLoader\";\r\n\r\nimport {\r\n BindFogParameters,\r\n BindLogDepth,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForMisc,\r\n} from \"core/Materials/materialHelper.functions\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\n\r\nclass GridMaterialDefines extends MaterialDefines {\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public OPACITY = false;\r\n public ANTIALIAS = false;\r\n public LINES_ONLY = false;\r\n public FOG = false;\r\n public PREMULTIPLYALPHA = false;\r\n public MAX_LINE = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public MULTI_SCALE = false;\r\n public HORIZON_FADE = false;\r\n public BELOW_LINE_COLOR = false;\r\n public ORIGIN_MARKER = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * The grid materials allows you to wrap any shape with a grid.\r\n * Colors are customizable.\r\n */\r\nexport class GridMaterial extends PushMaterial {\r\n /**\r\n * Main color of the grid (e.g. between lines)\r\n */\r\n @serializeAsColor3()\r\n public mainColor = Color3.Black();\r\n\r\n /**\r\n * Color of the grid lines.\r\n */\r\n @serializeAsColor3()\r\n public lineColor = Color3.Teal();\r\n\r\n /**\r\n * The scale of the grid compared to unit.\r\n */\r\n @serialize()\r\n public gridRatio = 1.0;\r\n\r\n /**\r\n * Allows setting an offset for the grid lines.\r\n */\r\n @serializeAsVector3()\r\n public gridOffset = Vector3.Zero();\r\n\r\n /**\r\n * The frequency of thicker lines.\r\n */\r\n @serialize()\r\n public majorUnitFrequency = 10;\r\n\r\n /**\r\n * The visibility of minor units in the grid.\r\n */\r\n @serialize()\r\n public minorUnitVisibility = 0.33;\r\n\r\n /**\r\n * Overall mesh opacity. In linesOnly mode this also scales the maximum line alpha.\r\n */\r\n @serialize()\r\n public opacity = 1.0;\r\n\r\n /**\r\n * Whether to antialias the grid\r\n */\r\n @serialize()\r\n public antialias = true;\r\n\r\n /**\r\n * Color of grid lines when the camera is below the surface.\r\n * When set, lineColor acts as the above-surface color.\r\n */\r\n @serializeAsColor3()\r\n public get belowLineColor(): Nullable<Color3> {\r\n return this._belowLineColor;\r\n }\r\n public set belowLineColor(value: Nullable<Color3>) {\r\n if (this._belowLineColor === value) {\r\n return;\r\n }\r\n this._belowLineColor = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _belowLineColor: Nullable<Color3> = null;\r\n\r\n /**\r\n * Enable multi-scale logarithmic grid LOD. Number of octaves is controlled by gridOctaves.\r\n */\r\n @serialize()\r\n public useMultiScale: boolean = false;\r\n\r\n /**\r\n * World-unit spacing of the finest octave. Default 0.001.\r\n */\r\n @serialize()\r\n public minGridSpacing: number = 0.001;\r\n\r\n /**\r\n * Number of logarithmic octaves rendered (1–8). Default 4.\r\n */\r\n @serialize()\r\n public gridOctaves: number = 4;\r\n\r\n /**\r\n * Enable camera-distance-aware horizon (grazing-angle) fade.\r\n */\r\n @serialize()\r\n public useHorizonFade: boolean = false;\r\n\r\n /**\r\n * Render an ultra-fine crosshair at the world origin.\r\n */\r\n @serialize()\r\n public useOriginMarker: boolean = false;\r\n\r\n /**\r\n * When true, only grid lines are visible — non-grid pixels are discarded.\r\n * Puts the material in the alpha-blend queue and enables a depth pre-pass so grid lines\r\n * correctly occlude translucent objects (e.g. Gaussian splats). Set mesh.alphaIndex to a\r\n * value lower than other transparent objects so the depth pre-pass fires first.\r\n */\r\n @serialize()\r\n public get linesOnly(): boolean {\r\n return this._linesOnly;\r\n }\r\n public set linesOnly(value: boolean) {\r\n if (this._linesOnly === value) {\r\n return;\r\n }\r\n this._linesOnly = value;\r\n this.needDepthPrePass = value;\r\n this._markAllSubMeshesAsMiscDirty();\r\n }\r\n private _linesOnly = false;\r\n\r\n /**\r\n * Scales grid line width. Values \\> 1 produce thicker lines. Default 1.0.\r\n */\r\n @serialize()\r\n public gridThicknessModifier: number = 1.0;\r\n\r\n /**\r\n * Determine RBG output is premultiplied by alpha value.\r\n */\r\n @serialize()\r\n public preMultiplyAlpha = false;\r\n\r\n /**\r\n * Determines if the max line value will be used instead of the sum wherever grid lines intersect.\r\n */\r\n @serialize()\r\n public useMaxLine = false;\r\n\r\n @serializeAsTexture(\"opacityTexture\")\r\n private _opacityTexture: BaseTexture;\r\n /**\r\n * Texture to define opacity of the grid\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor opacityTexture: BaseTexture;\r\n\r\n private _gridControl: Vector4 = new Vector4(this.gridRatio, this.majorUnitFrequency, this.minorUnitVisibility, this.opacity);\r\n private _viewportSize: Vector2 = new Vector2();\r\n\r\n /**\r\n * constructor\r\n * @param name The name given to the material in order to identify it afterwards.\r\n * @param scene The scene the material is used in.\r\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\r\n */\r\n constructor(name: string, scene?: Scene, forceGLSL = false) {\r\n super(name, scene, undefined, forceGLSL);\r\n }\r\n\r\n private static readonly _ShaderLoader = /*#__PURE__*/ new _ShaderImportLoader(\r\n () => [import(\"./grid.vertex\"), import(\"./grid.fragment\")],\r\n () => [import(\"./wgsl/grid.vertex\"), import(\"./wgsl/grid.fragment\")]\r\n );\r\n\r\n /**\r\n * @returns whether or not the grid requires alpha blending.\r\n */\r\n public override needAlphaBlending(): boolean {\r\n return this.linesOnly || this.opacity < 1.0 || (this._opacityTexture && this._opacityTexture.isReady());\r\n }\r\n\r\n public override needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return mesh.visibility < 1.0 || this.needAlphaBlending();\r\n }\r\n\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new GridMaterialDefines();\r\n }\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n if (defines.LINES_ONLY !== this.linesOnly) {\r\n defines.LINES_ONLY = this.linesOnly;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.PREMULTIPLYALPHA != this.preMultiplyAlpha) {\r\n defines.PREMULTIPLYALPHA = !defines.PREMULTIPLYALPHA;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MAX_LINE !== this.useMaxLine) {\r\n defines.MAX_LINE = !defines.MAX_LINE;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ANTIALIAS !== this.antialias) {\r\n defines.ANTIALIAS = this.antialias;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.MULTI_SCALE !== this.useMultiScale) {\r\n defines.MULTI_SCALE = this.useMultiScale;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.HORIZON_FADE !== this.useHorizonFade) {\r\n defines.HORIZON_FADE = this.useHorizonFade;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n const wantsBelowColor = this._belowLineColor !== null;\r\n if (defines.BELOW_LINE_COLOR !== wantsBelowColor) {\r\n defines.BELOW_LINE_COLOR = wantsBelowColor;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n if (defines.ORIGIN_MARKER !== this.useOriginMarker) {\r\n defines.ORIGIN_MARKER = this.useOriginMarker;\r\n defines.markAsUnprocessed();\r\n }\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n if (!this._opacityTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.OPACITY = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, false, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, scene.getEngine(), this, defines, !!useInstances);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n // Attributes\r\n PrepareDefinesForAttributes(mesh, defines, false, false);\r\n const attribs = [VertexBuffer.PositionKind, VertexBuffer.NormalKind];\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const uniforms = [\r\n \"projection\",\r\n \"mainColor\",\r\n \"lineColor\",\r\n \"gridControl\",\r\n \"gridOffset\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"world\",\r\n \"view\",\r\n \"opacityMatrix\",\r\n \"vOpacityInfos\",\r\n \"visibility\",\r\n \"logarithmicDepthConstant\",\r\n \"gridThicknessModifier\",\r\n ];\r\n if (defines.MULTI_SCALE) {\r\n uniforms.push(\"minGridSpacing\", \"gridOctaves\");\r\n }\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n uniforms.push(\"cameraPosition\", \"viewportSize\");\r\n }\r\n if (defines.BELOW_LINE_COLOR) {\r\n uniforms.push(\"belowLineColor\");\r\n }\r\n // Defines\r\n const join = defines.toString();\r\n AddClipPlaneUniforms(uniforms);\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n \"grid\",\r\n {\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: [\"Scene\"],\r\n samplers: [\"opacitySampler\"],\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: GridMaterial._ShaderLoader.getLoadCallback(this._shaderLanguage),\r\n },\r\n scene.getEngine()\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <GridMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n this._activeEffect.setFloat(\"visibility\", mesh.visibility);\r\n\r\n // Matrices\r\n if (!defines.INSTANCES || defines.THIN_INSTANCE) {\r\n this.bindOnlyWorldMatrix(world);\r\n }\r\n this.bindView(effect);\r\n this.bindViewProjection(effect);\r\n\r\n // Uniforms\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n this._activeEffect.setColor3(\"mainColor\", this.mainColor);\r\n this._activeEffect.setColor3(\"lineColor\", this.lineColor);\r\n\r\n this._activeEffect.setVector3(\"gridOffset\", this.gridOffset);\r\n\r\n this._gridControl.x = this.gridRatio;\r\n this._gridControl.y = Math.round(this.majorUnitFrequency);\r\n this._gridControl.z = this.minorUnitVisibility;\r\n this._gridControl.w = this.opacity;\r\n this._activeEffect.setVector4(\"gridControl\", this._gridControl);\r\n this._activeEffect.setFloat(\"gridThicknessModifier\", this.gridThicknessModifier);\r\n\r\n if (defines.BELOW_LINE_COLOR && this._belowLineColor) {\r\n this._activeEffect.setColor3(\"belowLineColor\", this._belowLineColor);\r\n }\r\n\r\n if (defines.MULTI_SCALE) {\r\n this._activeEffect.setFloat(\"minGridSpacing\", this.minGridSpacing);\r\n this._activeEffect.setFloat(\"gridOctaves\", Math.max(1, Math.min(8, Math.round(this.gridOctaves))));\r\n }\r\n\r\n if (this._opacityTexture && MaterialFlags.OpacityTextureEnabled) {\r\n this._activeEffect.setTexture(\"opacitySampler\", this._opacityTexture);\r\n this._activeEffect.setFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\r\n this._activeEffect.setMatrix(\"opacityMatrix\", this._opacityTexture.getTextureMatrix());\r\n }\r\n\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n }\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n // Camera uniforms — must be updated every frame\r\n if (defines.HORIZON_FADE || defines.BELOW_LINE_COLOR || defines.ORIGIN_MARKER) {\r\n const cam = scene.activeCamera;\r\n if (cam) {\r\n this._activeEffect.setVector3(\"cameraPosition\", cam.globalPosition);\r\n const engine = scene.getEngine();\r\n this._viewportSize.x = engine.getRenderWidth();\r\n this._viewportSize.y = engine.getRenderHeight();\r\n this._activeEffect.setVector2(\"viewportSize\", this._viewportSize);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Dispose the material and its associated resources.\r\n * @param forceDisposeEffect will also dispose the used effect when true\r\n */\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): GridMaterial {\r\n return SerializationHelper.Clone(() => new GridMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GridMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"GridMaterial\";\r\n }\r\n\r\n /**\r\n * Parse a JSON input to create back a grid material.\r\n * @param source the JSON data to parse\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new grid material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): GridMaterial {\r\n return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GridMaterial\", GridMaterial);\r\n"]}
|