`GLSLC`(1) `GLSLC`(1) (NAME) `glslc` - GLSL/HLSL SPIR-V Clang (SYNOPSIS) glslc [--help] glslc [-h] glslc [--show-limits] glslc [-c|-S|-E] [-x ...] [-std=standard] [ ... options for resource bindings ... ] [-fhlsl-16bit-types] [-fhlsl-offsets] [-fhlsl-functionality1] [-fentry-point=] [-fauto-map-locations] [-finvert-y] [-flimit=...] [-flimit-file ] [-fshader-stage=...] [--target-env=...] [--target-spv=...] [-g] [-O0|-Os] [-Idirectory...] [-Dmacroname[=value]...] [-w] [-Werror] [-o outfile] shader... (DESCRIPTION) (Input file languages) glslc GLSL/HLSL SPIR-V . (Shader stage specification) glslc GLSL : -fshader-stage= #pragma shader_stage() . -fshader-stage= #pragma shader_stage() . . -fshader-stage= #pragma shader_stage() . stage . -fshader-stage= . . (Shader Stage Selection) +-------------------------+-----------------------+-------------+ | | | | | | | | |(Shader Stage) | | | +-------------------------+-----------------------+-------------+ | (vertex) | .vert | vertex | +-------------------------+-----------------------+-------------+ | (fragment) | .frag | fragment | +-------------------------+-----------------------+-------------+ | | .tesc | tesscontrol | | | | | |(tesselation control) | | | +-------------------------+-----------------------+-------------+ | | .tese | tesseval | | | | | |(tesselation evaluation) | | | +-------------------------+-----------------------+-------------+ | | .geom | geometry | |(geometry) | | | +-------------------------+-----------------------+-------------+ | | .comp | compute | |(compute) | | | +-------------------------+-----------------------+-------------+ #pragma shader_stage() #pragma (token) shader_stage() . stage . #pragma shader_stage() : o #pragma shader_stage() (translation unit) . o #pragma shader_stage() stage . glslc . SPIR-V (SPIR-V assembly files) SPIR-V SPIRV-Tools .spvasm . SPIR-V -E -S SPIR-V -fshader-stage=. (Output file naming) -o . o (-S -c) . .spvasm -S .spv -c . . o glslc -c foo.vert foo.vert.spv glslc -S bar.frag bar.frag.spvasm . o ( ) glslc -c foo foo.spv glslc -S bar.glsl bar.spvasm . o a.spv . (Overall Options) --help, -h --help -h glslc . --show-limits --show-limits . -flimit= -flimit-file . -o -o . . - . (Language and Mode Selection Options) -finvert-y position.Y (vertex shader) . -flimit= -flimit= . . (tokens) (whitespace) . . --show-limits . . -flimit-file -flimit-file . -flimit= --show-limits . Glslang glslangValidator -c . . -fshader-stage= -fshader-stage= (shader stage) . << >> . -fshader-stage= : o -fshader-stage= . . o -fshader-stage= . o -fshader-stage= . o -fshader-stage= #pragma shader_stage() -fshader-stage= . o -fshader-stage= -fshader-stage= . -fshader-stage= (override) SPIR-V glslc SPIR-V GLSL . SPIR-V -fshader-stage= SPIR-V -fshader-stage= -fshader-stage= . -std= (profile) . GLSL 310es 450core . GLSL 450. -std= : o -std= GLSL glslc . o -std= HLSL . o -std= #version . o -std= #version glslc . o -std= . -std= #version . -std= #version . -std= #line . #line -std= . --target-env= . . : o vulkan: SPIR-V Vulkan 1.0. o vulkan1.0: SPIR-V Vulkan 1.0. o vulkan1.1: SPIR-V Vulkan 1.1. o vulkan1.2: SPIR-V Vulkan 1.2. o vulkan1.3: SPIR-V Vulkan 1.3. o vulkan1.4: SPIR-V Vulkan 1.4. o opengl: SPIR-V OpenGL 4.5. o opengl4.5: SPIR-V OpenGL 4.5. SPIR-V 1.0 Vulkan 1.1 SPIR-V 1.3 Vulkan 1.2 SPIR-V 1.5 . vulkan1.0 . : OpenGL opengl_compat ..SS "--target-spv=" --target-spv= SPIR-V . SPIR-V . Vulkan : SPIR-V 1.0 Vulkan 1.0 SPIR-V 1.3 Vulkan 1.1 SPIR-V 1.5 Vulkan 1.2. : o spv1.0 o spv1.1 o spv1.2 o spv1.3 o spv1.4 o spv1.5 o spv1.6 -x . glsl hlsl . hlsl HLSL 'glsl' . : HLSL () HLSL (vertex shader) (geometry shader) (pixel shader) . -c -c glslc . SPIR-V SPIR-V Output File Naming . -E -E glslc . -c -S . . . glslc SPIR-V . -S -S glslc (disassembling) . -c . SPIR-V SPIR-V Output File Naming . glslc SPIR-V . glslc (linking) . (Linking) . -D -Dmacroname[=[value]] . value . -I -Idirectory -I directory include . . -g (debug) . strip-debug-info -O . . glslang . -O : o -O0 << >> . . o -O . o -Os . -mfmt= -mfmt= SPIR-V . . SPIR-V . SPIR-V ( -S) ( -M -MM -E) . . +----------------+------------------------------------------------+ | | | | | | +----------------+------------------------------------------------+ |bin | | | | SPIR-V | | | | | | | | | - | | | | | | (host native endianness). | | | | | | | | | | | | SPIR-V . | +----------------+------------------------------------------------+ |num | | | | SPIR-V | | | | | | | | | | | | | | | . | | | : glslc -c -mfmt=num main.vert -o | | | output_file.txt | | | output_file.txt: | | | 0x07230203,0x00010000,0x00080001,0x00000006... | +----------------+------------------------------------------------+ |c | | | | SPIR-V | | | | | | | | | | | | C (C-style initializer list). | | | | | | num | | | | | | . : glslc -c | | | -mfmt=c main.vert -o output_file.txt | | | output_file.txt: | | | {0x07230203, 0x00010000, 0x00080001, | | | 0x00000006...} | +----------------+------------------------------------------------+ HLSL . -fhlsl-offsets GLSL HLSL . HLSL . -fhlsl-functionality1 SPV_GOOGLE_hlsl_functionality1 : o HLSL o UAV . : -fhlsl_functionality1. -fentry-point= -fentry-point= . HLSL . "main" . -fauto-map-locations GLSL -fauto-map-locations . HLSL . (Client APIs) I/O . . (binding) : o GLSL location : layout(location = 1) in vec4 x; o HLSL vk::location : [[vk::location(1)]] float4 FooShader( [[vk::location(0)]] float4 a, [[vk::location(2)]] float4 b) : COLOR0 { return a + b; } [[option-fpreserve-bindings ==== -fpreserve-bindings (bindings) ..SS " (Warning and Error Options)" -w -w glslc . . -Werror -Werror glslc . warning: error: glslc . -w . (Dependency Generation Options) -M -MM -M make . make . make SPIR-V (included) . ( -MT) SPIR-V make << >> -c . -M -E -w . stdout -MF -o . -o -MF . -o . make stdout -MF -o . -o -MF . -MM -M . glslc -M main.vert main.vert.spv: main.vert stdout . << >> . -MD -MD glslc make . : -MF . .d . -MF -o . -o -MF . glslc -c -MD main.vert main.vert.spv SPIR-V main.vert.spv.d . << >> . -MF -MF -M -MD . . glslc -c -MD main.vert -MF dep_info main.vert.spv SPIR-V dep_info . -MT -MT -M -MD (target) . . glslc -M main.vert -MT target stdout : target: main.vert . . +-----------------+-----------------------+-----------------------+-----------------------------------------------+ | | | | | | | | | | | | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -M | | | main.vert.spv: main.vert | |main.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -M a.vert | | | a.vert.spv: a.vert | |b.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ | | | | b.vert.spv: b.vert | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -M | | dep_info | main.vert.spv: main.vert | |main.vert -o | | | | |dep_info | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -M | | dep_info | main.vert.spv: main.vert | |main.vert -MF | | | | |dep_info | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -M | | | target: main.vert | |main.vert -MT | | | | |target | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -MD | a.spv | main.vert.spv.d | main.vert.spv: main.vert | |main.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -c -MD | main.vert.spv | main.vert.spv.d | main.vert.spv: main.vert | |main.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -c -MD | a.vert.spv | a.vert.spv.d | a.vert.spv: a.vert | |a.vert b.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ | | b.vert.spv | b.vert.spv.d | b.vert.spv: b.vert | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -S -MD | main.vert.spvasm | main.vert.spvasm.d | main.vert.spvasm: main.vert | |main.vert | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -c -MD | main.vert.spv | dep_info | main.vert.spv: main.vert | |main.vert -MF | | | | |dep_info | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -c -MD | obj | obj.d | obj: main.vert | |main.vert -o obj | | | | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ |glslc -c -MD | obj | dep_info | target: main.vert .TE | |main.vert -o obj | | | " | |-MF dep_info -MT | | | | |target | | | (Resource Binding Options)" | | | | | "-fauto-bind-uniforms" | | | | | -fauto-bind-uniforms | | | | | | | | | | | | | | | binding | | | | | | | | | | | | | | | | | | | | binding | | | | | uniform | | | | | . | | | | | binding | | | | | | | | | | | | | | | | | | | | (layout qualifier) binding | | | | | | | | | | . : | | | | | layout(binding = 12) uniform texture2D; | | | | | "-fhlsl-iomap" | | | | | -fhlsl-iomap | | | | | | | | | | | | | | | (register) HLSL | | | | | binding | | | | | . | | | | | "-fimage-binding-base" | | | | | -fimage-binding-base [stage] base | | | | | | | | | | binding | | | | | | | | | | | | | | | (images) | | | | | . | | | | | stage | | | | | | | | | | . | | | | | HLSL | | | | | | | | | | base | | | | | . | | | | | "-fsampler-binding-base" | | | | | -fsampler-binding-base [stage] base | | | | | | | | | | binding | | | | | | | | | | | | | | | | | | | | (samplers) | | | | | . | | | | | stage | | | | | | | | | | . | | | | | HLSL | | | | | | | | | | base | | | | | . | | | | | "-ftexture-binding-base" | | | | | -ftexture-binding-base [stage] base | | | | | | | | | | binding | | | | | | | | | | | | | | | (textures) | | | | | . | | | | | stage | | | | | | | | | | . | | | | | HLSL | | | | | | | | | | base | | | | | . | | | | | "-fubo-binding-base" | | | | | -fubo-binding-base [stage] base | | | | | | | | | | binding | | | | | | | | | | | | | | | | | | | | (Uniform Buffer Objects | | | | | GLSL) Cbuffer ( | | | | | HLSL) . | | | | | | | | | | stage | | | | | | | | | | . | | | | | HLSL | | | | | base | | | | | . | | | | | "-fcbuffer-binding-base" | | | | | -fcbuffer-binding-base [stage] base | | | | | -fubo-binding-base [stage] | | | | | base . "-fssbo-binding-base" | | | | | -fssbo-binding-base | | | | | [stage] base | | | | | binding | | | | | | | | | | | | | | | | | | | | | | | | | (Shader Storage Buffer Objects GLSL) | | | | | . | | | | | stage | | | | | | | | | | . | | | | | | | | | | GLSL | | | | | . | | | | | "-fuav-binding-base" | | | | | -fuav-binding-base [stage] base | | | | | | | | | | | | | | | binding | | | | | | | | | | | | | | | | | | | | (Unordered Access Views | | | | | UAV) | | | | | . | | | | | stage | | | | | | | | | | . | | | | | | | | | | HLSL | | | | | . | | | | | "-fresource-set-binding" | | | | | -fresource-set-binding [stage] | | | | | | | | | | | | | | | (descriptor set) binding | | | | | HLSL | | | | | register | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | register descriptor set | | | | | binding . | | | | | : # For a texture in register t1, | | | | | use set 1 binding 0. # For a texture in | | | | | register t2, use set 1 binding 3 glslc -x | | | | | hlsl foo.frag -fresource-set-binding t1 1 0 | | | | | t2 1 3 | | | | | stage | | | | | | | | | | . # Same as the | | | | | previous example, but the settings only apply | | | | | # to fragment (pixel) shaders. glslc -x hlsl | | | | | foo.frag -fresource-set-binding frag t1 1 0 | | | | | t2 1 3 "#line __FILE__ | | | | | " | | | | | | | | | | | | | | | glslc | | | | | | | | | | #line __FILE__ | | | | | . | | | | | | | | | | glslc | | | | | | | | | | GL_GOOGLE_cpp_style_line_directive | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | ( -E | | | | | ) | | | | | . 4 | | | | | | | | | | | | | | | | | | | | . | | | | | GLSL | | | | | | | | | | . 3 | | | | | (shader) | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | . 5 -- . | | | | | 3.30 | | | | | 4.50 | | | | | | | | | | | | | | | #line | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | __FILE__ << | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | .>> glslc | | | | | #line | | | | | __FILE__ | | | | | | | | | | . | | | | | | | | | | GL_GOOGLE_cpp_style_line_directive | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | #line | | | | | | | | | | | | | | | | | | | | : #line | | | | | line-number #line line-number | | | | | integer-source-string-index #line line-number | | | | | "source-filename" | | | | | source-filename | | | | | | | | | | | | | | | | | | | | () | | | | | . ( | | | | | | | | | | GLSL << | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | >>.) #line | | | | | | | | | | | | | | | __FILE__ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | o | | | | | | | | | | glslco | | | | | | | | | | | | | | | #line ( | | | | | ). glslc | | | | | | | | | | | | | | | GL_GOOGLE_include_directive include | | | | | GLSL | | | | | . | | | | | | | | | | | | | | | #include | | | | | | | | | | | | | | | . 4 | | | | | | | | | | | | | | | . | | | | | | | | | | . | | | | | | | | | | #include | | | | | | | | | | #extension GL_GOOGLE_include_directive : | | | | | enable | | | | | | | | | | . | | | | | | | | | | GL_GOOGLE_cpp_style_line_directive | | | | | | | | | | | | | | | GL_GOOGLE_include_directive | | | | | . | | | | | #include | | | | | | | | | | | | | | | (double quotes) . | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | -- | | | | | -- | | | | | | | | | | | | | | | | | | | | '/' '\' | | | | | . | | | | | | | | | | | | | | | | | | | | (undefined | | | | | behavior) . | | | | | | | | | | | | | | | f\ilename.vert | | | | | Unix | | | | | . | | | | | | | | | | #include | | | | | | | | | | | | | | | . | | | | | (escape) | | | | | | | | | | #include | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -I | | | | | | | | | | | | | | | . | | | | | | | | | | glslc | | | | | . | +-----------------+-----------------------+-----------------------+-----------------------------------------------+ 2026-07-28 `GLSLC`(1)