https://github.com/shader-slang/slang
Raw File
Tip revision: 12b0fc64103c63c33daaedf8a8c2ee05de35dcc5 authored by jsmall-nvidia on 12 August 2020, 13:30:25 UTC
Fix based on review comment problem. (#1490)
Tip revision: 12b0fc6
int-generic.slang
//TEST(compute):COMPARE_COMPUTE:

//TEST_INPUT:type Material<1,2>

//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;

interface IBRDF
{
    int compute();
};

interface IMaterial
{
    associatedtype TBRDF : IBRDF;
    TBRDF getBRDF();
}

struct BRDF<let A:int, let B:int> : IBRDF
{
    int c;
    int compute()
    {
        return A+B;        
    }
};

struct Material<let A:int, let B: int> : IMaterial
{
    typedef BRDF<A,B> TBRDF;
    TBRDF getBRDF() { TBRDF a; a.c = 0; return a; }
};

[numthreads(1, 1, 1)]
void computeMain<M : IMaterial>(
    uniform M material,
    uint3 dispatchThreadID : SV_DispatchThreadID)
{
    M.TBRDF brdf = material.getBRDF();
	int outVal = brdf.compute();
	outputBuffer[dispatchThreadID.x] = outVal;
}
back to top