6966303c865fa176f52b12acb2a3dce64ccc573271f2278f14819341161d1f1e.json 28 KB

1
  1. {"ast":null,"code":"import { VertexBuffer, Buffer } from \"../../Buffers/buffer.js\";\nimport { BindBonesParameters, BindMorphTargetParameters, PrepareAttributesForBakedVertexAnimation } from \"../../Materials/materialHelper.functions.js\";\nimport { extractMinAndMax } from \"../../Maths/math.functions.js\";\nimport { Vector3 } from \"../../Maths/math.vector.js\";\nimport \"../../Shaders/gpuTransform.vertex.js\";\nimport \"../../Shaders/gpuTransform.fragment.js\";\n/** @internal */\nexport class TransformFeedbackBoundingHelper {\n /**\n * Creates a new TransformFeedbackBoundingHelper\n * @param engine defines the engine to use\n */\n constructor(engine) {\n this._buffers = {};\n this._effects = {};\n this._meshListCounter = 0;\n this._engine = engine;\n }\n /** @internal */\n processAsync(meshes) {\n if (!Array.isArray(meshes)) {\n meshes = [meshes];\n }\n this._meshListCounter = 0;\n this._processMeshList(meshes);\n return Promise.resolve();\n }\n _processMeshList(meshes) {\n const parallelShaderCompile = this._engine.getCaps().parallelShaderCompile;\n this._engine.getCaps().parallelShaderCompile = undefined;\n for (let i = 0; i < meshes.length; ++i) {\n const mesh = meshes[i];\n const vertexCount = mesh.getTotalVertices();\n if (vertexCount === 0 || !mesh.getVertexBuffer || !mesh.getVertexBuffer(VertexBuffer.PositionKind)) {\n continue;\n }\n // Get correct effect\n let computeEffect;\n let numInfluencers = 0;\n const defines = [];\n let uniforms = [];\n const attribs = [VertexBuffer.PositionKind];\n const samplers = [];\n // Bones\n if (mesh && mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\n attribs.push(VertexBuffer.MatricesIndicesKind);\n attribs.push(VertexBuffer.MatricesWeightsKind);\n if (mesh.numBoneInfluencers > 4) {\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\n }\n const skeleton = mesh.skeleton;\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\n if (skeleton.isUsingTextureForMatrices) {\n defines.push(\"#define BONETEXTURE\");\n if (uniforms.indexOf(\"boneTextureWidth\") === -1) {\n uniforms.push(\"boneTextureWidth\");\n }\n if (samplers.indexOf(\"boneSampler\") === -1) {\n samplers.push(\"boneSampler\");\n }\n } else {\n defines.push(\"#define BonesPerMesh \" + (skeleton.bones.length + 1));\n if (uniforms.indexOf(\"mBones\") === -1) {\n uniforms.push(\"mBones\");\n }\n }\n } else {\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\n }\n // Morph\n const manager = mesh ? mesh.morphTargetManager : null;\n if (manager) {\n numInfluencers = manager.numMaxInfluencers || manager.numInfluencers;\n if (numInfluencers > 0) {\n defines.push(\"#define MORPHTARGETS\");\n }\n if (manager.isUsingTextureForTargets) {\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\n if (uniforms.indexOf(\"morphTargetTextureIndices\") === -1) {\n uniforms.push(\"morphTargetTextureIndices\");\n }\n if (samplers.indexOf(\"morphTargets\") === -1) {\n samplers.push(\"morphTargets\");\n }\n }\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numInfluencers);\n for (let index = 0; index < numInfluencers; index++) {\n attribs.push(VertexBuffer.PositionKind + index);\n }\n if (numInfluencers > 0) {\n uniforms = uniforms.slice();\n uniforms.push(\"morphTargetInfluences\");\n uniforms.push(\"morphTargetCount\");\n uniforms.push(\"morphTargetTextureInfo\");\n uniforms.push(\"morphTargetTextureIndices\");\n }\n }\n // Baked Vertex Animation\n const bvaManager = mesh.bakedVertexAnimationManager;\n if (bvaManager && bvaManager.isEnabled) {\n defines.push(\"#define BAKED_VERTEX_ANIMATION_TEXTURE\");\n if (uniforms.indexOf(\"bakedVertexAnimationSettings\") === -1) {\n uniforms.push(\"bakedVertexAnimationSettings\");\n }\n if (uniforms.indexOf(\"bakedVertexAnimationTextureSizeInverted\") === -1) {\n uniforms.push(\"bakedVertexAnimationTextureSizeInverted\");\n }\n if (uniforms.indexOf(\"bakedVertexAnimationTime\") === -1) {\n uniforms.push(\"bakedVertexAnimationTime\");\n }\n if (samplers.indexOf(\"bakedVertexAnimationTexture\") === -1) {\n samplers.push(\"bakedVertexAnimationTexture\");\n }\n PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);\n }\n const join = defines.join(\"\\n\");\n if (!this._effects[join]) {\n const computeEffectOptions = {\n attributes: attribs,\n uniformsNames: uniforms,\n uniformBuffersNames: [],\n samplers: samplers,\n defines: join,\n fallbacks: null,\n onCompiled: null,\n onError: null,\n indexParameters: {\n maxSimultaneousMorphTargets: numInfluencers\n },\n maxSimultaneousLights: 0,\n transformFeedbackVaryings: [\"outPosition\"]\n };\n computeEffect = this._engine.createEffect(\"gpuTransform\", computeEffectOptions, this._engine);\n this._effects[join] = computeEffect;\n } else {\n computeEffect = this._effects[join];\n }\n this._compute(mesh, computeEffect);\n }\n this._engine.getCaps().parallelShaderCompile = parallelShaderCompile;\n }\n _compute(mesh, effect) {\n const engine = this._engine;\n // Buffer\n let targetBuffer;\n const vertexCount = mesh.getTotalVertices();\n if (!this._buffers[mesh.uniqueId]) {\n const targetData = new Float32Array(vertexCount * 3);\n targetBuffer = new Buffer(mesh.getEngine(), targetData, true, 3);\n this._buffers[mesh.uniqueId] = targetBuffer;\n } else {\n targetBuffer = this._buffers[mesh.uniqueId];\n }\n // Bind\n effect.getEngine().enableEffect(effect);\n mesh._bindDirect(effect, null, true);\n // Bones\n BindBonesParameters(mesh, effect);\n // Morph targets\n const manager = mesh.morphTargetManager;\n if (manager && manager.numInfluencers > 0) {\n BindMorphTargetParameters(mesh, effect);\n }\n // BVA\n const bvaManager = mesh.bakedVertexAnimationManager;\n if (bvaManager && bvaManager.isEnabled) {\n var _mesh$bakedVertexAnim;\n (_mesh$bakedVertexAnim = mesh.bakedVertexAnimationManager) === null || _mesh$bakedVertexAnim === void 0 || _mesh$bakedVertexAnim.bind(effect, false);\n }\n // Update\n const arrayBuffer = targetBuffer.getData();\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\n engine.setRasterizerState(false);\n engine.beginTransformFeedback(true);\n engine.drawArraysType(2, 0, vertexCount);\n engine.endTransformFeedback();\n engine.setRasterizerState(true);\n engine.readTransformFeedbackBuffer(arrayBuffer);\n engine.bindTransformFeedbackBuffer(null);\n // Update mesh\n if (this._meshListCounter === 0) {\n mesh._refreshBoundingInfo(arrayBuffer, null);\n } else {\n const bb = mesh.getBoundingInfo().boundingBox;\n const extend = extractMinAndMax(arrayBuffer, 0, vertexCount);\n TransformFeedbackBoundingHelper._Min.copyFrom(bb.minimum).minimizeInPlace(extend.minimum);\n TransformFeedbackBoundingHelper._Max.copyFrom(bb.maximum).maximizeInPlace(extend.maximum);\n mesh._refreshBoundingInfoDirect({\n minimum: TransformFeedbackBoundingHelper._Min,\n maximum: TransformFeedbackBoundingHelper._Max\n });\n }\n }\n /** @internal */\n registerMeshListAsync(meshes) {\n if (!Array.isArray(meshes)) {\n meshes = [meshes];\n }\n this._meshList = meshes;\n this._meshListCounter = 0;\n return Promise.resolve();\n }\n /** @internal */\n processMeshList() {\n if (this._meshList.length === 0) {\n return;\n }\n this._processMeshList(this._meshList);\n this._meshListCounter++;\n }\n /** @internal */\n fetchResultsForMeshListAsync() {\n this._meshListCounter = 0;\n return Promise.resolve();\n }\n /** @internal */\n dispose() {\n for (const key in this._buffers) {\n this._buffers[key].dispose();\n }\n this._buffers = {};\n this._effects = {};\n this._engine = null;\n }\n}\nTransformFeedbackBoundingHelper._Min = new Vector3();\nTransformFeedbackBoundingHelper._Max = new Vector3();","map":{"version":3,"names":["VertexBuffer","Buffer","BindBonesParameters","BindMorphTargetParameters","PrepareAttributesForBakedVertexAnimation","extractMinAndMax","Vector3","TransformFeedbackBoundingHelper","constructor","engine","_buffers","_effects","_meshListCounter","_engine","processAsync","meshes","Array","isArray","_processMeshList","Promise","resolve","parallelShaderCompile","getCaps","undefined","i","length","mesh","vertexCount","getTotalVertices","getVertexBuffer","PositionKind","computeEffect","numInfluencers","defines","uniforms","attribs","samplers","useBones","computeBonesUsingShaders","skeleton","push","MatricesIndicesKind","MatricesWeightsKind","numBoneInfluencers","MatricesIndicesExtraKind","MatricesWeightsExtraKind","isUsingTextureForMatrices","indexOf","bones","manager","morphTargetManager","numMaxInfluencers","isUsingTextureForTargets","index","slice","bvaManager","bakedVertexAnimationManager","isEnabled","join","computeEffectOptions","attributes","uniformsNames","uniformBuffersNames","fallbacks","onCompiled","onError","indexParameters","maxSimultaneousMorphTargets","maxSimultaneousLights","transformFeedbackVaryings","createEffect","_compute","effect","targetBuffer","uniqueId","targetData","Float32Array","getEngine","enableEffect","_bindDirect","_mesh$bakedVertexAnim","bind","arrayBuffer","getData","bindTransformFeedbackBuffer","getBuffer","setRasterizerState","beginTransformFeedback","drawArraysType","endTransformFeedback","readTransformFeedbackBuffer","_refreshBoundingInfo","bb","getBoundingInfo","boundingBox","extend","_Min","copyFrom","minimum","minimizeInPlace","_Max","maximum","maximizeInPlace","_refreshBoundingInfoDirect","registerMeshListAsync","_meshList","processMeshList","fetchResultsForMeshListAsync","dispose","key"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Culling/Helper/transformFeedbackBoundingHelper.js"],"sourcesContent":["import { VertexBuffer, Buffer } from \"../../Buffers/buffer.js\";\n\nimport { BindBonesParameters, BindMorphTargetParameters, PrepareAttributesForBakedVertexAnimation } from \"../../Materials/materialHelper.functions.js\";\nimport { extractMinAndMax } from \"../../Maths/math.functions.js\";\nimport { Vector3 } from \"../../Maths/math.vector.js\";\nimport \"../../Shaders/gpuTransform.vertex.js\";\nimport \"../../Shaders/gpuTransform.fragment.js\";\n/** @internal */\nexport class TransformFeedbackBoundingHelper {\n /**\n * Creates a new TransformFeedbackBoundingHelper\n * @param engine defines the engine to use\n */\n constructor(engine) {\n this._buffers = {};\n this._effects = {};\n this._meshListCounter = 0;\n this._engine = engine;\n }\n /** @internal */\n processAsync(meshes) {\n if (!Array.isArray(meshes)) {\n meshes = [meshes];\n }\n this._meshListCounter = 0;\n this._processMeshList(meshes);\n return Promise.resolve();\n }\n _processMeshList(meshes) {\n const parallelShaderCompile = this._engine.getCaps().parallelShaderCompile;\n this._engine.getCaps().parallelShaderCompile = undefined;\n for (let i = 0; i < meshes.length; ++i) {\n const mesh = meshes[i];\n const vertexCount = mesh.getTotalVertices();\n if (vertexCount === 0 || !mesh.getVertexBuffer || !mesh.getVertexBuffer(VertexBuffer.PositionKind)) {\n continue;\n }\n // Get correct effect\n let computeEffect;\n let numInfluencers = 0;\n const defines = [];\n let uniforms = [];\n const attribs = [VertexBuffer.PositionKind];\n const samplers = [];\n // Bones\n if (mesh && mesh.useBones && mesh.computeBonesUsingShaders && mesh.skeleton) {\n attribs.push(VertexBuffer.MatricesIndicesKind);\n attribs.push(VertexBuffer.MatricesWeightsKind);\n if (mesh.numBoneInfluencers > 4) {\n attribs.push(VertexBuffer.MatricesIndicesExtraKind);\n attribs.push(VertexBuffer.MatricesWeightsExtraKind);\n }\n const skeleton = mesh.skeleton;\n defines.push(\"#define NUM_BONE_INFLUENCERS \" + mesh.numBoneInfluencers);\n if (skeleton.isUsingTextureForMatrices) {\n defines.push(\"#define BONETEXTURE\");\n if (uniforms.indexOf(\"boneTextureWidth\") === -1) {\n uniforms.push(\"boneTextureWidth\");\n }\n if (samplers.indexOf(\"boneSampler\") === -1) {\n samplers.push(\"boneSampler\");\n }\n }\n else {\n defines.push(\"#define BonesPerMesh \" + (skeleton.bones.length + 1));\n if (uniforms.indexOf(\"mBones\") === -1) {\n uniforms.push(\"mBones\");\n }\n }\n }\n else {\n defines.push(\"#define NUM_BONE_INFLUENCERS 0\");\n }\n // Morph\n const manager = mesh ? mesh.morphTargetManager : null;\n if (manager) {\n numInfluencers = manager.numMaxInfluencers || manager.numInfluencers;\n if (numInfluencers > 0) {\n defines.push(\"#define MORPHTARGETS\");\n }\n if (manager.isUsingTextureForTargets) {\n defines.push(\"#define MORPHTARGETS_TEXTURE\");\n if (uniforms.indexOf(\"morphTargetTextureIndices\") === -1) {\n uniforms.push(\"morphTargetTextureIndices\");\n }\n if (samplers.indexOf(\"morphTargets\") === -1) {\n samplers.push(\"morphTargets\");\n }\n }\n defines.push(\"#define NUM_MORPH_INFLUENCERS \" + numInfluencers);\n for (let index = 0; index < numInfluencers; index++) {\n attribs.push(VertexBuffer.PositionKind + index);\n }\n if (numInfluencers > 0) {\n uniforms = uniforms.slice();\n uniforms.push(\"morphTargetInfluences\");\n uniforms.push(\"morphTargetCount\");\n uniforms.push(\"morphTargetTextureInfo\");\n uniforms.push(\"morphTargetTextureIndices\");\n }\n }\n // Baked Vertex Animation\n const bvaManager = mesh.bakedVertexAnimationManager;\n if (bvaManager && bvaManager.isEnabled) {\n defines.push(\"#define BAKED_VERTEX_ANIMATION_TEXTURE\");\n if (uniforms.indexOf(\"bakedVertexAnimationSettings\") === -1) {\n uniforms.push(\"bakedVertexAnimationSettings\");\n }\n if (uniforms.indexOf(\"bakedVertexAnimationTextureSizeInverted\") === -1) {\n uniforms.push(\"bakedVertexAnimationTextureSizeInverted\");\n }\n if (uniforms.indexOf(\"bakedVertexAnimationTime\") === -1) {\n uniforms.push(\"bakedVertexAnimationTime\");\n }\n if (samplers.indexOf(\"bakedVertexAnimationTexture\") === -1) {\n samplers.push(\"bakedVertexAnimationTexture\");\n }\n PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);\n }\n const join = defines.join(\"\\n\");\n if (!this._effects[join]) {\n const computeEffectOptions = {\n attributes: attribs,\n uniformsNames: uniforms,\n uniformBuffersNames: [],\n samplers: samplers,\n defines: join,\n fallbacks: null,\n onCompiled: null,\n onError: null,\n indexParameters: { maxSimultaneousMorphTargets: numInfluencers },\n maxSimultaneousLights: 0,\n transformFeedbackVaryings: [\"outPosition\"],\n };\n computeEffect = this._engine.createEffect(\"gpuTransform\", computeEffectOptions, this._engine);\n this._effects[join] = computeEffect;\n }\n else {\n computeEffect = this._effects[join];\n }\n this._compute(mesh, computeEffect);\n }\n this._engine.getCaps().parallelShaderCompile = parallelShaderCompile;\n }\n _compute(mesh, effect) {\n const engine = this._engine;\n // Buffer\n let targetBuffer;\n const vertexCount = mesh.getTotalVertices();\n if (!this._buffers[mesh.uniqueId]) {\n const targetData = new Float32Array(vertexCount * 3);\n targetBuffer = new Buffer(mesh.getEngine(), targetData, true, 3);\n this._buffers[mesh.uniqueId] = targetBuffer;\n }\n else {\n targetBuffer = this._buffers[mesh.uniqueId];\n }\n // Bind\n effect.getEngine().enableEffect(effect);\n mesh._bindDirect(effect, null, true);\n // Bones\n BindBonesParameters(mesh, effect);\n // Morph targets\n const manager = mesh.morphTargetManager;\n if (manager && manager.numInfluencers > 0) {\n BindMorphTargetParameters(mesh, effect);\n }\n // BVA\n const bvaManager = mesh.bakedVertexAnimationManager;\n if (bvaManager && bvaManager.isEnabled) {\n mesh.bakedVertexAnimationManager?.bind(effect, false);\n }\n // Update\n const arrayBuffer = targetBuffer.getData();\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\n engine.setRasterizerState(false);\n engine.beginTransformFeedback(true);\n engine.drawArraysType(2, 0, vertexCount);\n engine.endTransformFeedback();\n engine.setRasterizerState(true);\n engine.readTransformFeedbackBuffer(arrayBuffer);\n engine.bindTransformFeedbackBuffer(null);\n // Update mesh\n if (this._meshListCounter === 0) {\n mesh._refreshBoundingInfo(arrayBuffer, null);\n }\n else {\n const bb = mesh.getBoundingInfo().boundingBox;\n const extend = extractMinAndMax(arrayBuffer, 0, vertexCount);\n TransformFeedbackBoundingHelper._Min.copyFrom(bb.minimum).minimizeInPlace(extend.minimum);\n TransformFeedbackBoundingHelper._Max.copyFrom(bb.maximum).maximizeInPlace(extend.maximum);\n mesh._refreshBoundingInfoDirect({ minimum: TransformFeedbackBoundingHelper._Min, maximum: TransformFeedbackBoundingHelper._Max });\n }\n }\n /** @internal */\n registerMeshListAsync(meshes) {\n if (!Array.isArray(meshes)) {\n meshes = [meshes];\n }\n this._meshList = meshes;\n this._meshListCounter = 0;\n return Promise.resolve();\n }\n /** @internal */\n processMeshList() {\n if (this._meshList.length === 0) {\n return;\n }\n this._processMeshList(this._meshList);\n this._meshListCounter++;\n }\n /** @internal */\n fetchResultsForMeshListAsync() {\n this._meshListCounter = 0;\n return Promise.resolve();\n }\n /** @internal */\n dispose() {\n for (const key in this._buffers) {\n this._buffers[key].dispose();\n }\n this._buffers = {};\n this._effects = {};\n this._engine = null;\n }\n}\nTransformFeedbackBoundingHelper._Min = new Vector3();\nTransformFeedbackBoundingHelper._Max = new Vector3();\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}