truc 935 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Vertex shader
  2. struct CameraUniform {
  3. view_proj: mat4x4<f32>
  4. }
  5. @group(0) @binding(0)
  6. var<uniform> camera: CameraUniform;
  7. struct VertexInput {
  8. @location(0) position: vec3<f32>,
  9. @location(1) color: vec3<f32>,
  10. @location(2) uv: vec2<f32>,
  11. };
  12. struct VertexOutput {
  13. @builtin(position) clip_position: vec4<f32>,
  14. @location(0) color: vec3<f32>,
  15. };
  16. @group(0) @binding(0)
  17. var t_diffuse: texture_2d<f32>;
  18. @group(0) @binding(1)
  19. var s_diffuse: sampler;
  20. @vertex
  21. fn vs_main(
  22. model: VertexInput,
  23. ) -> VertexOutput {
  24. let height_added = texturesample(t_diffuse,s_diffuse,model.uv);
  25. var out: VertexOutput;
  26. out.color = model.color;
  27. out.clip_position = camera.view_proj * vec4<f32>(model.position.x,model.position.y, model.position.z + height_added, 1.0);
  28. return out;
  29. }
  30. // Fragment shader
  31. @fragment
  32. fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
  33. return vec4<f32>(1.0,0.0,0.0, 1.0);
  34. }