ResolveCommon.bslinc 949 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. cbuffer FragParams
  29. {
  30. int gNumSamples;
  31. };
  32. Texture2DMS<float4> gSource;
  33. float4 fsmain(VStoFS input) : SV_Target0
  34. {
  35. int2 iUV = trunc(input.uv0);
  36. float4 sum = float4(0, 0, 0, 0);
  37. for(int i = 0; i < gNumSamples; i++)
  38. sum += gSource.Load(iUV, i);
  39. return sum / gNumSamples;
  40. }
  41. #else
  42. Texture2D<float4> gSource;
  43. float4 fsmain(VStoFS input) : SV_Target0
  44. {
  45. int2 iUV = trunc(input.uv0);
  46. return gSource.Load(int3(iUV.xy, 0));
  47. }
  48. #endif
  49. };
  50. };