3e49b6015bfa373979550e84ca5b4e037783933dfe4c958949835bead2ab5f06.json 11 KB

1
  1. {"ast":null,"code":"import { VertexBuffer } from \"../Meshes/buffer.js\";\nconst vertexBufferKindForNonFloatProcessing = {\n [VertexBuffer.PositionKind]: true,\n [VertexBuffer.NormalKind]: true,\n [VertexBuffer.TangentKind]: true,\n [VertexBuffer.UVKind]: true,\n [VertexBuffer.UV2Kind]: true,\n [VertexBuffer.UV3Kind]: true,\n [VertexBuffer.UV4Kind]: true,\n [VertexBuffer.UV5Kind]: true,\n [VertexBuffer.UV6Kind]: true,\n [VertexBuffer.ColorKind]: true,\n [VertexBuffer.ColorInstanceKind]: true,\n [VertexBuffer.MatricesIndicesKind]: true,\n [VertexBuffer.MatricesWeightsKind]: true,\n [VertexBuffer.MatricesIndicesExtraKind]: true,\n [VertexBuffer.MatricesWeightsExtraKind]: true\n};\n/**\n * Indicates if the type is a signed or unsigned type\n * @param type Type to check\n * @returns True if it is a signed type\n */\nfunction isSignedType(type) {\n switch (type) {\n case VertexBuffer.BYTE:\n case VertexBuffer.SHORT:\n case VertexBuffer.INT:\n case VertexBuffer.FLOAT:\n return true;\n case VertexBuffer.UNSIGNED_BYTE:\n case VertexBuffer.UNSIGNED_SHORT:\n case VertexBuffer.UNSIGNED_INT:\n return false;\n default:\n throw new Error(`Invalid type '${type}'`);\n }\n}\n/**\n * Checks whether some vertex buffers that should be of type float are of a different type (int, byte...).\n * If so, trigger a shader recompilation to give the shader processor the opportunity to update the code accordingly.\n * @param vertexBuffers List of vertex buffers to check\n * @param effect The effect (shaders) that should be recompiled if needed\n */\nexport function checkNonFloatVertexBuffers(vertexBuffers, effect) {\n const engine = effect.getEngine();\n const pipelineContext = effect._pipelineContext;\n if (!(pipelineContext !== null && pipelineContext !== void 0 && pipelineContext.vertexBufferKindToType)) {\n return;\n }\n let shaderProcessingContext = null;\n for (const kind in vertexBuffers) {\n const currentVertexBuffer = vertexBuffers[kind];\n if (!currentVertexBuffer || !vertexBufferKindForNonFloatProcessing[kind]) {\n continue;\n }\n const currentVertexBufferType = currentVertexBuffer.normalized ? VertexBuffer.FLOAT : currentVertexBuffer.type;\n const vertexBufferType = pipelineContext.vertexBufferKindToType[kind];\n if (currentVertexBufferType !== VertexBuffer.FLOAT && vertexBufferType === undefined || vertexBufferType !== undefined && vertexBufferType !== currentVertexBufferType) {\n if (!shaderProcessingContext) {\n shaderProcessingContext = engine._getShaderProcessingContext(effect.shaderLanguage, false);\n }\n pipelineContext.vertexBufferKindToType[kind] = currentVertexBufferType;\n if (currentVertexBufferType !== VertexBuffer.FLOAT) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] = VertexBuffer.DeduceStride(kind);\n if (isSignedType(currentVertexBufferType)) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] *= -1;\n }\n }\n }\n }\n if (shaderProcessingContext) {\n // We temporarily disable parallel compilation of shaders because we want new shaders to be compiled after the _processShaderCode call, so that they are in effect for the rest of the frame.\n // There is no additional call to async so the _processShaderCodeAsync will execute synchronously.\n const parallelShaderCompile = engine._caps.parallelShaderCompile;\n engine._caps.parallelShaderCompile = undefined;\n effect._processShaderCodeAsync(null, engine._features._checkNonFloatVertexBuffersDontRecreatePipelineContext, shaderProcessingContext);\n engine._caps.parallelShaderCompile = parallelShaderCompile;\n }\n}","map":{"version":3,"names":["VertexBuffer","vertexBufferKindForNonFloatProcessing","PositionKind","NormalKind","TangentKind","UVKind","UV2Kind","UV3Kind","UV4Kind","UV5Kind","UV6Kind","ColorKind","ColorInstanceKind","MatricesIndicesKind","MatricesWeightsKind","MatricesIndicesExtraKind","MatricesWeightsExtraKind","isSignedType","type","BYTE","SHORT","INT","FLOAT","UNSIGNED_BYTE","UNSIGNED_SHORT","UNSIGNED_INT","Error","checkNonFloatVertexBuffers","vertexBuffers","effect","engine","getEngine","pipelineContext","_pipelineContext","vertexBufferKindToType","shaderProcessingContext","kind","currentVertexBuffer","currentVertexBufferType","normalized","vertexBufferType","undefined","_getShaderProcessingContext","shaderLanguage","vertexBufferKindToNumberOfComponents","DeduceStride","parallelShaderCompile","_caps","_processShaderCodeAsync","_features","_checkNonFloatVertexBuffersDontRecreatePipelineContext"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Buffers/buffer.nonFloatVertexBuffers.js"],"sourcesContent":["import { VertexBuffer } from \"../Meshes/buffer.js\";\nconst vertexBufferKindForNonFloatProcessing = {\n [VertexBuffer.PositionKind]: true,\n [VertexBuffer.NormalKind]: true,\n [VertexBuffer.TangentKind]: true,\n [VertexBuffer.UVKind]: true,\n [VertexBuffer.UV2Kind]: true,\n [VertexBuffer.UV3Kind]: true,\n [VertexBuffer.UV4Kind]: true,\n [VertexBuffer.UV5Kind]: true,\n [VertexBuffer.UV6Kind]: true,\n [VertexBuffer.ColorKind]: true,\n [VertexBuffer.ColorInstanceKind]: true,\n [VertexBuffer.MatricesIndicesKind]: true,\n [VertexBuffer.MatricesWeightsKind]: true,\n [VertexBuffer.MatricesIndicesExtraKind]: true,\n [VertexBuffer.MatricesWeightsExtraKind]: true,\n};\n/**\n * Indicates if the type is a signed or unsigned type\n * @param type Type to check\n * @returns True if it is a signed type\n */\nfunction isSignedType(type) {\n switch (type) {\n case VertexBuffer.BYTE:\n case VertexBuffer.SHORT:\n case VertexBuffer.INT:\n case VertexBuffer.FLOAT:\n return true;\n case VertexBuffer.UNSIGNED_BYTE:\n case VertexBuffer.UNSIGNED_SHORT:\n case VertexBuffer.UNSIGNED_INT:\n return false;\n default:\n throw new Error(`Invalid type '${type}'`);\n }\n}\n/**\n * Checks whether some vertex buffers that should be of type float are of a different type (int, byte...).\n * If so, trigger a shader recompilation to give the shader processor the opportunity to update the code accordingly.\n * @param vertexBuffers List of vertex buffers to check\n * @param effect The effect (shaders) that should be recompiled if needed\n */\nexport function checkNonFloatVertexBuffers(vertexBuffers, effect) {\n const engine = effect.getEngine();\n const pipelineContext = effect._pipelineContext;\n if (!pipelineContext?.vertexBufferKindToType) {\n return;\n }\n let shaderProcessingContext = null;\n for (const kind in vertexBuffers) {\n const currentVertexBuffer = vertexBuffers[kind];\n if (!currentVertexBuffer || !vertexBufferKindForNonFloatProcessing[kind]) {\n continue;\n }\n const currentVertexBufferType = currentVertexBuffer.normalized ? VertexBuffer.FLOAT : currentVertexBuffer.type;\n const vertexBufferType = pipelineContext.vertexBufferKindToType[kind];\n if ((currentVertexBufferType !== VertexBuffer.FLOAT && vertexBufferType === undefined) ||\n (vertexBufferType !== undefined && vertexBufferType !== currentVertexBufferType)) {\n if (!shaderProcessingContext) {\n shaderProcessingContext = engine._getShaderProcessingContext(effect.shaderLanguage, false);\n }\n pipelineContext.vertexBufferKindToType[kind] = currentVertexBufferType;\n if (currentVertexBufferType !== VertexBuffer.FLOAT) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] = VertexBuffer.DeduceStride(kind);\n if (isSignedType(currentVertexBufferType)) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] *= -1;\n }\n }\n }\n }\n if (shaderProcessingContext) {\n // We temporarily disable parallel compilation of shaders because we want new shaders to be compiled after the _processShaderCode call, so that they are in effect for the rest of the frame.\n // There is no additional call to async so the _processShaderCodeAsync will execute synchronously.\n const parallelShaderCompile = engine._caps.parallelShaderCompile;\n engine._caps.parallelShaderCompile = undefined;\n effect._processShaderCodeAsync(null, engine._features._checkNonFloatVertexBuffersDontRecreatePipelineContext, shaderProcessingContext);\n engine._caps.parallelShaderCompile = parallelShaderCompile;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}