Path: blob/main/src/vs/editor/browser/gpu/rectangleRenderer.wgsl.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45export const enum RectangleRendererBindingId {6Shapes,7LayoutInfoUniform,8ScrollOffset,9}1011export const rectangleRendererWgsl = /*wgsl*/ `1213struct Vertex {14@location(0) position: vec2f,15};1617struct LayoutInfo {18canvasDims: vec2f,19viewportOffset: vec2f,20viewportDims: vec2f,21}2223struct ScrollOffset {24offset: vec2f,25}2627struct Shape {28position: vec2f,29size: vec2f,30color: vec4f,31};3233struct VSOutput {34@builtin(position) position: vec4f,35@location(1) color: vec4f,36};3738// Uniforms39@group(0) @binding(${RectangleRendererBindingId.LayoutInfoUniform}) var<uniform> layoutInfo: LayoutInfo;4041// Storage buffers42@group(0) @binding(${RectangleRendererBindingId.Shapes}) var<storage, read> shapes: array<Shape>;43@group(0) @binding(${RectangleRendererBindingId.ScrollOffset}) var<uniform> scrollOffset: ScrollOffset;4445@vertex fn vs(46vert: Vertex,47@builtin(instance_index) instanceIndex: u32,48@builtin(vertex_index) vertexIndex : u3249) -> VSOutput {50let shape = shapes[instanceIndex];5152var vsOut: VSOutput;53vsOut.position = vec4f(54(55// Top left corner56vec2f(-1, 1) +57// Convert pixel position to clipspace58vec2f( 2, -2) / layoutInfo.canvasDims *59// Shape position and size60(layoutInfo.viewportOffset - scrollOffset.offset + shape.position + vert.position * shape.size)61),620.0,631.064);65vsOut.color = shape.color;66return vsOut;67}6869@fragment fn fs(vsOut: VSOutput) -> @location(0) vec4f {70return vsOut.color;71}72`;737475