ParticleFinalDispatchIndirectArgsCS.hlsl 971 B

123456789101112131415161718192021222324252627282930313233
  1. // RUN: %dxc -E main -T cs_6_0 -O1 %s | FileCheck %s
  2. // CHECK: bufferLoad
  3. // CHECK: lshr
  4. // CHECK: bufferStore
  5. //
  6. // Copyright (c) Microsoft. All rights reserved.
  7. // This code is licensed under the MIT License (MIT).
  8. // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
  9. // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
  10. // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
  11. // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
  12. //
  13. // Developed by Minigraph
  14. //
  15. // Author: Julia Careaga
  16. //
  17. #include "ParticleUtility.hlsli"
  18. ByteAddressBuffer g_FinalInstanceCounter : register( t0 );
  19. RWByteAddressBuffer g_NumThreadGroups : register( u0 );
  20. RWByteAddressBuffer g_DrawIndirectArgs : register ( u1 );
  21. [RootSignature(Particle_RootSig)]
  22. [numthreads(1, 1, 1)]
  23. void main( uint3 DTid : SV_DispatchThreadID )
  24. {
  25. uint particleCount = g_FinalInstanceCounter.Load(0);
  26. g_NumThreadGroups.Store3(0, uint3((particleCount + 63) / 64, 1, 1));
  27. g_DrawIndirectArgs.Store(4, particleCount);
  28. }