| // 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 |