OIT_FragmentCountPS.hlsl 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
  2. // CHECK: AtomicAdd
  3. //-----------------------------------------------------------------------------
  4. // File: OITPS.hlsl
  5. //
  6. // Desc: Pixel shaders used in the Order Independent Transparency sample.
  7. //
  8. // Copyright (c) Microsoft Corporation. All rights reserved.
  9. //-----------------------------------------------------------------------------
  10. //TODO: Use structured buffers
  11. RWTexture2D<uint> fragmentCount : register( u1 );
  12. RWBuffer<float> deepBufferDepth : register( u2 );
  13. RWBuffer<uint4> deepBufferColor : register( u3 );
  14. RWBuffer<uint> prefixSum : register( u4 );
  15. cbuffer CB : register( b0 )
  16. {
  17. uint g_nFrameWidth : packoffset( c0.x );
  18. uint g_nFrameHeight : packoffset( c0.y );
  19. uint g_nReserved0 : packoffset( c0.z );
  20. uint g_nReserved1 : packoffset( c0.w );
  21. }
  22. struct SceneVS_Output
  23. {
  24. float4 pos : SV_POSITION;
  25. float4 color : COLOR0;
  26. };
  27. void main( SceneVS_Output input)
  28. {
  29. // Increments need to be done atomically
  30. InterlockedAdd(fragmentCount[input.pos.xy], 1);
  31. }