mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Be cheeky and pack extra overdraw levels into slight colour changes
* Since we decode the visual colours into an integer by looking them up in the overdraw ramp rather than re-running to get an integer return, we make some invisibly subtly different colours above the highest overdraw colour, and use these to tell overdraw levels above 20.
This commit is contained in:
@@ -360,11 +360,13 @@ float4 RENDERDOC_CheckerboardPS(float4 IN : SV_Position) : SV_Target0
|
||||
// https://github.com/selfshadow/demos/blob/master/QuadShading/QuadShading.fx
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define NUM_RAMP_COLOURS 128
|
||||
|
||||
RWTexture2DArray<uint> overdrawUAV : register(u0);
|
||||
Texture2DArray<uint> overdrawSRV : register(t0);
|
||||
cbuffer overdrawRampCBuf : register(b0)
|
||||
{
|
||||
const float4 overdrawRampColours[21];
|
||||
const float4 overdrawRampColours[NUM_RAMP_COLOURS];
|
||||
};
|
||||
|
||||
[earlydepthstencil]
|
||||
@@ -388,7 +390,7 @@ void RENDERDOC_QuadOverdrawPS(float4 vpos : SV_Position, uint c0 : SV_Coverage)
|
||||
|
||||
float4 ToColour(uint v)
|
||||
{
|
||||
return overdrawRampColours[min(v, 20)];
|
||||
return overdrawRampColours[min(v, NUM_RAMP_COLOURS-1)];
|
||||
}
|
||||
|
||||
float4 RENDERDOC_QOResolvePS(float4 vpos : SV_POSITION) : SV_Target0
|
||||
|
||||
@@ -2412,7 +2412,7 @@ ResourceId D3D11DebugManager::RenderOverlay(ResourceId texid, TextureDisplayOver
|
||||
D3D11_TEXTURE2D_DESC realTexDesc;
|
||||
realTexDesc.BindFlags = D3D11_BIND_RENDER_TARGET|D3D11_BIND_SHADER_RESOURCE;
|
||||
realTexDesc.Usage = D3D11_USAGE_DEFAULT;
|
||||
realTexDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
realTexDesc.Format = DXGI_FORMAT_R16G16B16A16_UNORM;
|
||||
realTexDesc.ArraySize = 1;
|
||||
realTexDesc.MipLevels = 1;
|
||||
realTexDesc.CPUAccessFlags = 0;
|
||||
@@ -2507,7 +2507,7 @@ ResourceId D3D11DebugManager::RenderOverlay(ResourceId texid, TextureDisplayOver
|
||||
|
||||
D3D11_RENDER_TARGET_VIEW_DESC rtDesc;
|
||||
rtDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
|
||||
rtDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
rtDesc.Format = DXGI_FORMAT_R16G16B16A16_UNORM;
|
||||
rtDesc.Texture2D.MipSlice = 0;
|
||||
|
||||
if(realTexDesc.SampleDesc.Count > 1 ||
|
||||
@@ -3045,7 +3045,7 @@ ResourceId D3D11DebugManager::RenderOverlay(ResourceId texid, TextureDisplayOver
|
||||
m_pImmediateContext->VSSetShader(m_DebugRender.FullscreenVS, NULL, 0);
|
||||
m_pImmediateContext->PSSetShader(m_DebugRender.QOResolvePS, NULL, 0);
|
||||
|
||||
ID3D11Buffer *buf = MakeCBuffer((float *)&overdrawRamp[0].x, sizeof(Vec4f)*21);
|
||||
ID3D11Buffer *buf = MakeCBuffer((float *)&overdrawRamp[0].x, sizeof(overdrawRamp));
|
||||
|
||||
m_pImmediateContext->PSSetConstantBuffers(0, 1, &buf);
|
||||
|
||||
|
||||
+108
-1
@@ -33,7 +33,7 @@
|
||||
#include "quat.h"
|
||||
|
||||
// colour ramp from http://www.ncl.ucar.edu/Document/Graphics/ColorTables/GMT_wysiwyg.shtml
|
||||
const Vec4f overdrawRamp[21] =
|
||||
const Vec4f overdrawRamp[128] =
|
||||
{
|
||||
Vec4f(0.000000f, 0.000000f, 0.000000f, 0.0f),
|
||||
Vec4f(0.250980f, 0.000000f, 0.250980f, 1.0f),
|
||||
@@ -56,6 +56,113 @@ const Vec4f overdrawRamp[21] =
|
||||
Vec4f(1.000000f, 0.376471f, 0.752941f, 1.0f),
|
||||
Vec4f(1.000000f, 0.627451f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.878431f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.878600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.878700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.878800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.878900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.879900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.880900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.881900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.882900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.883900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.884900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.885900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.886900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.887900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888200f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888300f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888400f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888500f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888600f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888700f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888800f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.888900f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.889000f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.889100f, 1.000000f, 1.0f),
|
||||
Vec4f(1.000000f, 0.889200f, 1.000000f, 1.0f),
|
||||
};
|
||||
|
||||
static inline size_t matIdx(const size_t x, const size_t y) { return x+y*4; }
|
||||
|
||||
@@ -75,7 +75,7 @@ struct Vec4f
|
||||
float x, y, z, w;
|
||||
};
|
||||
|
||||
extern const Vec4f overdrawRamp[21];
|
||||
extern const Vec4f overdrawRamp[128];
|
||||
|
||||
inline Vec3f operator *(const Vec3f &a, const float b)
|
||||
{
|
||||
|
||||
@@ -291,9 +291,9 @@ bool ReplayOutput::PickPixel(ResourceId tex, bool customShader, uint32_t x, uint
|
||||
{
|
||||
for(size_t c=0; c < ARRAY_COUNT(overdrawRamp); c++)
|
||||
{
|
||||
if(fabs(ret->value_f[0] - overdrawRamp[c].x) < 0.001f &&
|
||||
fabs(ret->value_f[1] - overdrawRamp[c].y) < 0.001f &&
|
||||
fabs(ret->value_f[2] - overdrawRamp[c].z) < 0.001f)
|
||||
if(fabs(ret->value_f[0] - overdrawRamp[c].x) < 0.00004f &&
|
||||
fabs(ret->value_f[1] - overdrawRamp[c].y) < 0.00004f &&
|
||||
fabs(ret->value_f[2] - overdrawRamp[c].z) < 0.00004f)
|
||||
{
|
||||
ret->value_i[0] = (int32_t)c;
|
||||
ret->value_i[1] = 0;
|
||||
|
||||
Reference in New Issue
Block a user