playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
42 lines (41 loc) • 1.54 kB
JavaScript
import indirectCoreCS from "../common/comp/indirect-core.js";
import dispatchCoreCS from "../common/comp/dispatch-core.js";
import sortIndirectArgsCS from "../common/comp/sort-indirect-args.js";
const computeGsplatProjectorWriteIndirectArgsSource = `
${indirectCoreCS}
${dispatchCoreCS}
${sortIndirectArgsCS}
var<storage, read> renderCounter: array<u32>;
var<storage, read_write> indirectDrawArgs: array<DrawIndexedIndirectArgs>;
var<storage, read_write> numSplatsBuf: array<u32>;
var<storage, read_write> indirectDispatchArgs: array<u32>;
var<storage, read_write> sortElementCountBuf: array<u32>;
struct WriteArgsUniforms {
drawSlot: u32,
indexCount: u32,
sortSlotBase: u32,
pad0: u32,
sortIndirectInfo: vec4<u32>
};
var<uniform> uniforms: WriteArgsUniforms;
fn main() {
let count = renderCounter[0];
let instanceCount = (count + {INSTANCE_SIZE}u - 1u) / {INSTANCE_SIZE}u;
indirectDrawArgs[uniforms.drawSlot] = DrawIndexedIndirectArgs(
uniforms.indexCount,
instanceCount,
0u,
0,
0u
);
numSplatsBuf[0] = count;
sortElementCountBuf[0] = count;
writeSortIndirectArgs(uniforms.sortSlotBase, count, uniforms.sortIndirectInfo);
}
`;
var compute_gsplat_projector_write_indirect_args_default = computeGsplatProjectorWriteIndirectArgsSource;
export {
computeGsplatProjectorWriteIndirectArgsSource,
compute_gsplat_projector_write_indirect_args_default as default
};