yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
2a5d5b323
master
1//TEST(compute):COMPARE_COMPUTE: -shaderobj 2//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj 3 4//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 5RWStructuredBuffer<float> outputBuffer; 6 7interface IAdd 8{ 9 float addf(float u, float v); 10} 11 12interface ISub 13{ 14 float subf(float u, float v); 15} 16 17interface IAddAndSub 18{ 19 float addf(float u, float v); 20 float subf(float u, float v); 21} 22 23struct Simple : IAdd, ISub, IAddAndSub 24{ 25 float addf(float u, float v) 26 { 27 return u+v; 28 } 29 float subf(float u, float v) 30 { 31 return u-v; 32 } 33}; 34 35float testAddSub<T:IAddAndSub>(T t) 36{ 37 return t.subf(t.addf(1.0, 1.0), 1.0); 38} 39 40[numthreads(4, 1, 1)] 41void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 42{ 43 Simple s; 44 float outVal = testAddSub(s); 45 outputBuffer[dispatchThreadID.x] = outVal; 46}