1 |
- {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { SerializationHelper } from \"../../Misc/decorators.serialization.js\";\nimport { VertexBuffer } from \"../../Buffers/buffer.js\";\nimport { MaterialDefines } from \"../../Materials/materialDefines.js\";\nimport { PushMaterial } from \"../../Materials/pushMaterial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { addClipPlaneUniforms, bindClipPlane } from \"../clipPlaneMaterialHelper.js\";\nimport { Camera } from \"../../Cameras/camera.js\";\nimport \"../../Shaders/gaussianSplatting.fragment.js\";\nimport \"../../Shaders/gaussianSplatting.vertex.js\";\nimport \"../../ShadersWGSL/gaussianSplatting.fragment.js\";\nimport \"../../ShadersWGSL/gaussianSplatting.vertex.js\";\nimport { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, PrepareUniformsAndSamplersList } from \"../materialHelper.functions.js\";\n/**\n * @internal\n */\nclass GaussianSplattingMaterialDefines extends MaterialDefines {\n /**\n * Constructor of the defines.\n */\n constructor() {\n super();\n this.FOG = false;\n this.THIN_INSTANCES = true;\n this.LOGARITHMICDEPTH = false;\n this.CLIPPLANE = false;\n this.CLIPPLANE2 = false;\n this.CLIPPLANE3 = false;\n this.CLIPPLANE4 = false;\n this.CLIPPLANE5 = false;\n this.CLIPPLANE6 = false;\n this.rebuild();\n }\n}\n/**\n * GaussianSplattingMaterial material used to render Gaussian Splatting\n * @experimental\n */\nexport class GaussianSplattingMaterial extends PushMaterial {\n /**\n * Instantiates a Gaussian Splatting Material in the given scene\n * @param name The friendly name of the material\n * @param scene The scene to add the material to\n */\n constructor(name, scene) {\n super(name, scene);\n this.backFaceCulling = false;\n }\n /**\n * Gets a boolean indicating that current material needs to register RTT\n */\n get hasRenderTargetTextures() {\n return false;\n }\n /**\n * Specifies whether or not this material should be rendered in alpha test mode.\n * @returns false\n */\n needAlphaTesting() {\n return false;\n }\n /**\n * Specifies whether or not this material should be rendered in alpha blend mode.\n * @returns true\n */\n needAlphaBlending() {\n return true;\n }\n /**\n * Checks whether the material is ready to be rendered for a given mesh.\n * @param mesh The mesh to render\n * @param subMesh The submesh to check against\n * @returns true if all the dependencies are ready (Textures, Effects...)\n */\n isReadyForSubMesh(mesh, subMesh) {\n var _this = this;\n const useInstances = true;\n const drawWrapper = subMesh._drawWrapper;\n if (drawWrapper.effect && this.isFrozen) {\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\n return true;\n }\n }\n if (!subMesh.materialDefines) {\n subMesh.materialDefines = new GaussianSplattingMaterialDefines();\n }\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (this._isReadyForSubMesh(subMesh)) {\n return true;\n }\n const engine = scene.getEngine();\n // Misc.\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, false, defines);\n // Values that need to be evaluated on every frame\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, true);\n // Attribs\n PrepareDefinesForAttributes(mesh, defines, false, false);\n // Get correct effect\n if (defines.isDirty) {\n defines.markAsProcessed();\n scene.resetCachedMaterial();\n //Attributes\n const attribs = [VertexBuffer.PositionKind, \"splatIndex\"];\n PrepareAttributesForInstances(attribs, defines);\n const uniforms = [\"world\", \"view\", \"projection\", \"vFogInfos\", \"vFogColor\", \"logarithmicDepthConstant\", \"invViewport\", \"dataTextureSize\", \"focal\"];\n const samplers = [\"covariancesATexture\", \"covariancesBTexture\", \"centersTexture\", \"colorsTexture\"];\n const uniformBuffers = [\"Scene\", \"Mesh\"];\n PrepareUniformsAndSamplersList({\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: defines\n });\n addClipPlaneUniforms(uniforms);\n const join = defines.toString();\n const effect = scene.getEngine().createEffect(\"gaussianSplatting\", {\n attributes: attribs,\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: join,\n onCompiled: this.onCompiled,\n onError: this.onError,\n indexParameters: {},\n shaderLanguage: this._shaderLanguage,\n extraInitializationsAsync: function () {\n var _ref = _asyncToGenerator(function* () {\n if (_this._shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n yield Promise.all([import(\"../../ShadersWGSL/gaussianSplatting.fragment.js\"), import(\"../../ShadersWGSL/gaussianSplatting.vertex.js\")]);\n } else {\n yield Promise.all([import(\"../../Shaders/gaussianSplatting.fragment.js\"), import(\"../../Shaders/gaussianSplatting.vertex.js\")]);\n }\n });\n return function extraInitializationsAsync() {\n return _ref.apply(this, arguments);\n };\n }()\n }, engine);\n subMesh.setEffect(effect, defines, this._materialContext);\n }\n if (!subMesh.effect || !subMesh.effect.isReady()) {\n return false;\n }\n defines._renderId = scene.getRenderId();\n drawWrapper._wasPreviouslyReady = true;\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\n return true;\n }\n /**\n * Bind material effect for a specific Gaussian Splatting mesh\n * @param mesh Gaussian splatting mesh\n * @param effect Splatting material or node material\n * @param scene scene that contains mesh and camera used for rendering\n */\n static BindEffect(mesh, effect, scene) {\n var _camera$rigParent;\n const engine = scene.getEngine();\n const camera = scene.activeCamera;\n const renderWidth = engine.getRenderWidth();\n const renderHeight = engine.getRenderHeight();\n // check if rigcamera, get number of rigs\n const numberOfRigs = (camera === null || camera === void 0 || (_camera$rigParent = camera.rigParent) === null || _camera$rigParent === void 0 ? void 0 : _camera$rigParent.rigCameras.length) || 1;\n effect.setFloat2(\"invViewport\", 1 / (renderWidth / numberOfRigs), 1 / renderHeight);\n let focal = 1000;\n if (camera) {\n /*\n more explicit version:\n const t = camera.getProjectionMatrix().m[5];\n const FovY = Math.atan(1.0 / t) * 2.0;\n focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);\n Using a shorter version here to not have tan(atan) and 2.0 factor\n */\n const t = camera.getProjectionMatrix().m[5];\n if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {\n focal = renderHeight * t / 2.0;\n } else {\n focal = renderWidth * t / 2.0;\n }\n }\n effect.setFloat2(\"focal\", focal, focal);\n const gsMesh = mesh;\n if (gsMesh.covariancesATexture) {\n const textureSize = gsMesh.covariancesATexture.getSize();\n effect.setFloat2(\"dataTextureSize\", textureSize.width, textureSize.height);\n effect.setTexture(\"covariancesATexture\", gsMesh.covariancesATexture);\n effect.setTexture(\"covariancesBTexture\", gsMesh.covariancesBTexture);\n effect.setTexture(\"centersTexture\", gsMesh.centersTexture);\n effect.setTexture(\"colorsTexture\", gsMesh.colorsTexture);\n }\n }\n /**\n * Binds the submesh to this material by preparing the effect and shader to draw\n * @param world defines the world transformation matrix\n * @param mesh defines the mesh containing the submesh\n * @param subMesh defines the submesh to bind the material to\n */\n bindForSubMesh(world, mesh, subMesh) {\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (!defines) {\n return;\n }\n const effect = subMesh.effect;\n if (!effect) {\n return;\n }\n this._activeEffect = effect;\n // Matrices Mesh.\n mesh.getMeshUniformBuffer().bindToEffect(effect, \"Mesh\");\n mesh.transferToEffect(world);\n // Bind data\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\n if (mustRebind) {\n this.bindView(effect);\n this.bindViewProjection(effect);\n GaussianSplattingMaterial.BindEffect(mesh, this._activeEffect, scene);\n // Clip plane\n bindClipPlane(effect, this, scene);\n } else if (scene.getEngine()._features.needToAlwaysBindUniformBuffers) {\n this._needToBindSceneUbo = true;\n }\n // Fog\n BindFogParameters(scene, mesh, effect);\n // Log. depth\n if (this.useLogarithmicDepth) {\n BindLogDepth(defines, effect, scene);\n }\n this._afterBind(mesh, this._activeEffect, subMesh);\n }\n /**\n * Clones the material.\n * @param name The cloned name.\n * @returns The cloned material.\n */\n clone(name) {\n return SerializationHelper.Clone(() => new GaussianSplattingMaterial(name, this.getScene()), this);\n }\n /**\n * Serializes the current material to its JSON representation.\n * @returns The JSON representation.\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.customType = \"BABYLON.GaussianSplattingMaterial\";\n return serializationObject;\n }\n /**\n * Gets the class name of the material\n * @returns \"GaussianSplattingMaterial\"\n */\n getClassName() {\n return \"GaussianSplattingMaterial\";\n }\n /**\n * Parse a JSON input to create back a Gaussian Splatting material.\n * @param source The JSON data to parse\n * @param scene The scene to create the parsed material in\n * @param rootUrl The root url of the assets the material depends upon\n * @returns the instantiated GaussianSplattingMaterial.\n */\n static Parse(source, scene, rootUrl) {\n return SerializationHelper.Parse(() => new GaussianSplattingMaterial(source.name, scene), source, scene, rootUrl);\n }\n}\nRegisterClass(\"BABYLON.GaussianSplattingMaterial\", GaussianSplattingMaterial);","map":{"version":3,"names":["SerializationHelper","VertexBuffer","MaterialDefines","PushMaterial","RegisterClass","addClipPlaneUniforms","bindClipPlane","Camera","BindFogParameters","BindLogDepth","PrepareAttributesForInstances","PrepareDefinesForAttributes","PrepareDefinesForFrameBoundValues","PrepareDefinesForMisc","PrepareUniformsAndSamplersList","GaussianSplattingMaterialDefines","constructor","FOG","THIN_INSTANCES","LOGARITHMICDEPTH","CLIPPLANE","CLIPPLANE2","CLIPPLANE3","CLIPPLANE4","CLIPPLANE5","CLIPPLANE6","rebuild","GaussianSplattingMaterial","name","scene","backFaceCulling","hasRenderTargetTextures","needAlphaTesting","needAlphaBlending","isReadyForSubMesh","mesh","subMesh","_this","useInstances","drawWrapper","_drawWrapper","effect","isFrozen","_wasPreviouslyReady","_wasPreviouslyUsingInstances","materialDefines","getScene","defines","_isReadyForSubMesh","engine","getEngine","_useLogarithmicDepth","pointsCloud","fogEnabled","isDirty","markAsProcessed","resetCachedMaterial","attribs","PositionKind","uniforms","samplers","uniformBuffers","uniformsNames","uniformBuffersNames","join","toString","createEffect","attributes","onCompiled","onError","indexParameters","shaderLanguage","_shaderLanguage","extraInitializationsAsync","_ref","_asyncToGenerator","Promise","all","apply","arguments","setEffect","_materialContext","isReady","_renderId","getRenderId","BindEffect","_camera$rigParent","camera","activeCamera","renderWidth","getRenderWidth","renderHeight","getRenderHeight","numberOfRigs","rigParent","rigCameras","length","setFloat2","focal","t","getProjectionMatrix","m","fovMode","FOVMODE_VERTICAL_FIXED","gsMesh","covariancesATexture","textureSize","getSize","width","height","setTexture","covariancesBTexture","centersTexture","colorsTexture","bindForSubMesh","world","_activeEffect","getMeshUniformBuffer","bindToEffect","transferToEffect","mustRebind","_mustRebind","visibility","bindView","bindViewProjection","_features","needToAlwaysBindUniformBuffers","_needToBindSceneUbo","useLogarithmicDepth","_afterBind","clone","Clone","serialize","serializationObject","customType","getClassName","Parse","source","rootUrl"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/GaussianSplatting/gaussianSplattingMaterial.js"],"sourcesContent":["import { SerializationHelper } from \"../../Misc/decorators.serialization.js\";\nimport { VertexBuffer } from \"../../Buffers/buffer.js\";\nimport { MaterialDefines } from \"../../Materials/materialDefines.js\";\nimport { PushMaterial } from \"../../Materials/pushMaterial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { addClipPlaneUniforms, bindClipPlane } from \"../clipPlaneMaterialHelper.js\";\nimport { Camera } from \"../../Cameras/camera.js\";\nimport \"../../Shaders/gaussianSplatting.fragment.js\";\nimport \"../../Shaders/gaussianSplatting.vertex.js\";\nimport \"../../ShadersWGSL/gaussianSplatting.fragment.js\";\nimport \"../../ShadersWGSL/gaussianSplatting.vertex.js\";\nimport { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from \"../materialHelper.functions.js\";\n/**\n * @internal\n */\nclass GaussianSplattingMaterialDefines extends MaterialDefines {\n /**\n * Constructor of the defines.\n */\n constructor() {\n super();\n this.FOG = false;\n this.THIN_INSTANCES = true;\n this.LOGARITHMICDEPTH = false;\n this.CLIPPLANE = false;\n this.CLIPPLANE2 = false;\n this.CLIPPLANE3 = false;\n this.CLIPPLANE4 = false;\n this.CLIPPLANE5 = false;\n this.CLIPPLANE6 = false;\n this.rebuild();\n }\n}\n/**\n * GaussianSplattingMaterial material used to render Gaussian Splatting\n * @experimental\n */\nexport class GaussianSplattingMaterial extends PushMaterial {\n /**\n * Instantiates a Gaussian Splatting Material in the given scene\n * @param name The friendly name of the material\n * @param scene The scene to add the material to\n */\n constructor(name, scene) {\n super(name, scene);\n this.backFaceCulling = false;\n }\n /**\n * Gets a boolean indicating that current material needs to register RTT\n */\n get hasRenderTargetTextures() {\n return false;\n }\n /**\n * Specifies whether or not this material should be rendered in alpha test mode.\n * @returns false\n */\n needAlphaTesting() {\n return false;\n }\n /**\n * Specifies whether or not this material should be rendered in alpha blend mode.\n * @returns true\n */\n needAlphaBlending() {\n return true;\n }\n /**\n * Checks whether the material is ready to be rendered for a given mesh.\n * @param mesh The mesh to render\n * @param subMesh The submesh to check against\n * @returns true if all the dependencies are ready (Textures, Effects...)\n */\n isReadyForSubMesh(mesh, subMesh) {\n const useInstances = true;\n const drawWrapper = subMesh._drawWrapper;\n if (drawWrapper.effect && this.isFrozen) {\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\n return true;\n }\n }\n if (!subMesh.materialDefines) {\n subMesh.materialDefines = new GaussianSplattingMaterialDefines();\n }\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (this._isReadyForSubMesh(subMesh)) {\n return true;\n }\n const engine = scene.getEngine();\n // Misc.\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, false, defines);\n // Values that need to be evaluated on every frame\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, true);\n // Attribs\n PrepareDefinesForAttributes(mesh, defines, false, false);\n // Get correct effect\n if (defines.isDirty) {\n defines.markAsProcessed();\n scene.resetCachedMaterial();\n //Attributes\n const attribs = [VertexBuffer.PositionKind, \"splatIndex\"];\n PrepareAttributesForInstances(attribs, defines);\n const uniforms = [\"world\", \"view\", \"projection\", \"vFogInfos\", \"vFogColor\", \"logarithmicDepthConstant\", \"invViewport\", \"dataTextureSize\", \"focal\"];\n const samplers = [\"covariancesATexture\", \"covariancesBTexture\", \"centersTexture\", \"colorsTexture\"];\n const uniformBuffers = [\"Scene\", \"Mesh\"];\n PrepareUniformsAndSamplersList({\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: defines,\n });\n addClipPlaneUniforms(uniforms);\n const join = defines.toString();\n const effect = scene.getEngine().createEffect(\"gaussianSplatting\", {\n attributes: attribs,\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: join,\n onCompiled: this.onCompiled,\n onError: this.onError,\n indexParameters: {},\n shaderLanguage: this._shaderLanguage,\n extraInitializationsAsync: async () => {\n if (this._shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await Promise.all([import(\"../../ShadersWGSL/gaussianSplatting.fragment.js\"), import(\"../../ShadersWGSL/gaussianSplatting.vertex.js\")]);\n }\n else {\n await Promise.all([import(\"../../Shaders/gaussianSplatting.fragment.js\"), import(\"../../Shaders/gaussianSplatting.vertex.js\")]);\n }\n },\n }, engine);\n subMesh.setEffect(effect, defines, this._materialContext);\n }\n if (!subMesh.effect || !subMesh.effect.isReady()) {\n return false;\n }\n defines._renderId = scene.getRenderId();\n drawWrapper._wasPreviouslyReady = true;\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\n return true;\n }\n /**\n * Bind material effect for a specific Gaussian Splatting mesh\n * @param mesh Gaussian splatting mesh\n * @param effect Splatting material or node material\n * @param scene scene that contains mesh and camera used for rendering\n */\n static BindEffect(mesh, effect, scene) {\n const engine = scene.getEngine();\n const camera = scene.activeCamera;\n const renderWidth = engine.getRenderWidth();\n const renderHeight = engine.getRenderHeight();\n // check if rigcamera, get number of rigs\n const numberOfRigs = camera?.rigParent?.rigCameras.length || 1;\n effect.setFloat2(\"invViewport\", 1 / (renderWidth / numberOfRigs), 1 / renderHeight);\n let focal = 1000;\n if (camera) {\n /*\n more explicit version:\n const t = camera.getProjectionMatrix().m[5];\n const FovY = Math.atan(1.0 / t) * 2.0;\n focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);\n Using a shorter version here to not have tan(atan) and 2.0 factor\n */\n const t = camera.getProjectionMatrix().m[5];\n if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {\n focal = (renderHeight * t) / 2.0;\n }\n else {\n focal = (renderWidth * t) / 2.0;\n }\n }\n effect.setFloat2(\"focal\", focal, focal);\n const gsMesh = mesh;\n if (gsMesh.covariancesATexture) {\n const textureSize = gsMesh.covariancesATexture.getSize();\n effect.setFloat2(\"dataTextureSize\", textureSize.width, textureSize.height);\n effect.setTexture(\"covariancesATexture\", gsMesh.covariancesATexture);\n effect.setTexture(\"covariancesBTexture\", gsMesh.covariancesBTexture);\n effect.setTexture(\"centersTexture\", gsMesh.centersTexture);\n effect.setTexture(\"colorsTexture\", gsMesh.colorsTexture);\n }\n }\n /**\n * Binds the submesh to this material by preparing the effect and shader to draw\n * @param world defines the world transformation matrix\n * @param mesh defines the mesh containing the submesh\n * @param subMesh defines the submesh to bind the material to\n */\n bindForSubMesh(world, mesh, subMesh) {\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (!defines) {\n return;\n }\n const effect = subMesh.effect;\n if (!effect) {\n return;\n }\n this._activeEffect = effect;\n // Matrices Mesh.\n mesh.getMeshUniformBuffer().bindToEffect(effect, \"Mesh\");\n mesh.transferToEffect(world);\n // Bind data\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\n if (mustRebind) {\n this.bindView(effect);\n this.bindViewProjection(effect);\n GaussianSplattingMaterial.BindEffect(mesh, this._activeEffect, scene);\n // Clip plane\n bindClipPlane(effect, this, scene);\n }\n else if (scene.getEngine()._features.needToAlwaysBindUniformBuffers) {\n this._needToBindSceneUbo = true;\n }\n // Fog\n BindFogParameters(scene, mesh, effect);\n // Log. depth\n if (this.useLogarithmicDepth) {\n BindLogDepth(defines, effect, scene);\n }\n this._afterBind(mesh, this._activeEffect, subMesh);\n }\n /**\n * Clones the material.\n * @param name The cloned name.\n * @returns The cloned material.\n */\n clone(name) {\n return SerializationHelper.Clone(() => new GaussianSplattingMaterial(name, this.getScene()), this);\n }\n /**\n * Serializes the current material to its JSON representation.\n * @returns The JSON representation.\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.customType = \"BABYLON.GaussianSplattingMaterial\";\n return serializationObject;\n }\n /**\n * Gets the class name of the material\n * @returns \"GaussianSplattingMaterial\"\n */\n getClassName() {\n return \"GaussianSplattingMaterial\";\n }\n /**\n * Parse a JSON input to create back a Gaussian Splatting material.\n * @param source The JSON data to parse\n * @param scene The scene to create the parsed material in\n * @param rootUrl The root url of the assets the material depends upon\n * @returns the instantiated GaussianSplattingMaterial.\n */\n static Parse(source, scene, rootUrl) {\n return SerializationHelper.Parse(() => new GaussianSplattingMaterial(source.name, scene), source, scene, rootUrl);\n }\n}\nRegisterClass(\"BABYLON.GaussianSplattingMaterial\", GaussianSplattingMaterial);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|