playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
37 lines (36 loc) • 1.06 kB
JavaScript
var gsplatTileComposite_default = `
varying vUv0: vec2f;
var<storage, read> rasterizeTileList: array<u32>;
uniform numTilesX: u32;
uniform screenWidth: f32;
uniform screenHeight: f32;
@vertex
fn vertexMain(input: VertexInput) -> VertexOutput {
var output: VertexOutput;
let quadIdx = pcVertexIndex / 6u;
let cornerIdx = pcVertexIndex % 6u;
let tileIdx = rasterizeTileList[quadIdx];
let tileX = tileIdx % uniform.numTilesX;
let tileY = tileIdx / uniform.numTilesX;
let corners = array<vec2f, 6>(
vec2f(0.0, 0.0), vec2f(1.0, 0.0), vec2f(1.0, 1.0),
vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(0.0, 1.0)
);
let corner = corners[cornerIdx];
let x0 = f32(tileX * 16u);
let y0 = f32(tileY * 16u);
let pixelX = x0 + corner.x * 16.0;
let pixelY = y0 + corner.y * 16.0;
output.position = vec4f(
pixelX / uniform.screenWidth * 2.0 - 1.0,
pixelY / uniform.screenHeight * 2.0 - 1.0,
0.5, 1.0
);
output.vUv0 = vec2f(pixelX / uniform.screenWidth,
pixelY / uniform.screenHeight);
return output;
}
`;
export {
gsplatTileComposite_default as default
};