尝试使用统一结构作为函数参数时SPIR-V编译器错误

时间:2018-04-02 10:43:30

标签: struct compiler-errors glsl 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.

错误来自 main 中的 get_value 函数调用。每当我尝试将struct实例作为函数参数传递时,如果该实例是统一的一部分(在本例中为 u_test ),则会发生错误。如果结构不是制服的一部分,它编译得很好。

为什么这是一个问题,我该怎么办才能解决它?

0 个答案:

没有答案