p5
Version:
[](https://www.npmjs.com/package/p5)
33 lines (27 loc) • 1.08 kB
JavaScript
const baseComputeShader = `
struct ComputeUniforms {
uTotalCount: vec3<i32>,
uPhysicalCount: vec3<i32>,
}
var<uniform> uniforms: ComputeUniforms;
fn main(
globalId: vec3<u32>,
localId: vec3<u32>,
workgroupId: vec3<u32>,
localIndex: u32
) {
let totalIterations = u32(uniforms.uTotalCount.x) * u32(uniforms.uTotalCount.y) * u32(uniforms.uTotalCount.z);
let physicalId = globalId.x + globalId.y * (u32(uniforms.uPhysicalCount.x)) + globalId.z * (u32(uniforms.uPhysicalCount.x) * u32(uniforms.uPhysicalCount.y));
if (physicalId >= totalIterations) {
return;
}
var index = vec3<i32>(0);
index.x = i32(physicalId % u32(uniforms.uTotalCount.x));
let remainingY = physicalId / u32(uniforms.uTotalCount.x);
index.y = i32(remainingY % u32(uniforms.uTotalCount.y));
index.z = i32(remainingY / u32(uniforms.uTotalCount.y));
HOOK_iteration(index);
}
`;
export { baseComputeShader };