All Projects → danielscherzer → Glsl

danielscherzer / Glsl

VSIX Project that provides GLSL language integration.

Projects that are alternatives of or similar to Glsl

Shadertoy React
6kB "Shadertoy" like react component letting you easily render your fragment shaders in your React web projects, without having to worry about implementing the WebGL part.
Stars: ✭ 74 (-52.26%)
Mutual labels:  glsl, shaders
Gdx Vfx
LibGDX post-processing visual effects
Stars: ✭ 105 (-32.26%)
Mutual labels:  glsl, shaders
Noodlesplate
Offline Shader Editor with many cool features
Stars: ✭ 79 (-49.03%)
Mutual labels:  glsl, shaders
Glsl Worley
Worley noise implementation for WebGL shaders
Stars: ✭ 66 (-57.42%)
Mutual labels:  glsl, shaders
Retrace.gl
Create, ray trace & export programatically defined Signed Distance Function CSG geometries with an API suited for generative art - in your browser! 🎉
Stars: ✭ 149 (-3.87%)
Mutual labels:  glsl, shaders
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+7447.1%)
Mutual labels:  glsl, shaders
Glsleditor
Simple WebGL Fragment Shader Editor
Stars: ✭ 1,345 (+767.74%)
Mutual labels:  glsl, shaders
Curtainsjs
curtains.js is a lightweight vanilla WebGL javascript library that turns HTML DOM elements into interactive textured planes.
Stars: ✭ 1,039 (+570.32%)
Mutual labels:  glsl, shaders
Polygon Wind
Wind shader for low poly assets in Unity.
Stars: ✭ 119 (-23.23%)
Mutual labels:  glsl, shaders
Godot Motion Blur
A motion blur shader for Godot 3.0
Stars: ✭ 115 (-25.81%)
Mutual labels:  glsl, shaders
Fsynth
Web-based and pixels-based collaborative synthesizer
Stars: ✭ 146 (-5.81%)
Mutual labels:  glsl, shaders
Bookofshaders Godot
BookOfShaders in Godot Shader Language
Stars: ✭ 134 (-13.55%)
Mutual labels:  glsl, shaders
Glslcanvas
Simple tool to load GLSL shaders on HTML Canvas using WebGL
Stars: ✭ 1,067 (+588.39%)
Mutual labels:  glsl, shaders
Riftray
Step into the worlds of Shadertoy with an Oculus Rift.
Stars: ✭ 68 (-56.13%)
Mutual labels:  glsl, shaders
Solarsys
Realistic Solar System simulation with three.js
Stars: ✭ 49 (-68.39%)
Mutual labels:  glsl, shaders
Sildurs Shaders.github.io
Sildurs shaders website
Stars: ✭ 84 (-45.81%)
Mutual labels:  glsl, shaders
Godot Shaders
A large library of free and open-source shaders for the Godot game engine. Here, you'll get 2D and 3D shaders with playable demos.
Stars: ✭ 988 (+537.42%)
Mutual labels:  glsl, shaders
Shaderworkshop
Interactive GLSL fragment shaders editor made with Qt
Stars: ✭ 43 (-72.26%)
Mutual labels:  glsl, shaders
Glsl Optimizer
GLSL optimizer based on Mesa's GLSL compiler. Used to be used in Unity for mobile shader optimization.
Stars: ✭ 1,506 (+871.61%)
Mutual labels:  glsl, shaders
Wisdom Shaders
A Minecraft shaderspack. Offers high performance with high quality at the same time.
Stars: ✭ 132 (-14.84%)
Mutual labels:  glsl, shaders

GLSL language integration

Build status

Download this extension from the VS Gallery or get the CI build.


VSIX Project that provides GLSL language integration. Includes syntax highlighting, code completion (OpenGL 4.6 + identifiers in shader file), error tagging with squiggles and in error list (error list support is very alpha). As a default for error tagging a separate OpenGL thread is used for shader compiling on the primary graphics card. In the options menu you can select an external compiler executable to use for shader compilation.

See the change log for changes and road map.

Features

  • Syntax highlighting (default file extensions: glsl, frag, vert, geom, comp, tese, tesc, mesh, task, rgen, rint, rmiss, rahit, rchit, rcall) Set color under Options (Fonts and Colors)
  • Code completion (OpenGL 4.6 keywords + all identifiers in shader file)
  • Outlining
  • Error tagging with squiggles and in error list (error list support is very alpha)
    • For the file extension glsl the extension tries to auto detect the type of shader you use based on reserved words used in the shader code.
    • Note that GLSL_NV_ray_tracing shader types support for error tagging is currently only provided via an external compiler (like glslangValidator).
    • Note that support for Vulkan shader types is currently only provided via an external compiler (like glslangValidator).
    • Auto-detection of shader stage: If you use the glsl file extension the source code is searched for keywords only used in certain shader stages.
  • Configurable (file extensions, code compilation, highlighting style, compiler)
  • Controlling the extension with comments (see below)

Configuration (extension options)

  • Options of the extension can be found via the Visual Studio options dialog (Tools -> Options -> glsl language integration).
  • Configure Fonts and Colors via "Environment" -> "Fonts and Colors"). All "Display Items" of the extension start with GLSL.

Controlling the extension with comments

The original idea is from Clocktown. The discussion can be found under #15.

When developing shaders, it is common to split one shader into multiple files, reuse files, and generally generate some parts of code in the application in order to make things easier.

Unfortunately, this does not go well with extensions like this that compile these files without any knowledge about what happens on the side of the application. One way around this are special comments //! and //? that are transformed into code before compiling.

Some examples:

//! #version 430
//! #define WORK_GROUP_SIZE 32
#include "/utils.glsl" //! #include "../include/utils.glsl"

compiles into

#version 430
#define WORK_GROUP_SIZE 32
#include "../include/utils.glsl"

Everything in the line in front of the //! is removed and replaced by the code in the comment. //! is always expanded to code, while //? is only expanded if the file being compiled has not been included, e.g.:

File A.glsl

//? #version 430 // Only expanded if this file is compiled directly, not when included in B.glsl
// Lots of utility functions

File B.glsl

//! #version 430
#include "/utils.glsl" //! #include "A.glsl"

External compiler

In the option menu you can set a file path and arguments to an external compiler. If an existing path is given compilations will be executed by starting the given executable. You can use environment variables, like %SystemDrive% in your arguments and path. The shader code (including include code and all substitutions) will be written into a temporary file named "shader.vert|frag|comp|..." (extensions follow glslangValidator standard) in the current users temp path. This temporary shader file is then used as the first argument to the external compiler executable.

Errors and questions

Please us the GitHub Issue function to report errors or ask questions.

Contribute

Check out the contribution guidelines if you want to contribute to this project.

For cloning and building this project yourself, make sure to install the Extensibility Tools 2015 extension for Visual Studio which enables some features used by this project.

License

Apache 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].