Skip to content

Documentation / @ripl/webgpu / VERTEX_SHADER

Variable: VERTEX_SHADER

const VERTEX_SHADER: "\nstruct Uniforms {\n viewProjectionMatrix: mat4x4f,\n lightDirection: vec3f,\n ambient: f32,\n};\n\nstruct ModelUniforms {\n modelMatrix: mat4x4f,\n normalMatrix: mat4x4f,\n};\n\nstruct VertexInput {\n @location(0) position: vec3f,\n @location(1) normal: vec3f,\n @location(2) color: vec4f,\n};\n\nstruct VertexOutput {\n @builtin(position) clipPosition: vec4f,\n @location(0) worldNormal: vec3f,\n @location(1) color: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\n@group(1) @binding(0) var<uniform> model: ModelUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n\n let worldPosition = model.modelMatrix * vec4f(input.position, 1.0);\n output.clipPosition = uniforms.viewProjectionMatrix * worldPosition;\n output.worldNormal = normalize((model.normalMatrix * vec4f(input.normal, 0.0)).xyz);\n output.color = input.color;\n\n return output;\n}\n"

Defined in: webgpu/src/shaders.ts:2

WGSL vertex shader for 3D mesh rendering with per-vertex color and normal.