// Copyright (c) 2016-2020 NVIDIA Corporation // // SPDX-License-Identifier: CC-BY-4.0 include::{generated}/meta/{refprefix}VK_NV_glsl_shader.txt[] === Other Extension Metadata *Last Modified Date*:: 2016-02-14 *IP Status*:: No known IP claims. *Contributors*:: - Piers Daniell, NVIDIA === Description This extension allows GLSL shaders written to the `GL_KHR_vulkan_glsl` extension specification to be used instead of SPIR-V. The implementation will automatically detect whether the shader is SPIR-V or GLSL, and compile it appropriately. === Deprecation Functionality in this extension is outside of the scope of Vulkan and is better served by a compiler library such as https://github.com/KhronosGroup/glslang[glslang]. No new implementations will support this extension, so applications should: not use it. include::{generated}/interfaces/VK_NV_glsl_shader.txt[] === Examples *Example 1* Passing in GLSL code [source,c++] ---------------------------------------- char const vss[] = "#version 450 core\n" "layout(location = 0) in vec2 aVertex;\n" "layout(location = 1) in vec4 aColor;\n" "out vec4 vColor;\n" "void main()\n" "{\n" " vColor = aColor;\n" " gl_Position = vec4(aVertex, 0, 1);\n" "}\n" ; VkShaderModuleCreateInfo vertexShaderInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO }; vertexShaderInfo.codeSize = sizeof vss; vertexShaderInfo.pCode = vss; VkShaderModule vertexShader; vkCreateShaderModule(device, &vertexShaderInfo, 0, &vertexShader); ---------------------------------------- === Version History * Revision 1, 2016-02-14 (Piers Daniell) - Initial draft