Ref: https://github.com/KhronosGroup/glslang/issues/2872 Ref: https://github.com/KhronosGroup/glslang/commit/81cc10a498b25a90147cccd6e8939493c1e9e20e After discussions with the glslang developers, it appears that the parameters in glslang's setEnvInput() function are a bit more geared towards SPIRV that the documentation implied. After the glslang commit above, and discussions with the developer, it seems that the 3rd parameter to setEnvInput() should only be set to EShClientOpenGL if you want to enable the ARB_gl_spirv extension. The 4th parameter to setEnvInput() is version, but it is used to indicate the version of either the KHR_vulkan_glsl extention for vulkan, or the ARB_gl_spirv extension for OpenGL with SPIR-V. So, if the shader type is neither ShaderType::Vulkan, nor ShaderType::GLSPIRV, we should specify glslang::EShClientNone for the 3rd parameter and 0 for the 4th parameter of setEnvInput(). This doesn't actually impact renderdoc with the currently bundled glslang 8.13.3743, because they failed to pass the environment through during pre-processing. But, this changed in this glslang commit in 11.2.0: * 6274ec5c ("Pass environment through PreprocessDeferred") * https://github.com/KhronosGroup/glslang/commit/6274ec5c After this change, renderdoc passes the environment through to the pre-processor, and with the current parameters to setEnvInput(), glslang will start to define GL_SPIRV in the shaders during pre-processing. Then, in renderdoc's glsl_globals.h, GL_SPIRV causes the pre-processor to set: * #define IO_LOCATION(l) layout(location = l) which then causes Mesa to produce this error when compiling the shader: * GL_VERTEX_SHADER compile error: 0:239(2): error: shader output explicit location requires GL_ARB_separate_shader_objects extension or GLSL 4.20 Signed-off-by: Jordan Justen <jljusten@gmail.com>
RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows 7 - 10, Linux, Android, Stadia, and Nintendo Switch™. It is completely open-source under the MIT license.
If you have any questions, suggestions or problems or you can create an issue here on github, email me directly or come into IRC or Discord to discuss it.
To install on windows run the appropriate installer for your OS (64-bit | 32-bit) or download the portable zip from the builds page. The 64-bit windows build fully supports capturing from 32-bit programs. On linux only 64-bit x86 is supported - there is a precompiled binary tarball available, or your distribution may package it. If not you can build from source.
- Downloads: Stable and nightly builds: https://renderdoc.org/builds ( Symbol server )
- Documentation: HTML online, CHM in builds, Videos
- Contact: baldurk@baldurk.org, #renderdoc on OFTC IRC, Discord server
- Code of Conduct: Contributor Covenant
- Information for contributors: All contribution information, Compilation instructions, Roadmap
- Community extensions: Extensions repository
Screenshots
|
|
|---|---|
|
|
API Support
| Windows | Linux | Android | Stadia | |
|---|---|---|---|---|
| Vulkan | ✔️ | ✔️ | ✔️ | ✔️ |
| OpenGL ES 2.0 - 3.2 | ✔️ | ✔️ | ✔️ | N/A |
| OpenGL 3.2 - 4.6 Core | ✔️ | ✔️ | N/A | N/A |
| D3D11 & D3D12 | ✔️ | N/A | N/A | N/A |
| OpenGL 1.0 - 2.0 Compat | ✖️ | ✖️ | N/A | N/A |
| D3D9 & 10 | ✖️ | N/A | N/A | N/A |
| Metal | N/A | N/A | N/A | N/A |
- Nintendo Switch™ support is distributed separately for authorized developers as part of the NintendoSDK. For more information, consult the Nintendo Developer Portal.
Downloads
There are binary releases available, built from the release targets. If you just want to use the program and you ended up here, this is what you want :).
It's recommended that if you're new you start with the stable builds. Nightly builds are available every day from the v1.x branch here if you need it, but correspondingly may be less stable.
Documentation
The text documentation is available online for the latest stable version, as well as in renderdoc.chm in any build. It's built from restructured text with sphinx.
As mentioned above there are some youtube videos showing the use of some basic features and an introduction/overview.
There is also a great presentation by @Icetigris which goes into some details of how RenderDoc can be used in real world situations: slides are up here.
License
RenderDoc is released under the MIT license, see LICENSE.md for full text as well as 3rd party library acknowledgements.
Compiling
Building RenderDoc is fairly straight forward on most platforms. See Compiling.md for more details.
Contributing & Development
I've added some notes on how to contribute, as well as where to get started looking through the code in Developing-Change.md. All contribution information is available under CONTRIBUTING.md.
