1c827c08e0d0d94c9385a8f3f06e5985d8a517cfad563759fb6fae632add8fb2.json 66 KB

1
  1. {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { MaterialPluginBase } from \"./materialPluginBase.js\";\nimport { MaterialDefines } from \"./materialDefines.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { Color3 } from \"../Maths/math.js\";\nimport { Logger } from \"../Misc/logger.js\";\nimport { expandToProperty, serialize, serializeAsColor3 } from \"../Misc/decorators.js\";\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\nattribute float dbg_initialPass;\nvarying vec3 dbg_vBarycentric;\nflat varying vec3 dbg_vVertexWorldPos;\nflat varying float dbg_vPass;\n#endif`;\nconst vertexDefinitionsWebGPU = `#if defined(DBG_ENABLED)\nattribute dbg_initialPass: f32;\nvarying dbg_vBarycentric: vec3f;\nvarying dbg_vVertexWorldPos: vec3f;\nvarying dbg_vPass: f32;\n#endif`;\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\nif (dbg_vertexIndex == 0.0) { \n dbg_vBarycentric = vec3(1.,0.,0.); \n}\nelse if (dbg_vertexIndex == 1.0) { \n dbg_vBarycentric = vec3(0.,1.,0.); \n}\nelse { \n dbg_vBarycentric = vec3(0.,0.,1.); \n}\n\ndbg_vVertexWorldPos = vPositionW;\ndbg_vPass = dbg_initialPass;\n#endif`;\nconst vertexMainEndWebGPU = `#if defined(DBG_ENABLED)\nvar dbg_vertexIndex = f32(input.vertexIndex) % 3.;\nif (dbg_vertexIndex == 0.0) { \n vertexOutputs.dbg_vBarycentric = vec3f(1.,0.,0.); \n}\nelse if (dbg_vertexIndex == 1.0) { \n vertexOutputs.dbg_vBarycentric = vec3f(0.,1.,0.); \n}\nelse { \n vertexOutputs.dbg_vBarycentric = vec3f(0.,0.,1.); \n}\n\nvertexOutputs.dbg_vVertexWorldPos = vertexOutputs.vPositionW;\nvertexOutputs.dbg_vPass = input.dbg_initialPass;\n#endif`;\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\nuniform vec3 dbg_shadedDiffuseColor;\nuniform vec4 dbg_shadedSpecularColorPower;\nuniform vec3 dbg_thicknessRadiusScale;\n\n#if DBG_MODE == 2 || DBG_MODE == 3\n uniform vec3 dbg_vertexColor;\n#endif\n\n#if DBG_MODE == 1\n uniform vec3 dbg_wireframeTrianglesColor;\n#elif DBG_MODE == 3\n uniform vec3 dbg_wireframeVerticesColor;\n#elif DBG_MODE == 4 || DBG_MODE == 5\n uniform vec3 dbg_uvPrimaryColor;\n uniform vec3 dbg_uvSecondaryColor;\n#elif DBG_MODE == 7\n uniform vec3 dbg_materialColor;\n#endif\n#endif`;\nconst fragmentUniformsWebGPU = `#if defined(DBG_ENABLED)\nuniform dbg_shadedDiffuseColor: vec3f;\nuniform dbg_shadedSpecularColorPower: vec4f;\nuniform dbg_thicknessRadiusScale: vec3f;\n\n#if DBG_MODE == 2 || DBG_MODE == 3\n uniform dbg_vertexColor: vec3f;\n#endif\n\n#if DBG_MODE == 1\n uniform dbg_wireframeTrianglesColor: vec3f;\n#elif DBG_MODE == 3\n uniform dbg_wireframeVerticesColor: vec3f;\n#elif DBG_MODE == 4 || DBG_MODE == 5\n uniform dbg_uvPrimaryColor: vec3f;\n uniform dbg_uvSecondaryColor: vec3f;\n#elif DBG_MODE == 7\n uniform dbg_materialColor: vec3f;\n#endif\n#endif`;\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\nvarying vec3 dbg_vBarycentric;\nflat varying vec3 dbg_vVertexWorldPos;\nflat varying float dbg_vPass;\n\n#if !defined(DBG_MULTIPLY)\n vec3 dbg_applyShading(vec3 color) {\n vec3 N = vNormalW.xyz;\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\n vec3 H = normalize(L + L);\n float LdotN = clamp(dot(L,N), 0., 1.);\n float HdotN = clamp(dot(H,N), 0., 1.);\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\n color *= (LdotN / PI);\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\n return color;\n }\n#endif\n\n#if DBG_MODE == 1 || DBG_MODE == 3\n float dbg_edgeFactor() {\n vec3 d = fwidth(dbg_vBarycentric);\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\n return min(min(a3.x, a3.y), a3.z);\n }\n#endif\n\n#if DBG_MODE == 2 || DBG_MODE == 3\n float dbg_cornerFactor() {\n vec3 worldPos = vPositionW;\n float dist = length(worldPos - dbg_vVertexWorldPos);\n float camDist = length(worldPos - vEyePosition.xyz);\n float d = sqrt(camDist) * .001;\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\n }\n#endif\n\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\n float dbg_checkerboardFactor(vec2 uv) {\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\n f -= .5;\n return (f.x * f.y) > 0. ? 1. : 0.;\n }\n#endif\n#endif`;\nconst fragmentDefinitionsWebGPU = `#if defined(DBG_ENABLED)\nvarying dbg_vBarycentric: vec3f;\nvarying dbg_vVertexWorldPos: vec3f;\nvarying dbg_vPass: f32;\n\n#if !defined(DBG_MULTIPLY)\n fn dbg_applyShading(color: vec3f) -> vec3f {\n var N = fragmentInputs.vNormalW.xyz;\n var L = normalize(scene.vEyePosition.xyz - fragmentInputs.vPositionW.xyz);\n var H = normalize(L + L);\n var LdotN = clamp(dot(L,N), 0., 1.);\n var HdotN = clamp(dot(H,N), 0., 1.);\n var specTerm = pow(HdotN, uniforms.dbg_shadedSpecularColorPower.w);\n var result = color * (LdotN / PI);\n result += uniforms.dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\n return result;\n }\n#endif\n\n#if DBG_MODE == 1 || DBG_MODE == 3\n fn dbg_edgeFactor() -> f32 {\n var d = fwidth(fragmentInputs.dbg_vBarycentric);\n var a3 = smoothstep(vec3f(0.), d * uniforms.dbg_thicknessRadiusScale.x, fragmentInputs.dbg_vBarycentric);\n return min(min(a3.x, a3.y), a3.z);\n }\n#endif\n\n#if DBG_MODE == 2 || DBG_MODE == 3\n fn dbg_cornerFactor() -> f32 {\n var worldPos = fragmentInputs.vPositionW;\n float dist = length(worldPos - fragmentInputs.dbg_vVertexWorldPos);\n float camDist = length(worldPos - scene.vEyePosition.xyz);\n float d = sqrt(camDist) * .001;\n return smoothstep((uniforms.dbg_thicknessRadiusScale.y * d), ((uniforms.dbg_thicknessRadiusScale.y * 1.01) * d), dist);\n }\n#endif\n\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\n fn dbg_checkerboardFactor(uv: vec2f) -> f32 {\n var f = fract(uv * uniforms.dbg_thicknessRadiusScale.z);\n f -= .5;\n return (f.x * f.y) > 0. ? 1. : 0.;\n }\n#endif\n#endif`;\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\nvec3 dbg_color = vec3(1.);\n#if DBG_MODE == 1\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\n#elif DBG_MODE == 2 || DBG_MODE == 3\n float dbg_cornerFactor = dbg_cornerFactor();\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\n #if DBG_MODE == 3\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\n #endif\n#elif DBG_MODE == 4 && defined(MAINUV1)\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\n#elif DBG_MODE == 5 && defined(MAINUV2)\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\n dbg_color = vColor.rgb;\n#elif DBG_MODE == 7\n dbg_color = dbg_materialColor;\n#endif\n\n#if defined(DBG_MULTIPLY)\n gl_FragColor *= vec4(dbg_color, 1.);\n#else\n #if DBG_MODE != 6\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\n #else\n gl_FragColor = vec4(dbg_color, 1.);\n #endif\n#endif\n#endif`;\nconst fragmentMainEndWebGPU = `#if defined(DBG_ENABLED)\nvar dbg_color = vec3f(1.);\n#if DBG_MODE == 1\n dbg_color = mix(uniforms.dbg_wireframeTrianglesColor, vec3f(1.), dbg_edgeFactor());\n#elif DBG_MODE == 2 || DBG_MODE == 3\n var dbg_cornerFactor = dbg_cornerFactor();\n if (fragmentInputs.dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\n dbg_color = mix(uniforms.dbg_vertexColor, vec3(1.), dbg_cornerFactor);\n #if DBG_MODE == 3\n dbg_color *= mix(uniforms.dbg_wireframeVerticesColor, vec3f(1.), dbg_edgeFactor());\n #endif\n#elif DBG_MODE == 4 && defined(MAINUV1)\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV1));\n#elif DBG_MODE == 5 && defined(MAINUV2)\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV2));\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\n dbg_color = fragmentInputs.vColor.rgb;\n#elif DBG_MODE == 7\n dbg_color = uniforms.dbg_materialColor;\n#endif\n\n#if defined(DBG_MULTIPLY)\n fragmentOutputs.color *= vec4f(dbg_color, 1.);\n#else\n #if DBG_MODE != 6\n fragmentOutputs.color = vec4f(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\n #else\n fragmentOutputs.color = vec4f(dbg_color, 1.);\n #endif\n#endif\n#endif`;\nconst defaultMaterialColors = [new Color3(0.98, 0.26, 0.38), new Color3(0.47, 0.75, 0.3), new Color3(0, 0.26, 0.77), new Color3(0.97, 0.6, 0.76), new Color3(0.19, 0.63, 0.78), new Color3(0.98, 0.8, 0.6), new Color3(0.65, 0.43, 0.15), new Color3(0.15, 0.47, 0.22), new Color3(0.67, 0.71, 0.86), new Color3(0.09, 0.46, 0.56), new Color3(0.8, 0.98, 0.02), new Color3(0.39, 0.29, 0.13), new Color3(0.53, 0.63, 0.06), new Color3(0.95, 0.96, 0.41), new Color3(1, 0.72, 0.94), new Color3(0.63, 0.08, 0.31), new Color3(0.66, 0.96, 0.95), new Color3(0.22, 0.14, 0.19), new Color3(0.14, 0.65, 0.59), new Color3(0.93, 1, 0.68), new Color3(0.93, 0.14, 0.44), new Color3(0.47, 0.86, 0.67), new Color3(0.85, 0.07, 0.78), new Color3(0.53, 0.64, 0.98), new Color3(0.43, 0.37, 0.56), new Color3(0.71, 0.65, 0.25), new Color3(0.66, 0.19, 0.01), new Color3(0.94, 0.53, 0.12), new Color3(0.41, 0.44, 0.44), new Color3(0.24, 0.71, 0.96), new Color3(0.57, 0.28, 0.56), new Color3(0.44, 0.98, 0.42)];\n/**\n * Supported visualizations of MeshDebugPluginMaterial\n */\nexport var MeshDebugMode;\n(function (MeshDebugMode) {\n /**\n * Material without any mesh debug visualization\n */\n MeshDebugMode[MeshDebugMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * A wireframe of the mesh\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"TRIANGLES\"] = 1] = \"TRIANGLES\";\n /**\n * Points drawn over vertices of mesh\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"VERTICES\"] = 2] = \"VERTICES\";\n /**\n * A wireframe of the mesh, with points drawn over vertices\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"TRIANGLES_VERTICES\"] = 3] = \"TRIANGLES_VERTICES\";\n /**\n * A checkerboard grid of the mesh's UV set 0\n */\n MeshDebugMode[MeshDebugMode[\"UV0\"] = 4] = \"UV0\";\n /**\n * A checkerboard grid of the mesh's UV set 1\n */\n MeshDebugMode[MeshDebugMode[\"UV1\"] = 5] = \"UV1\";\n /**\n * The mesh's vertex colors displayed as the primary texture\n */\n MeshDebugMode[MeshDebugMode[\"VERTEXCOLORS\"] = 6] = \"VERTEXCOLORS\";\n /**\n * An arbitrary, distinguishable color to identify the material\n */\n MeshDebugMode[MeshDebugMode[\"MATERIALIDS\"] = 7] = \"MATERIALIDS\";\n})(MeshDebugMode || (MeshDebugMode = {}));\n/** @internal */\nclass MeshDebugDefines extends MaterialDefines {\n constructor() {\n super(...arguments);\n /**\n * Current mesh debug visualization.\n * Defaults to NONE.\n */\n this.DBG_MODE = 0 /* MeshDebugMode.NONE */;\n /**\n * Whether the mesh debug visualization multiplies with colors underneath.\n * Defaults to true.\n */\n this.DBG_MULTIPLY = true;\n /**\n * Whether the mesh debug plugin is enabled in the material.\n * Defaults to true.\n */\n this.DBG_ENABLED = true;\n }\n}\n/**\n * Plugin that implements various mesh debug visualizations,\n * List of available visualizations can be found in MeshDebugMode enum.\n */\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\n /** @internal */\n _markAllDefinesAsDirty() {\n this._enable(this._isEnabled);\n this.markAllDefinesAsDirty();\n }\n /**\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\n * @param shaderLanguage The shader language to use.\n * @returns true if the plugin is compatible with the shader language\n */\n isCompatible(shaderLanguage) {\n switch (shaderLanguage) {\n case 0 /* ShaderLanguage.GLSL */:\n case 1 /* ShaderLanguage.WGSL */:\n return true;\n default:\n return false;\n }\n }\n /**\n * Creates a new MeshDebugPluginMaterial\n * @param material Material to attach the mesh debug plugin to\n * @param options Options for the mesh debug plugin\n */\n constructor(material, options = {}) {\n var _options$mode, _options$multiply, _options$shadedDiffus, _options$shadedSpecul, _options$shadedSpecul2, _options$wireframeThi, _options$wireframeTri, _options$wireframeVer, _options$vertexColor, _options$vertexRadius, _options$uvScale, _options$uvPrimaryCol, _options$uvSecondaryC;\n const defines = new MeshDebugDefines();\n defines.DBG_MODE = (_options$mode = options.mode) !== null && _options$mode !== void 0 ? _options$mode : defines.DBG_MODE;\n defines.DBG_MULTIPLY = (_options$multiply = options.multiply) !== null && _options$multiply !== void 0 ? _options$multiply : defines.DBG_MULTIPLY;\n super(material, \"MeshDebug\", 200, defines, true, true);\n this._mode = defines.DBG_MODE;\n this._multiply = defines.DBG_MULTIPLY;\n this.shadedDiffuseColor = (_options$shadedDiffus = options.shadedDiffuseColor) !== null && _options$shadedDiffus !== void 0 ? _options$shadedDiffus : new Color3(1, 1, 1);\n this.shadedSpecularColor = (_options$shadedSpecul = options.shadedSpecularColor) !== null && _options$shadedSpecul !== void 0 ? _options$shadedSpecul : new Color3(0.8, 0.8, 0.8);\n this.shadedSpecularPower = (_options$shadedSpecul2 = options.shadedSpecularPower) !== null && _options$shadedSpecul2 !== void 0 ? _options$shadedSpecul2 : 10;\n this.wireframeThickness = (_options$wireframeThi = options.wireframeThickness) !== null && _options$wireframeThi !== void 0 ? _options$wireframeThi : 0.7;\n this.wireframeTrianglesColor = (_options$wireframeTri = options.wireframeTrianglesColor) !== null && _options$wireframeTri !== void 0 ? _options$wireframeTri : new Color3(0, 0, 0);\n this.wireframeVerticesColor = (_options$wireframeVer = options.wireframeVerticesColor) !== null && _options$wireframeVer !== void 0 ? _options$wireframeVer : new Color3(0.8, 0.8, 0.8);\n this.vertexColor = (_options$vertexColor = options.vertexColor) !== null && _options$vertexColor !== void 0 ? _options$vertexColor : new Color3(0, 0, 0);\n this.vertexRadius = (_options$vertexRadius = options.vertexRadius) !== null && _options$vertexRadius !== void 0 ? _options$vertexRadius : 1.2;\n this.uvScale = (_options$uvScale = options.uvScale) !== null && _options$uvScale !== void 0 ? _options$uvScale : 20;\n this.uvPrimaryColor = (_options$uvPrimaryCol = options.uvPrimaryColor) !== null && _options$uvPrimaryCol !== void 0 ? _options$uvPrimaryCol : new Color3(1, 1, 1);\n this.uvSecondaryColor = (_options$uvSecondaryC = options.uvSecondaryColor) !== null && _options$uvSecondaryC !== void 0 ? _options$uvSecondaryC : new Color3(0.5, 0.5, 0.5);\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\n this.isEnabled = true;\n }\n /**\n * Get the class name\n * @returns Class name\n */\n getClassName() {\n return \"MeshDebugPluginMaterial\";\n }\n /**\n * Gets whether the mesh debug plugin is enabled in the material.\n */\n get isEnabled() {\n return this._isEnabled;\n }\n /**\n * Sets whether the mesh debug plugin is enabled in the material.\n * @param value enabled\n */\n set isEnabled(value) {\n if (this._isEnabled === value) {\n return;\n }\n if (!this._material.getScene().getEngine().isWebGPU && this._material.getScene().getEngine().version == 1) {\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\n this._isEnabled = false;\n return;\n }\n this._isEnabled = value;\n this._markAllDefinesAsDirty();\n }\n /**\n * Prepare the defines\n * @param defines Mesh debug defines\n * @param scene Scene\n * @param mesh Mesh associated with material\n */\n prepareDefines(defines, scene, mesh) {\n if ((this._mode == 2 /* MeshDebugMode.VERTICES */ || this._mode == 1 /* MeshDebugMode.TRIANGLES */ || this._mode == 3 /* MeshDebugMode.TRIANGLES_VERTICES */) && !mesh.isVerticesDataPresent(\"dbg_initialPass\")) {\n Logger.Warn(\"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\", 1);\n }\n defines.DBG_MODE = this._mode;\n defines.DBG_MULTIPLY = this._multiply;\n defines.DBG_ENABLED = this._isEnabled;\n }\n /**\n * Get the shader attributes\n * @param attributes Array of attributes\n */\n getAttributes(attributes) {\n attributes.push(\"dbg_initialPass\");\n }\n /**\n * Get the shader uniforms\n * @param shaderLanguage The shader language to use.\n * @returns Uniforms\n */\n getUniforms(shaderLanguage = 0 /* ShaderLanguage.GLSL */) {\n return {\n ubo: [{\n name: \"dbg_shadedDiffuseColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_shadedSpecularColorPower\",\n size: 4,\n type: \"vec4\"\n },\n // shadedSpecularColor, shadedSpecularPower\n {\n name: \"dbg_thicknessRadiusScale\",\n size: 3,\n type: \"vec3\"\n },\n // wireframeThickness, vertexRadius, uvScale\n {\n name: \"dbg_wireframeTrianglesColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_wireframeVerticesColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_vertexColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_uvPrimaryColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_uvSecondaryColor\",\n size: 3,\n type: \"vec3\"\n }, {\n name: \"dbg_materialColor\",\n size: 3,\n type: \"vec3\"\n }],\n fragment: shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? fragmentUniforms : fragmentUniformsWebGPU\n };\n }\n /**\n * Bind the uniform buffer\n * @param uniformBuffer Uniform buffer\n */\n bindForSubMesh(uniformBuffer) {\n if (!this._isEnabled) {\n return;\n }\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this.shadedDiffuseColor.r, this.shadedDiffuseColor.g, this.shadedDiffuseColor.b);\n uniformBuffer.updateFloat4(\"dbg_shadedSpecularColorPower\", this.shadedSpecularColor.r, this.shadedSpecularColor.g, this.shadedSpecularColor.b, this.shadedSpecularPower);\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this.wireframeThickness, this.vertexRadius, this.uvScale);\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this.wireframeTrianglesColor);\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this.wireframeVerticesColor);\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this.vertexColor);\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this.uvPrimaryColor);\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this.uvSecondaryColor);\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\n }\n /**\n * Get shader code\n * @param shaderType \"vertex\" or \"fragment\"\n * @param shaderLanguage The shader language to use.\n * @returns Shader code\n */\n getCustomCode(shaderType, shaderLanguage = 0 /* ShaderLanguage.GLSL */) {\n if (shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return shaderType === \"vertex\" ? {\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitionsWebGPU,\n CUSTOM_VERTEX_MAIN_END: vertexMainEndWebGPU\n } : {\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitionsWebGPU,\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEndWebGPU\n };\n }\n return shaderType === \"vertex\" ? {\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd\n } : {\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd\n };\n }\n /**\n * Resets static variables of the plugin to their original state\n */\n static Reset() {\n this._PluginCount = 0;\n this.MaterialColors = defaultMaterialColors;\n }\n /**\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\n * @param mesh the mesh to target\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\n */\n static PrepareMeshForTrianglesAndVerticesMode(mesh, returnRollback = false) {\n let rollback = () => {};\n if (mesh.getTotalIndices() == 0) return rollback;\n if (returnRollback) {\n const kinds = mesh.getVerticesDataKinds();\n const indices = mesh.getIndices();\n const data = {};\n for (const kind of kinds) {\n data[kind] = mesh.getVerticesData(kind);\n }\n rollback = function () {\n mesh.setIndices(indices);\n for (const kind of kinds) {\n const stride = mesh.getVertexBuffer(kind).getStrideSize();\n mesh.setVerticesData(kind, data[kind], undefined, stride);\n }\n mesh.removeVerticesData(\"dbg_initialPass\");\n };\n }\n let indices = Array.from(mesh.getIndices());\n const newIndices1 = [];\n for (let i = 0; i < indices.length; i += 3) {\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\n }\n mesh.setIndices(indices.concat(newIndices1));\n mesh.convertToUnIndexedMesh();\n mesh.isUnIndexed = false;\n indices = Array.from(mesh.getIndices());\n const newIndices2 = [];\n for (let i = indices.length / 2; i < indices.length; i += 3) {\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\n }\n mesh.setIndices(indices.concat(newIndices2));\n const num = mesh.getTotalVertices();\n const mid = num / 2;\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\n return rollback;\n }\n}\n/**\n * Total number of instances of the plugin.\n * Starts at 0.\n */\nMeshDebugPluginMaterial._PluginCount = 0;\n/**\n * Color palette used for MATERIALIDS mode.\n * Defaults to `defaultMaterialColors`\n */\nMeshDebugPluginMaterial.MaterialColors = defaultMaterialColors;\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"_materialColor\", void 0);\n__decorate([serialize()], MeshDebugPluginMaterial.prototype, \"_isEnabled\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllDefinesAsDirty\")], MeshDebugPluginMaterial.prototype, \"mode\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllDefinesAsDirty\")], MeshDebugPluginMaterial.prototype, \"multiply\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"shadedDiffuseColor\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"shadedSpecularColor\", void 0);\n__decorate([serialize()], MeshDebugPluginMaterial.prototype, \"shadedSpecularPower\", void 0);\n__decorate([serialize()], MeshDebugPluginMaterial.prototype, \"wireframeThickness\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"wireframeTrianglesColor\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"wireframeVerticesColor\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"vertexColor\", void 0);\n__decorate([serialize()], MeshDebugPluginMaterial.prototype, \"vertexRadius\", void 0);\n__decorate([serialize()], MeshDebugPluginMaterial.prototype, \"uvScale\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"uvPrimaryColor\", void 0);\n__decorate([serializeAsColor3()], MeshDebugPluginMaterial.prototype, \"uvSecondaryColor\", void 0);\nRegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);","map":{"version":3,"names":["__decorate","MaterialPluginBase","MaterialDefines","RegisterClass","Color3","Logger","expandToProperty","serialize","serializeAsColor3","vertexDefinitions","vertexDefinitionsWebGPU","vertexMainEnd","vertexMainEndWebGPU","fragmentUniforms","fragmentUniformsWebGPU","fragmentDefinitions","fragmentDefinitionsWebGPU","fragmentMainEnd","fragmentMainEndWebGPU","defaultMaterialColors","MeshDebugMode","MeshDebugDefines","constructor","arguments","DBG_MODE","DBG_MULTIPLY","DBG_ENABLED","MeshDebugPluginMaterial","_markAllDefinesAsDirty","_enable","_isEnabled","markAllDefinesAsDirty","isCompatible","shaderLanguage","material","options","_options$mode","_options$multiply","_options$shadedDiffus","_options$shadedSpecul","_options$shadedSpecul2","_options$wireframeThi","_options$wireframeTri","_options$wireframeVer","_options$vertexColor","_options$vertexRadius","_options$uvScale","_options$uvPrimaryCol","_options$uvSecondaryC","defines","mode","multiply","_mode","_multiply","shadedDiffuseColor","shadedSpecularColor","shadedSpecularPower","wireframeThickness","wireframeTrianglesColor","wireframeVerticesColor","vertexColor","vertexRadius","uvScale","uvPrimaryColor","uvSecondaryColor","_materialColor","MaterialColors","_PluginCount","length","isEnabled","getClassName","value","_material","getScene","getEngine","isWebGPU","version","Error","prepareDefines","scene","mesh","isVerticesDataPresent","Warn","getAttributes","attributes","push","getUniforms","ubo","name","size","type","fragment","bindForSubMesh","uniformBuffer","updateFloat3","r","g","b","updateFloat4","updateColor3","getCustomCode","shaderType","CUSTOM_VERTEX_DEFINITIONS","CUSTOM_VERTEX_MAIN_END","CUSTOM_FRAGMENT_DEFINITIONS","CUSTOM_FRAGMENT_MAIN_END","Reset","PrepareMeshForTrianglesAndVerticesMode","returnRollback","rollback","getTotalIndices","kinds","getVerticesDataKinds","indices","getIndices","data","kind","getVerticesData","setIndices","stride","getVertexBuffer","getStrideSize","setVerticesData","undefined","removeVerticesData","Array","from","newIndices1","i","concat","convertToUnIndexedMesh","isUnIndexed","newIndices2","num","getTotalVertices","mid","pass","fill","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/meshDebugPluginMaterial.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { MaterialPluginBase } from \"./materialPluginBase.js\";\nimport { MaterialDefines } from \"./materialDefines.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { Color3 } from \"../Maths/math.js\";\nimport { Logger } from \"../Misc/logger.js\";\nimport { expandToProperty, serialize, serializeAsColor3 } from \"../Misc/decorators.js\";\nconst vertexDefinitions = `#if defined(DBG_ENABLED)\r\nattribute float dbg_initialPass;\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n#endif`;\nconst vertexDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nattribute dbg_initialPass: f32;\r\nvarying dbg_vBarycentric: vec3f;\r\nvarying dbg_vVertexWorldPos: vec3f;\r\nvarying dbg_vPass: f32;\r\n#endif`;\nconst vertexMainEnd = `#if defined(DBG_ENABLED)\r\nfloat dbg_vertexIndex = mod(float(gl_VertexID), 3.);\r\nif (dbg_vertexIndex == 0.0) { \r\n dbg_vBarycentric = vec3(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n dbg_vBarycentric = vec3(0.,1.,0.); \r\n}\r\nelse { \r\n dbg_vBarycentric = vec3(0.,0.,1.); \r\n}\r\n\r\ndbg_vVertexWorldPos = vPositionW;\r\ndbg_vPass = dbg_initialPass;\r\n#endif`;\nconst vertexMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_vertexIndex = f32(input.vertexIndex) % 3.;\r\nif (dbg_vertexIndex == 0.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(1.,0.,0.); \r\n}\r\nelse if (dbg_vertexIndex == 1.0) { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,1.,0.); \r\n}\r\nelse { \r\n vertexOutputs.dbg_vBarycentric = vec3f(0.,0.,1.); \r\n}\r\n\r\nvertexOutputs.dbg_vVertexWorldPos = vertexOutputs.vPositionW;\r\nvertexOutputs.dbg_vPass = input.dbg_initialPass;\r\n#endif`;\nconst fragmentUniforms = `#if defined(DBG_ENABLED)\r\nuniform vec3 dbg_shadedDiffuseColor;\r\nuniform vec4 dbg_shadedSpecularColorPower;\r\nuniform vec3 dbg_thicknessRadiusScale;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform vec3 dbg_vertexColor;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform vec3 dbg_wireframeTrianglesColor;\r\n#elif DBG_MODE == 3\r\n uniform vec3 dbg_wireframeVerticesColor;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform vec3 dbg_uvPrimaryColor;\r\n uniform vec3 dbg_uvSecondaryColor;\r\n#elif DBG_MODE == 7\r\n uniform vec3 dbg_materialColor;\r\n#endif\r\n#endif`;\nconst fragmentUniformsWebGPU = `#if defined(DBG_ENABLED)\r\nuniform dbg_shadedDiffuseColor: vec3f;\r\nuniform dbg_shadedSpecularColorPower: vec4f;\r\nuniform dbg_thicknessRadiusScale: vec3f;\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n uniform dbg_vertexColor: vec3f;\r\n#endif\r\n\r\n#if DBG_MODE == 1\r\n uniform dbg_wireframeTrianglesColor: vec3f;\r\n#elif DBG_MODE == 3\r\n uniform dbg_wireframeVerticesColor: vec3f;\r\n#elif DBG_MODE == 4 || DBG_MODE == 5\r\n uniform dbg_uvPrimaryColor: vec3f;\r\n uniform dbg_uvSecondaryColor: vec3f;\r\n#elif DBG_MODE == 7\r\n uniform dbg_materialColor: vec3f;\r\n#endif\r\n#endif`;\nconst fragmentDefinitions = `#if defined(DBG_ENABLED)\r\nvarying vec3 dbg_vBarycentric;\r\nflat varying vec3 dbg_vVertexWorldPos;\r\nflat varying float dbg_vPass;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n vec3 dbg_applyShading(vec3 color) {\r\n vec3 N = vNormalW.xyz;\r\n vec3 L = normalize(vEyePosition.xyz - vPositionW.xyz);\r\n vec3 H = normalize(L + L);\r\n float LdotN = clamp(dot(L,N), 0., 1.);\r\n float HdotN = clamp(dot(H,N), 0., 1.);\r\n float specTerm = pow(HdotN, dbg_shadedSpecularColorPower.w);\r\n color *= (LdotN / PI);\r\n color += dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return color;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n float dbg_edgeFactor() {\r\n vec3 d = fwidth(dbg_vBarycentric);\r\n vec3 a3 = smoothstep(vec3(0.), d * dbg_thicknessRadiusScale.x, dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor() {\r\n vec3 worldPos = vPositionW;\r\n float dist = length(worldPos - dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((dbg_thicknessRadiusScale.y * d), ((dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n float dbg_checkerboardFactor(vec2 uv) {\r\n vec2 f = fract(uv * dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\nconst fragmentDefinitionsWebGPU = `#if defined(DBG_ENABLED)\r\nvarying dbg_vBarycentric: vec3f;\r\nvarying dbg_vVertexWorldPos: vec3f;\r\nvarying dbg_vPass: f32;\r\n\r\n#if !defined(DBG_MULTIPLY)\r\n fn dbg_applyShading(color: vec3f) -> vec3f {\r\n var N = fragmentInputs.vNormalW.xyz;\r\n var L = normalize(scene.vEyePosition.xyz - fragmentInputs.vPositionW.xyz);\r\n var H = normalize(L + L);\r\n var LdotN = clamp(dot(L,N), 0., 1.);\r\n var HdotN = clamp(dot(H,N), 0., 1.);\r\n var specTerm = pow(HdotN, uniforms.dbg_shadedSpecularColorPower.w);\r\n var result = color * (LdotN / PI);\r\n result += uniforms.dbg_shadedSpecularColorPower.rgb * (specTerm / PI);\r\n return result;\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 1 || DBG_MODE == 3\r\n fn dbg_edgeFactor() -> f32 {\r\n var d = fwidth(fragmentInputs.dbg_vBarycentric);\r\n var a3 = smoothstep(vec3f(0.), d * uniforms.dbg_thicknessRadiusScale.x, fragmentInputs.dbg_vBarycentric);\r\n return min(min(a3.x, a3.y), a3.z);\r\n }\r\n#endif\r\n\r\n#if DBG_MODE == 2 || DBG_MODE == 3\r\n fn dbg_cornerFactor() -> f32 {\r\n var worldPos = fragmentInputs.vPositionW;\r\n float dist = length(worldPos - fragmentInputs.dbg_vVertexWorldPos);\r\n float camDist = length(worldPos - scene.vEyePosition.xyz);\r\n float d = sqrt(camDist) * .001;\r\n return smoothstep((uniforms.dbg_thicknessRadiusScale.y * d), ((uniforms.dbg_thicknessRadiusScale.y * 1.01) * d), dist);\r\n }\r\n#endif\r\n\r\n#if (DBG_MODE == 4 && defined(UV1)) || (DBG_MODE == 5 && defined(UV2))\r\n fn dbg_checkerboardFactor(uv: vec2f) -> f32 {\r\n var f = fract(uv * uniforms.dbg_thicknessRadiusScale.z);\r\n f -= .5;\r\n return (f.x * f.y) > 0. ? 1. : 0.;\r\n }\r\n#endif\r\n#endif`;\nconst fragmentMainEnd = `#if defined(DBG_ENABLED)\r\nvec3 dbg_color = vec3(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(dbg_wireframeTrianglesColor, vec3(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n float dbg_cornerFactor = dbg_cornerFactor();\r\n if (dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(dbg_wireframeVerticesColor, vec3(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(dbg_uvPrimaryColor, dbg_uvSecondaryColor, dbg_checkerboardFactor(vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n gl_FragColor *= vec4(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n gl_FragColor = vec4(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n gl_FragColor = vec4(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\nconst fragmentMainEndWebGPU = `#if defined(DBG_ENABLED)\r\nvar dbg_color = vec3f(1.);\r\n#if DBG_MODE == 1\r\n dbg_color = mix(uniforms.dbg_wireframeTrianglesColor, vec3f(1.), dbg_edgeFactor());\r\n#elif DBG_MODE == 2 || DBG_MODE == 3\r\n var dbg_cornerFactor = dbg_cornerFactor();\r\n if (fragmentInputs.dbg_vPass == 0. && dbg_cornerFactor == 1.) discard;\r\n dbg_color = mix(uniforms.dbg_vertexColor, vec3(1.), dbg_cornerFactor);\r\n #if DBG_MODE == 3\r\n dbg_color *= mix(uniforms.dbg_wireframeVerticesColor, vec3f(1.), dbg_edgeFactor());\r\n #endif\r\n#elif DBG_MODE == 4 && defined(MAINUV1)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV1));\r\n#elif DBG_MODE == 5 && defined(MAINUV2)\r\n dbg_color = mix(uniforms.dbg_uvPrimaryColor, uniforms.dbg_uvSecondaryColor, dbg_checkerboardFactor(fragmentInputs.vMainUV2));\r\n#elif DBG_MODE == 6 && defined(VERTEXCOLOR)\r\n dbg_color = fragmentInputs.vColor.rgb;\r\n#elif DBG_MODE == 7\r\n dbg_color = uniforms.dbg_materialColor;\r\n#endif\r\n\r\n#if defined(DBG_MULTIPLY)\r\n fragmentOutputs.color *= vec4f(dbg_color, 1.);\r\n#else\r\n #if DBG_MODE != 6\r\n fragmentOutputs.color = vec4f(dbg_applyShading(dbg_shadedDiffuseColor) * dbg_color, 1.);\r\n #else\r\n fragmentOutputs.color = vec4f(dbg_color, 1.);\r\n #endif\r\n#endif\r\n#endif`;\nconst defaultMaterialColors = [\n new Color3(0.98, 0.26, 0.38),\n new Color3(0.47, 0.75, 0.3),\n new Color3(0, 0.26, 0.77),\n new Color3(0.97, 0.6, 0.76),\n new Color3(0.19, 0.63, 0.78),\n new Color3(0.98, 0.8, 0.6),\n new Color3(0.65, 0.43, 0.15),\n new Color3(0.15, 0.47, 0.22),\n new Color3(0.67, 0.71, 0.86),\n new Color3(0.09, 0.46, 0.56),\n new Color3(0.8, 0.98, 0.02),\n new Color3(0.39, 0.29, 0.13),\n new Color3(0.53, 0.63, 0.06),\n new Color3(0.95, 0.96, 0.41),\n new Color3(1, 0.72, 0.94),\n new Color3(0.63, 0.08, 0.31),\n new Color3(0.66, 0.96, 0.95),\n new Color3(0.22, 0.14, 0.19),\n new Color3(0.14, 0.65, 0.59),\n new Color3(0.93, 1, 0.68),\n new Color3(0.93, 0.14, 0.44),\n new Color3(0.47, 0.86, 0.67),\n new Color3(0.85, 0.07, 0.78),\n new Color3(0.53, 0.64, 0.98),\n new Color3(0.43, 0.37, 0.56),\n new Color3(0.71, 0.65, 0.25),\n new Color3(0.66, 0.19, 0.01),\n new Color3(0.94, 0.53, 0.12),\n new Color3(0.41, 0.44, 0.44),\n new Color3(0.24, 0.71, 0.96),\n new Color3(0.57, 0.28, 0.56),\n new Color3(0.44, 0.98, 0.42),\n];\n/**\n * Supported visualizations of MeshDebugPluginMaterial\n */\nexport var MeshDebugMode;\n(function (MeshDebugMode) {\n /**\n * Material without any mesh debug visualization\n */\n MeshDebugMode[MeshDebugMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * A wireframe of the mesh\n * NOTE: For this mode to work correctly, convertToUnIndexedMesh() or MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"TRIANGLES\"] = 1] = \"TRIANGLES\";\n /**\n * Points drawn over vertices of mesh\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"VERTICES\"] = 2] = \"VERTICES\";\n /**\n * A wireframe of the mesh, with points drawn over vertices\n * NOTE: For this mode to work correctly, MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() must first be called on mesh.\n */\n MeshDebugMode[MeshDebugMode[\"TRIANGLES_VERTICES\"] = 3] = \"TRIANGLES_VERTICES\";\n /**\n * A checkerboard grid of the mesh's UV set 0\n */\n MeshDebugMode[MeshDebugMode[\"UV0\"] = 4] = \"UV0\";\n /**\n * A checkerboard grid of the mesh's UV set 1\n */\n MeshDebugMode[MeshDebugMode[\"UV1\"] = 5] = \"UV1\";\n /**\n * The mesh's vertex colors displayed as the primary texture\n */\n MeshDebugMode[MeshDebugMode[\"VERTEXCOLORS\"] = 6] = \"VERTEXCOLORS\";\n /**\n * An arbitrary, distinguishable color to identify the material\n */\n MeshDebugMode[MeshDebugMode[\"MATERIALIDS\"] = 7] = \"MATERIALIDS\";\n})(MeshDebugMode || (MeshDebugMode = {}));\n/** @internal */\nclass MeshDebugDefines extends MaterialDefines {\n constructor() {\n super(...arguments);\n /**\n * Current mesh debug visualization.\n * Defaults to NONE.\n */\n this.DBG_MODE = 0 /* MeshDebugMode.NONE */;\n /**\n * Whether the mesh debug visualization multiplies with colors underneath.\n * Defaults to true.\n */\n this.DBG_MULTIPLY = true;\n /**\n * Whether the mesh debug plugin is enabled in the material.\n * Defaults to true.\n */\n this.DBG_ENABLED = true;\n }\n}\n/**\n * Plugin that implements various mesh debug visualizations,\n * List of available visualizations can be found in MeshDebugMode enum.\n */\nexport class MeshDebugPluginMaterial extends MaterialPluginBase {\n /** @internal */\n _markAllDefinesAsDirty() {\n this._enable(this._isEnabled);\n this.markAllDefinesAsDirty();\n }\n /**\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\n * @param shaderLanguage The shader language to use.\n * @returns true if the plugin is compatible with the shader language\n */\n isCompatible(shaderLanguage) {\n switch (shaderLanguage) {\n case 0 /* ShaderLanguage.GLSL */:\n case 1 /* ShaderLanguage.WGSL */:\n return true;\n default:\n return false;\n }\n }\n /**\n * Creates a new MeshDebugPluginMaterial\n * @param material Material to attach the mesh debug plugin to\n * @param options Options for the mesh debug plugin\n */\n constructor(material, options = {}) {\n const defines = new MeshDebugDefines();\n defines.DBG_MODE = options.mode ?? defines.DBG_MODE;\n defines.DBG_MULTIPLY = options.multiply ?? defines.DBG_MULTIPLY;\n super(material, \"MeshDebug\", 200, defines, true, true);\n this._mode = defines.DBG_MODE;\n this._multiply = defines.DBG_MULTIPLY;\n this.shadedDiffuseColor = options.shadedDiffuseColor ?? new Color3(1, 1, 1);\n this.shadedSpecularColor = options.shadedSpecularColor ?? new Color3(0.8, 0.8, 0.8);\n this.shadedSpecularPower = options.shadedSpecularPower ?? 10;\n this.wireframeThickness = options.wireframeThickness ?? 0.7;\n this.wireframeTrianglesColor = options.wireframeTrianglesColor ?? new Color3(0, 0, 0);\n this.wireframeVerticesColor = options.wireframeVerticesColor ?? new Color3(0.8, 0.8, 0.8);\n this.vertexColor = options.vertexColor ?? new Color3(0, 0, 0);\n this.vertexRadius = options.vertexRadius ?? 1.2;\n this.uvScale = options.uvScale ?? 20;\n this.uvPrimaryColor = options.uvPrimaryColor ?? new Color3(1, 1, 1);\n this.uvSecondaryColor = options.uvSecondaryColor ?? new Color3(0.5, 0.5, 0.5);\n this._materialColor = MeshDebugPluginMaterial.MaterialColors[MeshDebugPluginMaterial._PluginCount++ % MeshDebugPluginMaterial.MaterialColors.length];\n this.isEnabled = true;\n }\n /**\n * Get the class name\n * @returns Class name\n */\n getClassName() {\n return \"MeshDebugPluginMaterial\";\n }\n /**\n * Gets whether the mesh debug plugin is enabled in the material.\n */\n get isEnabled() {\n return this._isEnabled;\n }\n /**\n * Sets whether the mesh debug plugin is enabled in the material.\n * @param value enabled\n */\n set isEnabled(value) {\n if (this._isEnabled === value) {\n return;\n }\n if (!this._material.getScene().getEngine().isWebGPU && this._material.getScene().getEngine().version == 1) {\n Logger.Error(\"MeshDebugPluginMaterial is not supported on WebGL 1.0.\");\n this._isEnabled = false;\n return;\n }\n this._isEnabled = value;\n this._markAllDefinesAsDirty();\n }\n /**\n * Prepare the defines\n * @param defines Mesh debug defines\n * @param scene Scene\n * @param mesh Mesh associated with material\n */\n prepareDefines(defines, scene, mesh) {\n if ((this._mode == 2 /* MeshDebugMode.VERTICES */ || this._mode == 1 /* MeshDebugMode.TRIANGLES */ || this._mode == 3 /* MeshDebugMode.TRIANGLES_VERTICES */) &&\n !mesh.isVerticesDataPresent(\"dbg_initialPass\")) {\n Logger.Warn(\"For best results with TRIANGLES, TRIANGLES_VERTICES, or VERTICES modes, please use MeshDebugPluginMaterial.PrepareMeshForTrianglesAndVerticesMode() on mesh.\", 1);\n }\n defines.DBG_MODE = this._mode;\n defines.DBG_MULTIPLY = this._multiply;\n defines.DBG_ENABLED = this._isEnabled;\n }\n /**\n * Get the shader attributes\n * @param attributes Array of attributes\n */\n getAttributes(attributes) {\n attributes.push(\"dbg_initialPass\");\n }\n /**\n * Get the shader uniforms\n * @param shaderLanguage The shader language to use.\n * @returns Uniforms\n */\n getUniforms(shaderLanguage = 0 /* ShaderLanguage.GLSL */) {\n return {\n ubo: [\n { name: \"dbg_shadedDiffuseColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_shadedSpecularColorPower\", size: 4, type: \"vec4\" }, // shadedSpecularColor, shadedSpecularPower\n { name: \"dbg_thicknessRadiusScale\", size: 3, type: \"vec3\" }, // wireframeThickness, vertexRadius, uvScale\n { name: \"dbg_wireframeTrianglesColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_wireframeVerticesColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_vertexColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_uvPrimaryColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_uvSecondaryColor\", size: 3, type: \"vec3\" },\n { name: \"dbg_materialColor\", size: 3, type: \"vec3\" },\n ],\n fragment: shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? fragmentUniforms : fragmentUniformsWebGPU,\n };\n }\n /**\n * Bind the uniform buffer\n * @param uniformBuffer Uniform buffer\n */\n bindForSubMesh(uniformBuffer) {\n if (!this._isEnabled) {\n return;\n }\n uniformBuffer.updateFloat3(\"dbg_shadedDiffuseColor\", this.shadedDiffuseColor.r, this.shadedDiffuseColor.g, this.shadedDiffuseColor.b);\n uniformBuffer.updateFloat4(\"dbg_shadedSpecularColorPower\", this.shadedSpecularColor.r, this.shadedSpecularColor.g, this.shadedSpecularColor.b, this.shadedSpecularPower);\n uniformBuffer.updateFloat3(\"dbg_thicknessRadiusScale\", this.wireframeThickness, this.vertexRadius, this.uvScale);\n uniformBuffer.updateColor3(\"dbg_wireframeTrianglesColor\", this.wireframeTrianglesColor);\n uniformBuffer.updateColor3(\"dbg_wireframeVerticesColor\", this.wireframeVerticesColor);\n uniformBuffer.updateColor3(\"dbg_vertexColor\", this.vertexColor);\n uniformBuffer.updateColor3(\"dbg_uvPrimaryColor\", this.uvPrimaryColor);\n uniformBuffer.updateColor3(\"dbg_uvSecondaryColor\", this.uvSecondaryColor);\n uniformBuffer.updateColor3(\"dbg_materialColor\", this._materialColor);\n }\n /**\n * Get shader code\n * @param shaderType \"vertex\" or \"fragment\"\n * @param shaderLanguage The shader language to use.\n * @returns Shader code\n */\n getCustomCode(shaderType, shaderLanguage = 0 /* ShaderLanguage.GLSL */) {\n if (shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return shaderType === \"vertex\"\n ? {\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitionsWebGPU,\n CUSTOM_VERTEX_MAIN_END: vertexMainEndWebGPU,\n }\n : {\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitionsWebGPU,\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEndWebGPU,\n };\n }\n return shaderType === \"vertex\"\n ? {\n CUSTOM_VERTEX_DEFINITIONS: vertexDefinitions,\n CUSTOM_VERTEX_MAIN_END: vertexMainEnd,\n }\n : {\n CUSTOM_FRAGMENT_DEFINITIONS: fragmentDefinitions,\n CUSTOM_FRAGMENT_MAIN_END: fragmentMainEnd,\n };\n }\n /**\n * Resets static variables of the plugin to their original state\n */\n static Reset() {\n this._PluginCount = 0;\n this.MaterialColors = defaultMaterialColors;\n }\n /**\n * Renders triangles in a mesh 3 times by tripling the indices in the index buffer.\n * Used to prepare a mesh to be rendered in `TRIANGLES`, `VERTICES`, or `TRIANGLES_VERTICES` modes.\n * NOTE: This is a destructive operation. The mesh's index buffer and vertex buffers are modified, and a new vertex buffer is allocated.\n * If you'd like the ability to revert these changes, toggle the optional `returnRollback` flag.\n * @param mesh the mesh to target\n * @param returnRollback whether or not to return a function that reverts mesh to its initial state. Default: false.\n * @returns a rollback function if `returnRollback` is true, otherwise an empty function.\n */\n static PrepareMeshForTrianglesAndVerticesMode(mesh, returnRollback = false) {\n let rollback = () => { };\n if (mesh.getTotalIndices() == 0)\n return rollback;\n if (returnRollback) {\n const kinds = mesh.getVerticesDataKinds();\n const indices = mesh.getIndices();\n const data = {};\n for (const kind of kinds) {\n data[kind] = mesh.getVerticesData(kind);\n }\n rollback = function () {\n mesh.setIndices(indices);\n for (const kind of kinds) {\n const stride = mesh.getVertexBuffer(kind).getStrideSize();\n mesh.setVerticesData(kind, data[kind], undefined, stride);\n }\n mesh.removeVerticesData(\"dbg_initialPass\");\n };\n }\n let indices = Array.from(mesh.getIndices());\n const newIndices1 = [];\n for (let i = 0; i < indices.length; i += 3) {\n newIndices1.push(indices[i + 1], indices[i + 2], indices[i + 0]);\n }\n mesh.setIndices(indices.concat(newIndices1));\n mesh.convertToUnIndexedMesh();\n mesh.isUnIndexed = false;\n indices = Array.from(mesh.getIndices());\n const newIndices2 = [];\n for (let i = indices.length / 2; i < indices.length; i += 3) {\n newIndices2.push(indices[i + 1], indices[i + 2], indices[i + 0]);\n }\n mesh.setIndices(indices.concat(newIndices2));\n const num = mesh.getTotalVertices();\n const mid = num / 2;\n const pass = new Array(num).fill(1, 0, mid).fill(0, mid, num);\n mesh.setVerticesData(\"dbg_initialPass\", pass, false, 1);\n return rollback;\n }\n}\n/**\n * Total number of instances of the plugin.\n * Starts at 0.\n */\nMeshDebugPluginMaterial._PluginCount = 0;\n/**\n * Color palette used for MATERIALIDS mode.\n * Defaults to `defaultMaterialColors`\n */\nMeshDebugPluginMaterial.MaterialColors = defaultMaterialColors;\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"_materialColor\", void 0);\n__decorate([\n serialize()\n], MeshDebugPluginMaterial.prototype, \"_isEnabled\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllDefinesAsDirty\")\n], MeshDebugPluginMaterial.prototype, \"mode\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllDefinesAsDirty\")\n], MeshDebugPluginMaterial.prototype, \"multiply\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"shadedDiffuseColor\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"shadedSpecularColor\", void 0);\n__decorate([\n serialize()\n], MeshDebugPluginMaterial.prototype, \"shadedSpecularPower\", void 0);\n__decorate([\n serialize()\n], MeshDebugPluginMaterial.prototype, \"wireframeThickness\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"wireframeTrianglesColor\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"wireframeVerticesColor\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"vertexColor\", void 0);\n__decorate([\n serialize()\n], MeshDebugPluginMaterial.prototype, \"vertexRadius\", void 0);\n__decorate([\n serialize()\n], MeshDebugPluginMaterial.prototype, \"uvScale\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"uvPrimaryColor\", void 0);\n__decorate([\n serializeAsColor3()\n], MeshDebugPluginMaterial.prototype, \"uvSecondaryColor\", void 0);\nRegisterClass(\"BABYLON.MeshDebugPluginMaterial\", MeshDebugPluginMaterial);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C;AACA,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,gBAAgB,EAAEC,SAAS,EAAEC,iBAAiB,QAAQ,uBAAuB;AACtF,MAAMC,iBAAiB,GAAG;AAC1B;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,uBAAuB,GAAG;AAChC;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,aAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,mBAAmB,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,gBAAgB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,sBAAsB,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,mBAAmB,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAMC,yBAAyB,GAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}