0
votes

I'm using the DirectX 9 effect framework.

I'd like to create a struct which contains a sampler like so:

struct Test
{
    texture tex;
    sampler texSamp = sampler_state
    {
        Texture = <tex>;
    };
};

However the shader compiler fails with:

internal error: this-relative Test::tex 'tex' found outsideof function scope

It seems like the idea of the this-relative reference is kind of working, but I need to somehow declare it inside a function, but I'm not sure how that could work, since declaring samplers inside functions doesn't work? Anyone have any ideas?

2

2 Answers

1
votes

I though that in HLSL everything is a value type. You know what implication this would have?

Each time you assigned this struct to some other variable you would do a copy of the sampler. There are limitation in shading language on many things like number of samplings, not only number of samplers.

0
votes

It seems that non-numeric types are not supported inside HLSL structs, which is a crying shame for my application.