yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
c43f6fa55
master
1// array-uniform-param.slang 2 3//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry computeMain -stage compute -emit-spirv-directly -force-glsl-scalar-layout 4//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUFFER):-vk -compute -output-using-type 5 6// CHECK: OpEntryPoint 7 8// Test direct SPIR-V emit on arrays in uniforms. 9 10//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4) 11RWStructuredBuffer<uint> resultBuffer; 12 13struct Data 14{ 15 uint arr[4]; 16} 17 18struct Data2 19{ 20 uint arr[4u]; 21} 22 23//TEST_INPUT: set Uniforms.d = new Data{{1,2,3,4}}; 24//TEST_INPUT: set Uniforms.d2 = new Data2{{1,2,3,4}}; 25 26cbuffer Uniforms 27{ 28 Data d; 29 Data2 d2; 30} 31 32// BUFFER: 3 33 34[numthreads(4,1,1)] 35void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 36{ 37 uint threadId = dispatchThreadID.x; 38 uint result = d.arr[1]; 39 var u2 = reinterpret<Data>(d2); 40 result += u2.arr[0]; 41 resultBuffer[threadId] = result; 42}