
# Objective - Update wgpu to 0.13 - ~~Wait, is wgpu 0.13 released? No, but I had most of the changes already ready since playing with webgpu~~ well it has been released now - Also update parking_lot to 0.12 and naga to 0.9 ## Solution - Update syntax for wgsl shaders https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#wgsl-syntax - Add a few options, remove some references: https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#other-breaking-changes - fragment inputs should now exactly match vertex outputs for locations, so I added exports for those to be able to reuse them https://github.com/gfx-rs/wgpu/pull/2704
37 lines
895 B
WebGPU Shading Language
37 lines
895 B
WebGPU Shading Language
struct View {
|
|
view_proj: mat4x4<f32>,
|
|
world_position: vec3<f32>,
|
|
};
|
|
@group(0) @binding(0)
|
|
var<uniform> view: View;
|
|
|
|
struct VertexOutput {
|
|
@location(0) uv: vec2<f32>,
|
|
@location(1) color: vec4<f32>,
|
|
@builtin(position) position: vec4<f32>,
|
|
};
|
|
|
|
@vertex
|
|
fn vertex(
|
|
@location(0) vertex_position: vec3<f32>,
|
|
@location(1) vertex_uv: vec2<f32>,
|
|
@location(2) vertex_color: vec4<f32>,
|
|
) -> VertexOutput {
|
|
var out: VertexOutput;
|
|
out.uv = vertex_uv;
|
|
out.position = view.view_proj * vec4<f32>(vertex_position, 1.0);
|
|
out.color = vertex_color;
|
|
return out;
|
|
}
|
|
|
|
@group(1) @binding(0)
|
|
var sprite_texture: texture_2d<f32>;
|
|
@group(1) @binding(1)
|
|
var sprite_sampler: sampler;
|
|
|
|
@fragment
|
|
fn fragment(in: VertexOutput) -> @location(0) vec4<f32> {
|
|
var color = textureSample(sprite_texture, sprite_sampler, in.uv);
|
|
color = in.color * color;
|
|
return color;
|
|
} |