yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
80ddf4027
master
1//TEST:SIMPLE(filecheck=CHECK8): -target spirv -profile spirv_1_3 -DIN_UINT8 2//TEST:SIMPLE(filecheck=CHECK16): -target spirv -profile spirv_1_3 -DIN_UINT16 3//TEST:SIMPLE(filecheck=CHECK16): -target spirv -profile spirv_1_3 -DIN_HALF 4//TEST:SIMPLE(filecheck=CHECKBOTH): -target spirv -profile spirv_1_3 -DIN_UINT8 -DIN_HALF 5//TEST:SIMPLE(filecheck=CHECK8): -target spirv -profile spirv_1_3 -DOUT_UINT8 6//TEST:SIMPLE(filecheck=CHECK16): -target spirv -profile spirv_1_3 -DOUT_UINT16 7//TEST:SIMPLE(filecheck=CHECK16): -target spirv -profile spirv_1_3 -DOUT_HALF 8//TEST:SIMPLE(filecheck=CHECK16): -target spirv -profile spirv_1_3 -DOUT_HALF -DATOMIC 9//TEST:SIMPLE(filecheck=CHECK): -target spirv -profile spirv_1_3 10 11//CHECK8: OpCapability UniformAndStorageBuffer8BitAccess 12//CHECK8-NOT: OpCapability UniformAndStorageBuffer16BitAccess 13//CHECK16: OpCapability UniformAndStorageBuffer16BitAccess 14//CHECK16-NOT: OpCapability UniformAndStorageBuffer8BitAccess 15//CHECKBOTH-DAG: OpCapability UniformAndStorageBuffer8BitAccess 16//CHECKBOTH-DAG: OpCapability UniformAndStorageBuffer16BitAccess 17//CHECK-NOT: OpCapability UniformAndStorageBuffer8BitAccess 18//CHECK-NOT: OpCapability UniformAndStorageBuffer16BitAccess 19 20 21uniform struct { 22#if defined(IN_HALF) 23 half4 data; 24#else 25 float4 data; 26#endif 27#if defined(IN_UINT8) 28 uint8_t index; 29#elif defined(IN_UINT16) 30 uint16_t index; 31#else 32 uint32_t index; 33#endif 34} inputBuffer; 35 36#if defined(OUT_HALF) 37#define OUT_FLOAT_TYPE half 38#else 39#define OUT_FLOAT_TYPE float 40#endif 41#if defined(OUT_UINT8) 42#define OUT_UINT_TYPE uint8_t 43#elif defined(OUT_UINT16) 44#define OUT_UINT_TYPE uint16_t 45#else 46#define OUT_UINT_TYPE uint32_t 47#endif 48 49struct st { 50#if defined(ATOMIC) 51 Atomic<OUT_FLOAT_TYPE> data; 52#else 53 OUT_FLOAT_TYPE data; 54#endif 55 OUT_UINT_TYPE index; 56}; 57RWStructuredBuffer<st> outputBuffer; 58 59[shader("compute")] 60[numthreads(1, 1, 1)] 61void computeMain() 62{ 63 outputBuffer[0].data = OUT_FLOAT_TYPE(inputBuffer.data.x); 64 outputBuffer[1].index = OUT_UINT_TYPE(inputBuffer.index); 65}