draw_image.kong 974 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 draw_image_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 draw_image_frag(input: vert_out): float4 {
  32. var texcolor: float4 = sample(tex, sampler_linear, input.tex) * input.col;
  33. texcolor.rgb = texcolor.rgb * texcolor.a * input.col.a;
  34. return texcolor;
  35. }
  36. #[pipe]
  37. struct pipe {
  38. vertex = draw_image_vert;
  39. fragment = draw_image_frag;
  40. }