SpriteImage.bslinc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. Parameters =
  2. {
  3. mat4x4 worldTransform;
  4. float invViewportWidth;
  5. float invViewportHeight;
  6. Sampler2D mainTexSamp : alias("mainTexture");
  7. Texture2D mainTexture;
  8. color tint;
  9. };
  10. Technique : base("SpriteImage") =
  11. {
  12. Language = "HLSL11";
  13. Pass =
  14. {
  15. DepthRead = false;
  16. DepthWrite = false;
  17. Vertex =
  18. {
  19. float invViewportWidth;
  20. float invViewportHeight;
  21. float4x4 worldTransform;
  22. void main(
  23. in float3 inPos : POSITION,
  24. in float2 uv : TEXCOORD0,
  25. out float4 oPosition : SV_Position,
  26. out float2 oUv : TEXCOORD0)
  27. {
  28. float4 tfrmdPos = mul(worldTransform, float4(inPos.xy, 0, 1));
  29. float tfrmdX = -1.0f + (tfrmdPos.x * invViewportWidth);
  30. float tfrmdY = 1.0f - (tfrmdPos.y * invViewportHeight);
  31. oPosition = float4(tfrmdX, tfrmdY, 0, 1);
  32. oUv = uv;
  33. }
  34. };
  35. Fragment =
  36. {
  37. SamplerState mainTexSamp : register(s0);
  38. Texture2D mainTexture : register(t0);
  39. float4 tint;
  40. float4 main(in float4 inPos : SV_Position, float2 uv : TEXCOORD0) : SV_Target
  41. {
  42. float4 color = mainTexture.Sample(mainTexSamp, uv);
  43. return color * tint;
  44. }
  45. };
  46. };
  47. };
  48. Technique : base("SpriteImage") =
  49. {
  50. Language = "HLSL9";
  51. Pass =
  52. {
  53. DepthRead = false;
  54. DepthWrite = false;
  55. Vertex =
  56. {
  57. float invViewportWidth;
  58. float invViewportHeight;
  59. float4x4 worldTransform;
  60. void main(
  61. in float3 inPos : POSITION,
  62. in float2 uv : TEXCOORD0,
  63. out float4 oPosition : POSITION,
  64. out float2 oUv : TEXCOORD0)
  65. {
  66. float4 tfrmdPos = mul(worldTransform, float4(inPos.xy, 0, 1));
  67. float tfrmdX = -1.0f + ((tfrmdPos.x - 0.5f) * invViewportWidth);
  68. float tfrmdY = 1.0f - ((tfrmdPos.y - 0.5f) * invViewportHeight);
  69. oPosition = float4(tfrmdX, tfrmdY, 0, 1);
  70. oUv = uv;
  71. }
  72. };
  73. Fragment =
  74. {
  75. sampler2D mainTexture;
  76. float4 tint;
  77. float4 main(float2 uv : TEXCOORD0) : COLOR0
  78. {
  79. float4 color = tex2D(mainTexture, uv);
  80. return color * tint;
  81. }
  82. };
  83. };
  84. };
  85. Technique : base("SpriteImage") =
  86. {
  87. Language = "GLSL";
  88. Pass =
  89. {
  90. DepthRead = false;
  91. DepthWrite = false;
  92. Vertex =
  93. {
  94. uniform float invViewportWidth;
  95. uniform float invViewportHeight;
  96. uniform mat4 worldTransform;
  97. in vec3 bs_position;
  98. in vec2 bs_texcoord0;
  99. out vec2 texcoord0;
  100. out gl_PerVertex
  101. {
  102. vec4 gl_Position;
  103. };
  104. void main()
  105. {
  106. vec4 tfrmdPos = worldTransform * vec4(bs_position.xy, 0, 1);
  107. float tfrmdX = -1.0f + (tfrmdPos.x * invViewportWidth);
  108. float tfrmdY = 1.0f - (tfrmdPos.y * invViewportHeight);
  109. gl_Position = vec4(tfrmdX, tfrmdY, 0, 1);
  110. texcoord0 = bs_texcoord0;
  111. }
  112. };
  113. Fragment =
  114. {
  115. uniform sampler2D mainTexture;
  116. uniform vec4 tint;
  117. in vec2 texcoord0;
  118. out vec4 fragColor;
  119. void main()
  120. {
  121. vec4 color = texture2D(mainTexture, texcoord0.st);
  122. fragColor = color * tint;
  123. }
  124. };
  125. };
  126. };