RenderDoc is a stand-alone graphics debugging tool.
This version contains support for pixel history on D3D12, support for the slang shader language and tool, and other smaller improvements and bugfixes.
NOTE: Recent AMD drivers have a problem that for Vulkan and GL may cause problems creating swapchains. On UE5 this can cause fatal errors on or shortly after startup when using Vulkan, and this may also appear as the use of D3D12 in applications that don't use the API. This is an AMD driver issue which has been reported and is planned to be fixed on the AMD side.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
ReplayController.DebugPixel
now takes a structure DebugPixelInputs
to determine parameters like sample or primitive, and now allows setting the desired multiview or layered rendering view as well.CaptureContext.ViewPixelHistory
takes a new parameter view
with the desired multiview or layered rendering view.VK_KHR_calibrated_timestamps
VK_KHR_index_type_uint8
VK_KHR_line_rasterization
VK_KHR_load_store_op_none
VK_KHR_vertex_attribute_divisor
VK_EXT_texture_compression_astc_hdr
(was previously implemented but never reported)Get*ProcAddr
.vkEnumeratePhysicalDeviceGroups
if user passes smaller-than-queried array to enumeration.This version contains some quality of life fixes and expanded SPIR-V debugging support, as well as a new mesh visualisation feature. There are also some important bugfixes for D3D11 and mesh shader usage, and a workaround for a recent nvidia driver bug.
NOTE: Recent AMD drivers have a problem that for Vulkan and GL may cause problems creating swapchains. On UE5 this can cause fatal errors on or shortly after startup when using Vulkan, and this may also appear as the use of D3D12 in applications that don't use the API. This is an AMD driver issue which has been reported and is planned to be fixed on the AMD side.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
The UI now has a configuration option to set consistent formatting of byte offset and size fields in the UI.
By default such fields are displayed as decimal numbers up to a threshold value and then larger values are displayed as hexadecimal, but with the configuration option it can be forced to be either always decimal numbers or always hexadecimal.
The SPIR-V debugger now supports debugging of shaders using the buffer device address extension. Pointers in this fashion are displayed the same way as GPU pointers elsewhere in the UI, with a resource link that jumps to a buffer viewer with the given pointer type.
Added a new 'mesh exploder' visualisation feature contributed by Dan Hawson which allows visualisation of mesh topology via a tweakable per-vertex offset. This can show poor or good vertex sharing by revealing vertices which share positions but are distinct.
SolidShade
enum has been renamed to Visualisation
, and similarly the solidShadeMode
member of MeshDisplay
is renamed to visualisationMode
.Open Capture with Options
to discourage permanently enabling validation.COLOR1
with no COLOR0
).This version contains support for mesh shaders on both Vulkan and D3D12. In addition there are a number of bugfixes including some crashes and a problem affecting recent NV drivers on UE5, as well as some other general improvements.
NOTE: Recent AMD drivers have a problem that for Vulkan and GL may cause problems creating swapchains. On UE5 this can cause fatal errors on or shortly after startup when using Vulkan, and this may also appear as the use of D3D12 in applications that don't use the API. This is an AMD driver issue which has been reported but it's unclear at this point if a workaround is possible.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
Mesh shaders are supported with all existing features like pixel history, pipeline state, shader editing, shader printf on Vulkan, as would be expected.
The mesh viewer has been updated to display the relevant information. For task/amplification shaders it will display both the payload output and dispatched size from each threadgroup. Whether or not they are used, the final output from the mesh shader will be displayed for each meshlet that produced some outputs.
The 3D preview has also been updated to show a new solid shading mode which colourises different meshlets with different colours.
(screenshots courtesy of niagara)
It is also possible to filter all views down to either a single meshlet, or a single task and all meshlets produced.
MeshDataStage.Unknown
enum value was removed.VK_EXT_extended_dynamic_state3
extension.gl_PerVertex
noise.Stencil
overlay to None
overlay.VkG*PA
for future core versions not enabled.VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT
.glTexImage*
APIs and non-zero UNPACK_ROW_LENGTH
.This release includes a number of bugfixes since v1.28, as well as improved handling of non-deterministic ExecuteIndirect calls on D3D12.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
An extra note for anyone with a fork or local changes to RenderDoc - the version of clang-format used upstream has been updated to 15.0. This may necessitate reformats of pending changes if you intend to upstream them.
ShaderProcessingTool.CompileShader
has a new parameter spirvVer
which can be specified to give the SPIR-V version to use when compiling. If left blank the existing default behaviour will be used. Shader reflection data with a SPIR-V version will have that listed under a new @spirver
compile flag.OpLogicalNot
.OpExecutionModeId
specifying compute threadgroup size.#line XXX ""
.This release includes a number of bugfixes since v1.27, and includes a new capture option to aid capturing on Vulkan memory-constrained systems.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
renderdoc.ResultCode.ReplayOutOfMemory
and renderdoc.ResultCode.ReplayDeviceLost
have been renamed to renderdoc.ResultCode.OutOfMemory
and renderdoc.ResultCode.DeviceLost
.glCopyImageSubData
on GLES copying from uncompressed to compressed textures.VK_EXT_provoking_vertex
VK_EXT_attachment_feedback_loop_dynamic_state
VK_EXT_image_2d_view_of_3d
glGetTexImage
.Set*Root32BitConstants
is called with 0 constants.glClear*
.This release includes a number of bugfixes since v1.26, as well as support for the latest D3D12 SDK 1.610.1.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
D3D12Sampler.borderColor
has been split into D3D12Sampler.borderColorType
and D3D12Sampler.borderColorValue
, and similarly for VKSampler.borderColor
into VKSampler.borderColorType
and VKSampler.borderColorValue
, to allow for integer border colour types.D3D12RasterizerState.multisampleEnable
and D3D12RasterizerState.lineRasterMode
have been removed and replaced with D3D12RasterizerState.lineRasterMode
of type LineRaster
.windows.storage.dll
which spams a huge number of LoadLibrary calls.This release enables the pixel history feature for OpenGL captures, with an implementation contributed by Orson Baines, Zi Ming He, John Kattukudiyil, Ting Cai, and Tony Tascioglu. In addition it contains a number of improvements and bugfixes over v1.25.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
This release primarily collects a number of bug fixes since v1.24, though it also includes provided support for nvidia's counter SDK (which requires manual installation) as well as a number of vulkan extensions.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
VKBindingElement.ycbcrSwizzle
has been renamed to VKBindingElement.samplerSwizzle
.VK_EXT_rasterization_order_attachment_access
VK_EXT_acquire_drm_display
VK_EXT_surface_maintenance1
VK_EXT_swapchain_maintenance1
VK_EXT_border_color_swizzle
VK_EXT_non_seamless_cube_map
VK_EXT_depth_clamp_zero_one
VK_EXT_image_view_min_lod
VkShaderModuleCreateInfo
on a pNext chain in compute PSOs as well as graphics PSOs.This is a hotfix release, containing a fix for a common D3D12 crash that could happen when analysing a capture using bindless resource access. There are no other changes on any API from v1.23.
The crash affected captures using bindless resource access, and would happen if the mesh viewer is open (even in the background) when a texture viewer overlay was enabled. Since the first two conditions are very commonly true and the effect is a crash, I considered this significant enough to do a hotfix release rather than wait for the normal release cycle.
Updated binary builds with installers, zips and tarballs are available on renderdoc.org now.
This release comes with a number of optimisations for Vulkan and D3D12 captures, especially those with 'bindless' style approaches with many resources bound and accessible at once. There should be a general improvement of performance across capture and replay, if you find that you are having problems with slowdown do please get in touch so that I can investigate since I can only work with what I'm aware of.
In this version is also full support for vulkan source-level shader debugging, from any compiler that can produce NonSemantic.Shader.DebugInfo.100
debug annotations. On glslang this can be produced via the -gVS
switch, and on dxc with -fspv-debug=vulkan-with-source
. For more information consult your shader compiler's documentation.
As always binary builds with installers, zips and tarballs are available on renderdoc.org.
VKDescriptorBinding.type
has been removed as types are no longer uniform per-type with mutable descriptors. This element has been moved into VKBindingElement.type
.uint8_t
or int32_t
.$HOME
as a backup if getpwuid
fails.VK_EXT_mutable_descriptor_type
VK_AMD_memory_overallocation_behavior
VK_EXT_pageable_device_local_memory
vkCreateDevice
when creating multiple simultaneous logical devices, which is legal but RenderDoc does not support.vkEnumeratePhysicalDevices
.VkPipelineViewportDepthClipControlCreateInfoEXT
.0xffffffff
being used in desc structs.