2
0

ResolveCommon.bslinc 962 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. technique Resolve
  2. {
  3. depth
  4. {
  5. read = false;
  6. write = false;
  7. };
  8. code
  9. {
  10. struct VStoFS
  11. {
  12. float4 position : SV_POSITION;
  13. float2 uv0 : TEXCOORD0;
  14. };
  15. struct VertexInput
  16. {
  17. float2 screenPos : POSITION;
  18. float2 uv0 : TEXCOORD0;
  19. };
  20. VStoFS vsmain(VertexInput input)
  21. {
  22. VStoFS output;
  23. output.position = float4(input.screenPos, 0, 1);
  24. output.uv0 = input.uv0;
  25. return output;
  26. }
  27. #ifdef ENABLE_MSAA
  28. [internal]
  29. cbuffer FragParams
  30. {
  31. int gNumSamples;
  32. };
  33. Texture2DMS<float4> gSource;
  34. float4 fsmain(VStoFS input) : SV_Target0
  35. {
  36. int2 iUV = trunc(input.uv0);
  37. float4 sum = float4(0, 0, 0, 0);
  38. for(int i = 0; i < gNumSamples; i++)
  39. sum += gSource.Load(iUV, i);
  40. return sum / gNumSamples;
  41. }
  42. #else
  43. Texture2D<float4> gSource;
  44. float4 fsmain(VStoFS input) : SV_Target0
  45. {
  46. int2 iUV = trunc(input.uv0);
  47. return gSource.Load(int3(iUV.xy, 0));
  48. }
  49. #endif
  50. };
  51. };