This extension uses shaderc to lint and compile GLSL, and optionally output SPIRV. The aim is to provide a nice way to edit, lint, and compile GLSL shaders targeted at Vulkan, but it may work for other purposes. It has full support for the #include directive. It also adds build commands which output SPIRV files.
Commands to Build and Build All are made available when you are editing glsl files. These commands will export the compiled SPIRV result from shadrec to a configurable directory. 'Build All' will compile and save out SPIRV for all glsl files in your workspace. By default these commands are bound to ctrl+B and ctrl+shift+B (cmd+B/cmd+shift+B on macOS).
This extension now tracks #include dependencies, so when you build a file, all files in the workspace that #include that file will also be compiled.
If you name files with the extensions '.frag', '.vert', '.tesc', '.tese', '.geom', or '.comp', then everything should just work and shaderc will determine the stage for you. Otherwise, you will need to add the glsl file association for your custom extension in your VSCode settings.json, and provide the shader stage using #pragma shader_stage() as documented here.
Shaderc Linter offers the following settings: