Skip to content

Language server for GLSL (autocomplete, goto-definition, formatter, and more)

License

Notifications You must be signed in to change notification settings

nolanderc/glsl_analyzer

Repository files navigation

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

completion

Formatting

formatting

Goto-Definition

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.13.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.