2
0

SpriteImage.bslinc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. Parameters =
  2. {
  3. mat4x4 gWorldTransform;
  4. float gInvViewportWidth;
  5. float gInvViewportHeight;
  6. float gViewportYFlip;
  7. color gTint;
  8. Sampler2D gMainTexSamp : alias("gMainTexture");
  9. Texture2D gMainTexture;
  10. };
  11. Blocks =
  12. {
  13. Block GUIParams : auto("GUIParams");
  14. };
  15. Technique : base("SpriteImage") =
  16. {
  17. Pass =
  18. {
  19. DepthRead = false;
  20. DepthWrite = false;
  21. Common =
  22. {
  23. cbuffer GUIParams
  24. {
  25. float4x4 gWorldTransform;
  26. float gInvViewportWidth;
  27. float gInvViewportHeight;
  28. float gViewportYFlip;
  29. float4 gTint;
  30. }
  31. };
  32. Vertex =
  33. {
  34. void main(
  35. in float3 inPos : POSITION,
  36. in float2 uv : TEXCOORD0,
  37. out float4 oPosition : SV_Position,
  38. out float2 oUv : TEXCOORD0)
  39. {
  40. float4 tfrmdPos = mul(gWorldTransform, float4(inPos.xy, 0, 1));
  41. float tfrmdX = -1.0f + (tfrmdPos.x * gInvViewportWidth);
  42. float tfrmdY = (1.0f - (tfrmdPos.y * gInvViewportHeight)) * gViewportYFlip;
  43. oPosition = float4(tfrmdX, tfrmdY, 0, 1);
  44. oUv = uv;
  45. }
  46. };
  47. Fragment =
  48. {
  49. SamplerState gMainTexSamp : register(s0);
  50. Texture2D gMainTexture : register(t0);
  51. float4 main(in float4 inPos : SV_Position, float2 uv : TEXCOORD0) : SV_Target
  52. {
  53. float4 color = gMainTexture.Sample(gMainTexSamp, uv);
  54. return color * gTint;
  55. }
  56. };
  57. };
  58. };