glslang | reference front end for GLSL/ESSL , partial front end | Graphics library

 by   KhronosGroup C++ Version: main-tot License: Non-SPDX

kandi X-RAY | glslang Summary

kandi X-RAY | glslang Summary

glslang is a C++ library typically used in User Interface, Graphics applications. glslang has no bugs, it has no vulnerabilities and it has medium support. However glslang has a Non-SPDX License. You can download it from GitHub.

There are several components:.

            kandi-support Support

              glslang has a medium active ecosystem.
              It has 2520 star(s) with 750 fork(s). There are 123 watchers for this library.
              It had no major release in the last 12 months.
              There are 362 open issues and 1154 have been closed. On average issues are closed in 815 days. There are 16 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of glslang is main-tot

            kandi-Quality Quality

              glslang has 0 bugs and 0 code smells.

            kandi-Security Security

              glslang has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              glslang code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              glslang has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              glslang releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 300 lines of code, 19 functions and 5 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of glslang
            Get all kandi verified functions for this library.

            glslang Key Features

            No Key Features are available at this moment for glslang.

            glslang Examples and Code Snippets

            No Code Snippets are available at this moment for glslang.

            Community Discussions


            Using glslang to extract all uniform delcarations in a glsl file?
            Asked 2022-Mar-13 at 16:01

            I want to do some glsl parsing, in particular I want to find all uniform declarations, that includes SSBOS, samplers and images.

            To my understanding glslang provides access to the AST, meaning it can be a a robust time saver to avoid writing a brittle parser yourself.

            However I don't see a lot of documentation for the library on the git repo. There are some unit tests which gives me some generic idea of how it works but I am still not sure how I would iterate over the AST to find the text blocks corresponding to uniforms.

            I basically need to export them to a different file.



            Answered 2022-Mar-13 at 16:01

            TIntermTraverser is the way to go.

            In practice, you will define your custom traverser class by inheriting TIntermTraverser. For more details, read the doc comments on the top of the definition of TIntermTraverser. TIntermTraverser is used globally in the glslang project, so examining how it is used in the project will be a good help to understand the usage. glslang/MachineIndependent/intermOut.cpp is a good starting point, I think.

            I wrote the sample code for you, which is shown below.



            Copy output of custom target in one CSPROJ into another CSPROJ
            Asked 2022-Jan-14 at 05:57

            So I'm developing a game engine framework for myself in C#/.NET and I have been trying to simplify building shader files (the rendering engine consumes SPIR-V files, which I want to generate from GLSL source). My current approach has been to use a custom .targets file which is imported into a CSPROJ, and that file defines a custom target like this:



            Answered 2022-Jan-14 at 02:16

            I am not sure I understand your problem correctly, but if you want your .vert.spv copied to another folder use File.Copy()



            Is there a good HLSL to SPIR-V compiler?
            Asked 2021-Oct-14 at 23:43

            I'm writing a voxel engine in C++, and I'm implementing a Vulkan renderer. I've decided to write shaders in HLSL, and translate them via SPIRV-Cross. However, this brings me to a problem - glslang's HLSL compiler does not allow samplers. For example, this pixel shader:



            Answered 2021-Oct-14 at 23:43

            The official DirectX Shader Compiler (that's the one for HLSL 6 and above, not the old DxCompiler) actually supports transforming HLSL into SPIR-V. See their wiki page about it for an explanaition on how to build the compiler with that feature enabled, and how to use it.

            That said, uniform sampler2D tex; is actually not HLSL but GLSL code. In HLSL, you would write



            Async function return type forces Promise< T | undefined> instead of Promise
            Asked 2021-Mar-06 at 21:03

            I have some trouble understanding the return type of an async function. Here I would like to have a promise that returns only the type Promise< Glslang > and not Promise. Here is the code:



            Answered 2021-Mar-06 at 20:29

            First of all, you can simplify the code to always import the module. As I see you use Webpack to bundle the app, it will take care of importing and caching so you can delete ~75% of the logic - basically keep only this part:



            getting 'location' : too large for fragment output error while using glslang
            Asked 2020-Oct-28 at 06:06

            Iam using glslang SDK in my code to compile shader programs online, however i get the following errors for my fragment shader:

            GLSL Parsing Failed for: Text.frag ERROR: 0:6: 'location' : too large for fragment output ERROR: 1 compilation errors. No code generated.

            GLSL Linking Failed for: Text.frag ERROR: 0:6: 'location' : too large for fragment output ERROR: 1 compilation errors. No code generated.

            Assertion failed: node->getOp(), file C:\projects\glslang\SPIRV\GlslangToSpv.cpp, line 2412

            my vertex shader:



            Answered 2020-Oct-28 at 06:06

            Iam using glslang SDK in my code to compile the shader programs online, apparently in the glslang code you have to tweak some limitation parameters manually for glslang to accept shader variables that are normally not accepted, this issue was fixed by setting maxDrawBuffers to true as the following


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install glslang

            The following steps assume a Bash shell. On Windows, that could be the Git Bash shell or some other shell of your choosing.


            Test results should always be included with a pull request that modifies functionality. If you are writing unit tests, please use the Google Test framework and place the tests under the gtests/ directory. Integration tests are placed in the Test/ directory. It contains test input and a subdirectory baseResults/ that contains the expected results of the tests. Both the tests and baseResults/ are under source-code control. Google Test runs those integration tests by reading the test input, compiling them, and then compare against the expected results in baseResults/. The integration tests to run via Google Test is registered in various gtests/*.FromFile.cpp source files. glslangtests provides a command-line option --update-mode, which, if supplied, will overwrite the golden files under the baseResults/ directory with real output from that invocation. For more information, please check gtests/ directory's README. For the runtests script, it will generate current results in the localResults/ directory and diff them against the baseResults/. When you want to update the tracked test results, they need to be copied from localResults/ to baseResults/. This can be done by the bump shell script. You can add your own private list of tests, not tracked publicly, by using localtestlist to list non-tracked tests. This is automatically read by runtests and included in the diff and bump process.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone KhronosGroup/glslang

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Graphics Libraries


            by mrdoob


            by pixijs


            by pixijs


            by tensorflow


            by google

            Try Top Libraries by KhronosGroup


            by KhronosGroupHTML


            by KhronosGroupC++


            by KhronosGroupC++


            by KhronosGroupJavaScript


            by KhronosGroupHTML