yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -d3d12 -shaderobj -output-using-type 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type 4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -metal -shaderobj -output-using-type -render-features argument-buffer-tier-2 5// nested-parameter-block-2.slang 6 7struct CB 8{ 9 uint4 value; 10} 11 12struct MaterialSystem 13{ 14 CB cb; 15 RWStructuredBuffer<uint4> data; 16} 17 18struct Scene 19{ 20 CB sceneCb; 21 RWStructuredBuffer<uint4> data; 22 ParameterBlock<MaterialSystem> material; 23} 24 25//TEST_INPUT: set scene = new Scene { { {1,2,3,4} }, ubuffer(data=[1 2 3 4], stride=4), new MaterialSystem {{ {1,2,3,4} }, ubuffer(data=[1 2 3 4], stride=4)} } 26ParameterBlock<Scene> scene; 27 28struct MyBuffer 29{ 30 RWStructuredBuffer<uint4> resultBuffer; 31} 32//TEST_INPUT: set pb2 = new MyBuffer { out ubuffer(data=[0 0 0 0], stride=4) } 33ParameterBlock<MyBuffer> pb2; 34 35// Main entry-point. Applies the transformation encoded by `transformer` 36// to all elements in `buffer`. 37[shader("compute")] 38[numthreads(4,1,1)] 39void computeMain(uint3 sv_dispatchThreadID : SV_DispatchThreadID) 40{ 41 // CHECK: type: uint32_t 42 // CHECK-NEXT: 4 43 // CHECK-NEXT: 4 44 // CHECK-NEXT: 4 45 // CHECK-NEXT: 4 46 pb2.resultBuffer[sv_dispatchThreadID.x] = scene.sceneCb.value.x + scene.data[0].x + scene.material.cb.value.x + scene.material.data[0].x; 47}