Index]; var vsOut: VSOutput; vsOut.position = vec4f( ( // Top left corner vec2f(-1, 1) + // Convert pixel position to clipspace vec2f( 2, -2) / layoutInfo.canvasDims * // Shape position and size (layoutInfo.viewportOffset - scrollOffset.offset + shape.position + vert.position * shape.size) ), 0.0, 1.0 ); vsOut.color = shape.color; return vsOut; } @fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f { return vsOut.color; }