truc 908 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. };
  11. struct VertexOutput {
  12. @builtin(position) clip_position: vec4<f32>,
  13. @location(0) color: vec3<f32>,
  14. };
  15. @group(0) @binding(0)
  16. var t_diffuse: texture_2d<f32>;
  17. @group(0) @binding(1)
  18. var s_diffuse: sampler;
  19. @vertex
  20. fn vs_main(
  21. model: VertexInput,
  22. ) -> VertexOutput {
  23. let height_added = texturesample(t_diffuse,s_diffuse,in.tex_coords);
  24. var out: VertexOutput;
  25. out.color = model.color;
  26. out.clip_position = camera.view_proj * vec4<f32>(model.position.x,model.position.y, model.position.z + height_added, 1.0);
  27. return out;
  28. }
  29. // Fragment shader
  30. @fragment
  31. fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
  32. return vec4<f32>(1.0,0.0,0.0, 1.0);
  33. }