layer_copy.kong 892 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #[set(everything)]
  2. const constants: {
  3. pos: float4; // xywh
  4. tex: float4; // xywh
  5. col: float4;
  6. };
  7. #[set(everything)]
  8. const sampler_linear: sampler;
  9. #[set(everything)]
  10. const tex: tex2d;
  11. struct vert_in {
  12. pos: float2;
  13. }
  14. struct vert_out {
  15. pos: float4;
  16. tex: float2;
  17. col: float4;
  18. }
  19. fun layer_copy_vert(input: vert_in): vert_out {
  20. var output: vert_out;
  21. var cpos: float4 = constants.pos;
  22. var ctex: float4 = constants.tex;
  23. output.pos = float4(input.pos, 0.0, 1.0);
  24. output.pos.xy = output.pos.xy * cpos.zw + cpos.xy;
  25. output.pos.xy = output.pos.xy * 2.0 - 1.0;
  26. output.pos.y = -output.pos.y;
  27. output.tex = input.pos * ctex.zw + ctex.xy;
  28. output.col = constants.col;
  29. return output;
  30. }
  31. fun layer_copy_frag(input: vert_out): float4 {
  32. return sample_lod(tex, sampler_linear, input.tex, 0.0) * input.col;
  33. }
  34. #[pipe]
  35. struct pipe {
  36. vertex = layer_copy_vert;
  37. fragment = layer_copy_frag;
  38. }