ResolveCommon.bslinc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. Pass =
  13. {
  14. DepthRead = false;
  15. DepthWrite = false;
  16. Common =
  17. {
  18. struct VStoFS
  19. {
  20. float4 position : SV_POSITION;
  21. float2 uv0 : TEXCOORD0;
  22. };
  23. };
  24. Vertex =
  25. {
  26. struct VertexInput
  27. {
  28. float2 screenPos : POSITION;
  29. float2 uv0 : TEXCOORD0;
  30. };
  31. VStoFS main(VertexInput input)
  32. {
  33. VStoFS output;
  34. output.position = float4(input.screenPos, 0, 1);
  35. output.uv0 = input.uv0;
  36. return output;
  37. }
  38. };
  39. Fragment =
  40. {
  41. #ifdef ENABLE_MSAA
  42. cbuffer FragParams
  43. {
  44. int gNumSamples;
  45. };
  46. Texture2DMS<float4> gSource : register(t0);
  47. float4 main(VStoFS input) : SV_Target0
  48. {
  49. int2 iUV = trunc(input.uv0);
  50. float4 sum = float4(0, 0, 0, 0);
  51. for(int i = 0; i < gNumSamples; i++)
  52. sum += gSource.Load(iUV, i);
  53. return sum / gNumSamples;
  54. }
  55. #else
  56. Texture2D<float4> gSource : register(t0);
  57. float4 main(VStoFS input) : SV_Target0
  58. {
  59. int2 iUV = trunc(input.uv0);
  60. return gSource.Load(int3(iUV.xy, 0));
  61. }
  62. #endif
  63. };
  64. };
  65. };