ResolveCommon.bslinc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. Parameters =
  2. {
  3. #ifdef ENABLE_MSAA
  4. Texture2DMS gSource;
  5. int gNumSamples;
  6. #else
  7. Texture2D gSource;
  8. #endif
  9. };
  10. Technique =
  11. {
  12. Language = "HLSL11";
  13. Pass =
  14. {
  15. DepthRead = false;
  16. DepthWrite = false;
  17. Common =
  18. {
  19. struct VStoFS
  20. {
  21. float4 position : SV_POSITION;
  22. float2 uv0 : TEXCOORD0;
  23. };
  24. };
  25. Vertex =
  26. {
  27. struct VertexInput
  28. {
  29. float2 screenPos : POSITION;
  30. float2 uv0 : TEXCOORD0;
  31. };
  32. VStoFS main(VertexInput input)
  33. {
  34. VStoFS output;
  35. output.position = float4(input.screenPos, 0, 1);
  36. output.uv0 = input.uv0;
  37. return output;
  38. }
  39. };
  40. Fragment =
  41. {
  42. #ifdef ENABLE_MSAA
  43. int gNumSamples;
  44. Texture2DMS<float4> gSource : register(t0);
  45. float4 main(VStoFS input) : SV_Target0
  46. {
  47. int2 iUV = trunc(input.uv0);
  48. float4 sum = float4(0, 0, 0, 0);
  49. for(int i = 0; i < gNumSamples; i++)
  50. sum += gSource.Load(iUV, i);
  51. return sum / gNumSamples;
  52. }
  53. #else
  54. Texture2D<float4> gSource : register(t0);
  55. float4 main(VStoFS input) : SV_Target0
  56. {
  57. int2 iUV = trunc(input.uv0);
  58. return gSource.Load(int3(iUV.xy, 0));
  59. }
  60. #endif
  61. };
  62. };
  63. };
  64. Technique =
  65. {
  66. Language = "GLSL";
  67. Pass =
  68. {
  69. DepthRead = false;
  70. DepthWrite = false;
  71. Vertex =
  72. {
  73. in vec2 bs_position;
  74. in vec2 bs_texcoord0;
  75. out vec2 texcoord0;
  76. out gl_PerVertex
  77. {
  78. vec4 gl_Position;
  79. };
  80. void main()
  81. {
  82. gl_Position = vec4(bs_position, 0, 1);
  83. texcoord0 = bs_texcoord0;
  84. }
  85. };
  86. Fragment =
  87. {
  88. in vec2 texcoord0;
  89. out vec4 fragColor;
  90. #ifdef ENABLE_MSAA
  91. uniform int gNumSamples;
  92. uniform sampler2DMS gSource;
  93. void main()
  94. {
  95. vec2 uv = trunc(texcoord0);
  96. ivec2 iUV = ivec2(uv.x, uv.y);
  97. vec4 sum = vec4(0, 0, 0, 0);
  98. for(int i = 0; i < gNumSamples; i++)
  99. sum += texelFetch(gSource, iUV, i);
  100. fragColor = sum / gNumSamples;
  101. }
  102. #else
  103. uniform sampler2D gSource;
  104. void main()
  105. {
  106. vec2 uv = trunc(texcoord0);
  107. ivec2 iUV = ivec2(uv.x, uv.y);
  108. fragColor = texelFetch(gSource, iUV, 0);
  109. }
  110. #endif
  111. };
  112. };
  113. };