Add Compute shaders support to WebGPU
This commit is contained in:
@@ -54,7 +54,7 @@ bool ShouldSwap(float a, float b)
|
||||
|
||||
RWByteAddressBuffer IndirectArgsBuffer : register(u0);
|
||||
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
[numthreads(22, 1, 1)]
|
||||
void CS_IndirectArgs(uint groupIndex : SV_GroupIndex)
|
||||
{
|
||||
@@ -129,7 +129,7 @@ void StoreItem(uint element, uint count)
|
||||
|
||||
#ifdef _CS_PreSort
|
||||
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
META_PERMUTATION_1(THREAD_GROUP_SIZE=1024)
|
||||
META_PERMUTATION_1(THREAD_GROUP_SIZE=64)
|
||||
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
|
||||
@@ -177,7 +177,7 @@ void CS_PreSort(uint3 groupID : SV_GroupID, uint groupIndex : SV_GroupIndex)
|
||||
|
||||
#ifdef _CS_InnerSort
|
||||
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
|
||||
void CS_InnerSort(uint3 groupID : SV_GroupID, uint groupIndex : SV_GroupIndex)
|
||||
{
|
||||
@@ -222,7 +222,7 @@ void CS_InnerSort(uint3 groupID : SV_GroupID, uint groupIndex : SV_GroupIndex)
|
||||
RWBuffer<uint> SortedIndices : register(u0);
|
||||
RWBuffer<float> SortingKeys : register(u1);
|
||||
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
[numthreads(1024, 1, 1)]
|
||||
void CS_OuterSort(uint3 dispatchThreadId : SV_DispatchThreadID)
|
||||
{
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
#else
|
||||
#define CAN_USE_GATHER 0
|
||||
#endif
|
||||
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5
|
||||
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5 || defined(WGSL)
|
||||
#define CAN_USE_COMPUTE_SHADER 1
|
||||
#else
|
||||
#define CAN_USE_COMPUTE_SHADER 0
|
||||
@@ -79,6 +79,7 @@
|
||||
// Alias read-only Buffer binded as shader resource into StructuredBuffer to be used as storage on WebGPU (not supported)
|
||||
#define CAN_USE_TYPED_BUFFER_LOADS 0
|
||||
#define Buffer StructuredBuffer
|
||||
#define RWBuffer RWStructuredBuffer
|
||||
|
||||
// Hack matrix multiplication order for WebGPU (row-major vs column-major bug?)
|
||||
#define PROJECT_POINT(p, m) mul(m, p)
|
||||
|
||||
@@ -35,7 +35,7 @@ float3 GetParticleVec3(uint particleIndex, int offset)
|
||||
}
|
||||
|
||||
// Sorting keys generation shader
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
META_PERMUTATION_1(SORT_MODE=0)
|
||||
META_PERMUTATION_1(SORT_MODE=1)
|
||||
META_PERMUTATION_1(SORT_MODE=2)
|
||||
|
||||
@@ -20,7 +20,7 @@ META_CB_END
|
||||
RWStructuredBuffer<uint> HistogramBuffer : register(u0);
|
||||
|
||||
// Clears the histogram
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
[numthreads(THREADGROUP_SIZE_X, 1, 1)]
|
||||
void CS_ClearHistogram(uint dispatchThreadId : SV_DispatchThreadID)
|
||||
{
|
||||
@@ -44,7 +44,7 @@ float ComputeHistogramPositionFromLuminance(float luminance)
|
||||
groupshared uint SharedHistogram[HISTOGRAM_SIZE];
|
||||
|
||||
// Generates the histogram
|
||||
META_CS(true, FEATURE_LEVEL_SM5)
|
||||
META_CS(true, AUTO)
|
||||
[numthreads(THREADGROUP_SIZE_X, THREADGROUP_SIZE_Y, 1)]
|
||||
void CS_GenerateHistogram(uint3 dispatchThreadId : SV_DispatchThreadID, uint3 groupThreadId : SV_GroupThreadID)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user