hlsl.getdimensions.dx10.frag 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. SamplerState g_sSamp : register(s0);
  2. uniform Texture1D <float4> g_tTex1df4 : register(t0);
  3. Texture1D <int4> g_tTex1di4;
  4. Texture1D <uint4> g_tTex1du4;
  5. Texture2D <float4> g_tTex2df4;
  6. Texture2D <int4> g_tTex2di4;
  7. Texture2D <uint4> g_tTex2du4;
  8. Texture3D <float4> g_tTex3df4;
  9. Texture3D <int4> g_tTex3di4;
  10. Texture3D <uint4> g_tTex3du4;
  11. TextureCube <float4> g_tTexcdf4;
  12. TextureCube <int4> g_tTexcdi4;
  13. TextureCube <uint4> g_tTexcdu4;
  14. Texture1DArray <float4> g_tTex1df4a;
  15. Texture1DArray <int4> g_tTex1di4a;
  16. Texture1DArray <uint4> g_tTex1du4a;
  17. Texture2DArray <float4> g_tTex2df4a;
  18. Texture2DArray <int4> g_tTex2di4a;
  19. Texture2DArray <uint4> g_tTex2du4a;
  20. TextureCubeArray <float4> g_tTexcdf4a;
  21. TextureCubeArray <int4> g_tTexcdi4a;
  22. TextureCubeArray <uint4> g_tTexcdu4a;
  23. Texture2DMS <float4> g_tTex2dmsf4;
  24. Texture2DMS <int4> g_tTex2dmsi4;
  25. Texture2DMS <uint4> g_tTex2dmsu4;
  26. Texture2DMSArray <float4> g_tTex2dmsf4a;
  27. Texture2DMSArray <int4> g_tTex2dmsi4a;
  28. Texture2DMSArray <uint4> g_tTex2dmsu4a;
  29. struct PS_OUTPUT
  30. {
  31. float4 Color : SV_Target0;
  32. float Depth : SV_Depth;
  33. };
  34. PS_OUTPUT main()
  35. {
  36. PS_OUTPUT psout;
  37. uint MipLevel;
  38. uint WidthU;
  39. uint HeightU;
  40. uint ElementsU;
  41. uint DepthU;
  42. uint NumberOfLevelsU;
  43. uint NumberOfSamplesU;
  44. float WidthF;
  45. float HeightF;
  46. float ElementsF;
  47. float DepthF;
  48. float NumberOfLevelsF;
  49. float NumberOfSamplesF;
  50. // 1D, float tx, uint params
  51. g_tTex1df4 . GetDimensions(WidthU);
  52. g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsU);
  53. // 1D, int, uint params
  54. g_tTex1di4 . GetDimensions(WidthU);
  55. g_tTex1di4 . GetDimensions(6, WidthU, NumberOfLevelsU);
  56. // 1D, uint, uint params
  57. g_tTex1du4 . GetDimensions(WidthU);
  58. g_tTex1du4 . GetDimensions(6, WidthU, NumberOfLevelsU);
  59. // 1DArray, float tx, uint params
  60. g_tTex1df4a . GetDimensions(WidthU, ElementsU);
  61. g_tTex1df4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU);
  62. // 1DArray, int, uint params
  63. g_tTex1di4a . GetDimensions(WidthU, ElementsU);
  64. g_tTex1di4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU);
  65. // 1DArray, uint, uint params
  66. g_tTex1du4a . GetDimensions(WidthU, ElementsU);
  67. g_tTex1du4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU);
  68. // 2D, float tx, uint params
  69. g_tTex2df4 . GetDimensions(WidthU, HeightU);
  70. g_tTex2df4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  71. // 2D, int, uint params
  72. g_tTex2di4 . GetDimensions(WidthU, HeightU);
  73. g_tTex2di4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  74. // 2D, uint, uint params
  75. g_tTex2du4 . GetDimensions(WidthU, HeightU);
  76. g_tTex2du4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  77. // 2Darray, float tx, uint params
  78. g_tTex2df4a . GetDimensions(WidthU, HeightU, ElementsU);
  79. g_tTex2df4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  80. // 2Darray, int, uint params
  81. g_tTex2di4a . GetDimensions(WidthU, HeightU, ElementsU);
  82. g_tTex2di4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  83. // 2Darray, uint, uint params
  84. g_tTex2du4a . GetDimensions(WidthU, HeightU, ElementsU);
  85. g_tTex2du4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  86. // 3D, float tx, uint params
  87. g_tTex3df4 . GetDimensions(WidthU, HeightU, DepthU);
  88. g_tTex3df4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU);
  89. // 3D, int, uint params
  90. g_tTex3di4 . GetDimensions(WidthU, HeightU, DepthU);
  91. g_tTex3di4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU);
  92. // 3D, uint, uint params
  93. g_tTex3du4 . GetDimensions(WidthU, HeightU, DepthU);
  94. g_tTex3du4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU);
  95. // Cube, float tx, uint params
  96. g_tTexcdf4 . GetDimensions(WidthU, HeightU);
  97. g_tTexcdf4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  98. // Cube, int, uint params
  99. g_tTexcdi4 . GetDimensions(WidthU, HeightU);
  100. g_tTexcdi4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  101. // Cube, uint, uint params
  102. g_tTexcdu4 . GetDimensions(WidthU, HeightU);
  103. g_tTexcdu4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU);
  104. // Cubearray, float tx, uint params
  105. g_tTexcdf4a . GetDimensions(WidthU, HeightU, ElementsU);
  106. g_tTexcdf4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  107. // Cubearray, int, uint params
  108. g_tTexcdi4a . GetDimensions(WidthU, HeightU, ElementsU);
  109. g_tTexcdi4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  110. // Cubearray, uint, uint params
  111. g_tTexcdu4a . GetDimensions(WidthU, HeightU, ElementsU);
  112. g_tTexcdu4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU);
  113. // 2DMS, float tx, uint params
  114. g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
  115. // 2DMS, int tx, uint params
  116. g_tTex2dmsi4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
  117. // 2DMS, uint tx, uint params
  118. g_tTex2dmsu4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU);
  119. // 2DMSArray, float tx, uint params
  120. g_tTex2dmsf4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU);
  121. // 2DMSArray, int tx, uint params
  122. g_tTex2dmsi4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU);
  123. // 2DMSArray, uint tx, uint params
  124. g_tTex2dmsu4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU);
  125. // TODO: ***************************************************
  126. // Change this to 1 to enable float overloads when the HLSL
  127. // function overload resolution is fixed.
  128. #define OVERLOAD_FIX 0
  129. // TODO: enable when function overload resolution rules are fixed
  130. #if OVERLOAD_FIX
  131. // 1D, float tx, float params
  132. g_tTex1df4 . GetDimensions(WidthF);
  133. g_tTex1df4 . GetDimensions(6, WidthF, NumberOfLevelsF);
  134. // 1D, int, float params
  135. g_tTex1di4 . GetDimensions(WidthF);
  136. g_tTex1di4 . GetDimensions(6, WidthF, NumberOfLevelsF);
  137. // 1D, uint, float params
  138. g_tTex1du4 . GetDimensions(WidthF);
  139. g_tTex1du4 . GetDimensions(6, WidthF, NumberOfLevelsF);
  140. // 1DArray, float tx, float params
  141. g_tTex1df4a . GetDimensions(WidthF, ElementsF);
  142. g_tTex1df4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF);
  143. // 1DArray, int, float params
  144. g_tTex1di4a . GetDimensions(WidthF, ElementsF);
  145. g_tTex1di4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF);
  146. // 1DArray, uint, float params
  147. g_tTex1du4a . GetDimensions(WidthF, ElementsF);
  148. g_tTex1du4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF);
  149. // 2D, float tx, float params
  150. g_tTex2df4 . GetDimensions(WidthF, HeightF);
  151. g_tTex2df4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  152. // 2D, int, float params
  153. g_tTex2di4 . GetDimensions(WidthF, HeightF);
  154. g_tTex2di4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  155. // 2D, uint, float params
  156. g_tTex2du4 . GetDimensions(WidthF, HeightF);
  157. g_tTex2du4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  158. // 2Darray, float tx, float params
  159. g_tTex2df4a . GetDimensions(WidthF, HeightF, ElementsF);
  160. g_tTex2df4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  161. // 2Darray, int, float params
  162. g_tTex2di4a . GetDimensions(WidthF, HeightF, ElementsF);
  163. g_tTex2di4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  164. // 2Darray, uint, float params
  165. g_tTex2du4a . GetDimensions(WidthF, HeightF, ElementsF);
  166. g_tTex2du4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  167. // 3D, float tx, float params
  168. g_tTex3df4 . GetDimensions(WidthF, HeightF, DepthF);
  169. g_tTex3df4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF);
  170. // 3D, int, float params
  171. g_tTex3di4 . GetDimensions(WidthF, HeightF, DepthF);
  172. g_tTex3di4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF);
  173. // 3D, uint, float params
  174. g_tTex3du4 . GetDimensions(WidthF, HeightF, DepthF);
  175. g_tTex3du4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF);
  176. // Cube, float tx, float params
  177. g_tTexcdf4 . GetDimensions(WidthF, HeightF);
  178. g_tTexcdf4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  179. // Cube, int, float params
  180. g_tTexcdi4 . GetDimensions(WidthF, HeightF);
  181. g_tTexcdi4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  182. // Cube, uint, float params
  183. g_tTexcdu4 . GetDimensions(WidthF, HeightF);
  184. g_tTexcdu4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF);
  185. // Cubearray, float tx, float params
  186. g_tTexcdf4a . GetDimensions(WidthF, HeightF, ElementsF);
  187. g_tTexcdf4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  188. // Cubearray, int, float params
  189. g_tTexcdi4a . GetDimensions(WidthF, HeightF, ElementsF);
  190. g_tTexcdi4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  191. // Cubearray, uint, float params
  192. g_tTexcdu4a . GetDimensions(WidthF, HeightF, ElementsF);
  193. g_tTexcdu4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF);
  194. // 2DMS, float tx, uint params
  195. g_tTex2dmsf4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF);
  196. // 2DMS, int tx, uint params
  197. g_tTex2dmsi4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF);
  198. // 2DMS, uint tx, uint params
  199. g_tTex2dmsu4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF);
  200. // 2DMSArray, float tx, uint params
  201. g_tTex2dmsf4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF);
  202. // 2DMSArray, int tx, uint params
  203. g_tTex2dmsi4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF);
  204. // 2DMSArray, uint tx, uint params
  205. g_tTex2dmsu4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF);
  206. #endif // OVERLOAD_FIX
  207. psout.Color = 1.0;
  208. psout.Depth = 1.0;
  209. return psout;
  210. }