1 line
7.2 KiB
Plaintext
1 line
7.2 KiB
Plaintext
{"version":3,"file":"GpuGraphicsAdaptor.mjs","sources":["../../../../src/scene/graphics/gpu/GpuGraphicsAdaptor.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { getMaxTexturesPerBatch } from '../../../rendering/batcher/gl/utils/maxRecommendedTextures';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\n\nimport type { Batch } from '../../../rendering/batcher/shared/Batcher';\nimport type { GpuEncoderSystem } from '../../../rendering/renderers/gpu/GpuEncoderSystem';\nimport type { WebGPURenderer } from '../../../rendering/renderers/gpu/WebGPURenderer';\nimport type { Graphics } from '../shared/Graphics';\nimport type { GraphicsAdaptor, GraphicsPipe } from '../shared/GraphicsPipe';\n\n/**\n * A GraphicsAdaptor that uses the GPU to render graphics.\n * @memberof rendering\n * @ignore\n */\nexport class GpuGraphicsAdaptor implements GraphicsAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor,\n ],\n name: 'graphics',\n } as const;\n\n public shader: Shader;\n\n public init()\n {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3<f32>' },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4<f32>' },\n uRound: { value: 0, type: 'f32' },\n });\n\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'graphics',\n bits: [\n colorBit,\n generateTextureBatchBit(getMaxTexturesPerBatch()),\n\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms,\n },\n });\n }\n\n public execute(graphicsPipe: GraphicsPipe, renderable: Graphics): void\n {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer as WebGPURenderer;\n const contextSystem = renderer.graphicsContext;\n\n const {\n batcher, instructions\n } = contextSystem.getContextRenderData(context);\n\n // WebGPU specific...\n\n // TODO perf test this a bit...\n const encoder = renderer.encoder as GpuEncoderSystem;\n\n encoder.setPipelineFromGeometryProgramAndState(\n batcher.geometry,\n shader.gpuProgram,\n graphicsPipe.state\n );\n\n encoder.setGeometry(batcher.geometry, shader.gpuProgram);\n\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n\n const localBindGroup = (renderer as WebGPURenderer)\n .renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n\n const batches = instructions.instructions as Batch[];\n\n for (let i = 0; i < instructions.instructionSize; i++)\n {\n const batch = batches[i];\n\n shader.groups[1] = batch.bindGroup;\n\n if (!batch.gpuBindGroup)\n {\n const textureBatch = batch.textures;\n\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup, shader.gpuProgram, 1\n );\n }\n\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n\n public destroy(): void\n {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n"],"names":[],"mappings":"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"} |