yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
bf607e2f3
master
1//DISABLED_TEST(compute):COMPARE_COMPUTE: -shaderobj 2//TEST(compute):COMPARE_COMPUTE: -shaderobj -cuda 3 4//TEST_INPUT:type Material<1,2> 5 6//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 7RWStructuredBuffer<int> outputBuffer; 8 9interface IBRDF 10{ 11 int compute(); 12}; 13 14interface IMaterial 15{ 16 associatedtype TBRDF : IBRDF; 17 TBRDF getBRDF(); 18} 19 20struct BRDF<let A:int, let B:int> : IBRDF 21{ 22 int c; 23 int compute() 24 { 25 return A+B; 26 } 27}; 28 29struct Material<let A:int, let B: int> : IMaterial 30{ 31 typedef BRDF<A,B> TBRDF; 32 TBRDF getBRDF() { TBRDF a; a.c = 0; return a; } 33}; 34 35[numthreads(1, 1, 1)] 36void computeMain<M : IMaterial>( 37 uniform M material, 38 uint3 dispatchThreadID : SV_DispatchThreadID) 39{ 40 M.TBRDF brdf = material.getBRDF(); 41 int outVal = brdf.compute(); 42 outputBuffer[dispatchThreadID.x] = outVal; 43}