Ошибка компилятора SPIR-V при попытке использовать единую структуру в качестве аргумента функции

#version 400

#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable

layout(location = 0) out vec4 fs_color;

struct Test
{
    float value;
};

layout(std140,set = 0,binding = 0) uniform UTest
{
    Test t;
} u_test;

float get_value(Test t) {return t.value;}

void main()
{
    fs_color = vec4(get_value(u_test.t),0.0,0.0,1.0);
}

Приведенный выше код GLSL вызывает следующую ошибку компилятора SPIR-V:

Object: 0x0 | SPIR-V module not valid: OpFunctionCall Argument <id> '29's type does not match Function <id> '8's parameter type.

Ошибка происходит из-за вызова функции get_value в main. Ошибка возникает всякий раз, когда я пытаюсь передать экземпляр структуры в качестве аргумента функции, если этот экземпляр является частью униформы (в данном случае u_test). Если структура не является частью униформы, она компилируется нормально.

Почему это проблема и что я могу сделать, чтобы обойти это?

0 ответов

Другие вопросы по тегам