Language server for GLSL (autocomplete, goto-definition, formatter, and more)
				
			
		| .github/workflows | ||
| resources | ||
| spec | ||
| src | ||
| tests | ||
| .gitignore | ||
| .gitmodules | ||
| build.zig | ||
| justfile | ||
| LICENSE.md | ||
| README.md | ||
| release.sh | ||
glsl_analyzer
Language server for GLSL (OpenGL Shading Language).
Features
- Completion
- User-defined variables/functions.
- Built-in types (e.g., vecN,matNxM,texture2D, etc.)
- Built-in functions (e.g., length,imageLoad,packUnorm4x8)
- Includes all extensions
- Fields
 
- Goto Definition
- Inline hover documentation for all builtin and extension functions/variables
- Support for #include
- Formatter
Screenshots
Completion
Formatting
Goto-Definition
In the pipeline
- Support for refactors (renaming)
Installation
We provide precompiled binaries for Linux, MacOS and Windows on the
Releases page.
Make sure to copy it somewhere under your PATH environment variable (e.g.
~/.local/bin on Linux).
Building from Source
zig build install -Doptimize=ReleaseSafe --prefix ~/.local/
Tested using zig 0.14.0.
Usage
By default glsl_analyzer communicates over stdin/stdout:
glsl_analyzer
However, you can configure it to use a specific port (TCP) using the following command:
glsl_analyzer --port <PORT>
Neovim
nvim-lspconfig comes with support for glsl_analyzer. Simply add the following to your lua config:
require'lspconfig'.glsl_analyzer.setup{}
Visual Studio Code
Install the
glsl-analyzer
extension from the marketplace. It will automatically download the latest precompiled binary for your platform.


