Files
WickedEngine/WickedEngine/shaders/emittedparticle_kickoffUpdateCS.hlsl
Turánszki János fb9b8d9fe3 ps5, xbox fixes
2024-07-31 20:54:32 +02:00

28 lines
1.0 KiB
HLSL

#include "globals.hlsli"
#include "ShaderInterop_EmittedParticle.h"
RWByteAddressBuffer counterBuffer : register(u4);
RWByteAddressBuffer indirectBuffers : register(u5);
[numthreads(1, 1, 1)]
void main(uint3 DTid : SV_DispatchThreadID)
{
uint aliveCount = counterBuffer.Load(PARTICLECOUNTER_OFFSET_ALIVECOUNT_AFTERSIMULATION);
int deadCount = counterBuffer.Load<int>(PARTICLECOUNTER_OFFSET_DEADCOUNT);
indirectBuffers.Store3(ARGUMENTBUFFER_OFFSET_DISPATCHSIMULATION, uint3((aliveCount + THREADCOUNT_SIMULATION - 1) / THREADCOUNT_SIMULATION, 1, 1));
counterBuffer.Store(PARTICLECOUNTER_OFFSET_ALIVECOUNT, aliveCount);
counterBuffer.Store(PARTICLECOUNTER_OFFSET_ALIVECOUNT_AFTERSIMULATION, 0);
#ifdef __PSSL__
counterBuffer.TypedStore<int>(PARTICLECOUNTER_OFFSET_DEADCOUNT, max(0, deadCount));
#else
counterBuffer.Store<int>(PARTICLECOUNTER_OFFSET_DEADCOUNT, max(0, deadCount));
#endif // __PSSL__
counterBuffer.Store(PARTICLECOUNTER_OFFSET_CULLEDCOUNT, 0);
counterBuffer.Store(PARTICLECOUNTER_OFFSET_CELLALLOCATOR, 0);
}