# core/shaders/stage.shader.wgsl

> 26 lines of code and 0 definitions.

Tree: Bane's Lab Social Share
Language: text
Layer: product
Canonical: https://banes-lab.com/anatomy/social-share#file-social-share-core-shaders-stage-shader-wgsl
Source text: https://banes-lab.com/source/social-share/core/shaders/stage.shader.wgsl.txt

Listed in [core/shaders](https://banes-lab.com/api/source/social-share/core/shaders.md).

## Contained in

- [core/shaders](https://banes-lab.com/anatomy/social-share/folder-social-share-core-shaders.md)

## Source

```text
struct Frame {
    resolution: vec2f,
    time: f32,
    progress: f32,
    values: array<vec4f, 4>,
}

@group(0) @binding(0) var<uniform> frame: Frame;

struct Varying {
    @builtin(position) position: vec4f,
    @location(0) uv: vec2f,
}

fn value(index: u32) -> f32 {
    return frame.values[index / 4u][index % 4u];
}

@vertex
fn vertexMain(@builtin(vertex_index) index: u32) -> Varying {
    let corner = vec2f(f32((index << 1u) & 2u), f32(index & 2u));
    var output: Varying;
    output.position = vec4f(corner * 2.0 - 1.0, 0.0, 1.0);
    output.uv = vec2f(corner.x, 1.0 - corner.y);
    return output;
}

@fragment
fn fragmentMain(input: Varying) -> @location(0) vec4f {
    return shade(input.uv, frame);
}
```
