是否可以在 OpenGL 4.5 上的 SPIR-V 着色器中使用无绑定纹理?
Is it possible to use bindless textures in SPIR-V shaders on OpenGL 4.5?
我正在尝试在 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.0.37.0\Bin\glslangValidator.exe -V assets\shader.frag -o assets\shader.frag.spv
编译器给出以下输出:
Warning, version 450 is not yet complete; most version-specific
features are present, but some are missing.
ERROR:
assets\shader.frag:2: '#extension' : extension not supported:
GL_ARB_bindless_texture
ERROR: assets\shader.frag:2: '#extension' :
extra tokens -- expected newline ERROR: assets\shader.frag:2: '' :
compilation terminated
有没有办法在 OpenGL 4.5 和 SPIR-V 着色器中使用无绑定纹理?
SPIR-V 没有处理无绑定纹理的工具。因此,除非 NVIDIA 或 ARB 添加 SPIR-V 扩展以允许它,否则您将不得不使用实现的 GLSL 编译器,而不是 glslang。
我正在尝试在 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.0.37.0\Bin\glslangValidator.exe -V assets\shader.frag -o assets\shader.frag.spv
编译器给出以下输出:
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: assets\shader.frag:2: '#extension' : extension not supported: GL_ARB_bindless_texture
ERROR: assets\shader.frag:2: '#extension' : extra tokens -- expected newline ERROR: assets\shader.frag:2: '' : compilation terminated
有没有办法在 OpenGL 4.5 和 SPIR-V 着色器中使用无绑定纹理?
SPIR-V 没有处理无绑定纹理的工具。因此,除非 NVIDIA 或 ARB 添加 SPIR-V 扩展以允许它,否则您将不得不使用实现的 GLSL 编译器,而不是 glslang。