3

我正在尝试在 Windows 上使用 LunarG Vulkan SDK 1.0.37.0 编译以下着色器:

#version 450 core
#extension GL_ARB_bindless_texture : require

layout(std140, binding=1) uniform LightUbo
{
    vec3 lightDirectionVS;
};

layout(std140, binding=2) uniform TextureUBO
{
    sampler2D samplers[ 10 ];
};

in vec2 vUV;
in vec3 vNormalVS;
out vec4 fragColor;

void main()
{
    vec2 uv = vUV;
    uv.y = 1.0 - uv.y;
    fragColor = texture( samplers[ 0 ], uv ) * max( 0.2, dot( lightDirectionVS, vNormalVS ) );
}

编译命令:

\VulkanSDK\1.0.37.0\Bin\glslangValidator.exe -V assets\shader.frag -o assets\shader.frag.spv

编译器给出以下输出:

警告,版本 450 尚未完成;大多数特定于版本的功能都存在,但有些缺失。

错误:assets\shader.frag:2:'#extension':不支持扩展:GL_ARB_bindless_texture

错误: assets\shader.frag:2: '#extension' : 额外的标记 -- 预期换行 错误: assets\shader.frag:2: '' : 编译终止

有没有办法在 OpenGL 4.5 和 SPIR-V 着色器中使用无绑定纹理?

4

1 回答 1

4

SPIR-V 没有用于处理无绑定纹理的工具。因此,除非 NVIDIA 或 ARB 添加 SPIR-V 扩展来允许它,否则您将不得不使用实现的 GLSL 编译器,而不是 glslang。

于 2017-01-11T16:18:48.250 回答