我正在尝试在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:'#extended':不支持扩展名: GL_ARB_bindless_texture
错误:assets \ shader.frag:2:'#extended“: 额外的令牌 - 预期换行错误:assets \ shader.frag:2:'': 编译终止
有没有办法在OpenGL 4.5和SPIR-V着色器中使用无绑定纹理?
答案 0 :(得分:4)
SPIR-V无法进行无绑定纹理处理。因此,除非NVIDIA或ARB添加SPIR-V扩展以允许它,否则您必须使用实现的GLSL编译器,而不是glslang。