简单介绍一下如何在RenderDoc中使用Channels设定为Custom后的Shader;
官方文档:How do I use a custom visualisation shader?
- 在Texture View中设置Channels为Custom;
- 输入新创建的Shader名称及后缀;
- 点击绿色加号创建Custom Shader,创建的hlsl保存会在
C:\Users\PC\AppData\Roaming\qrenderdoc
路径下。
- 其顶栏有4给功能:
Find
:文件内搜索/替换;Bookmark
:设置书签,可以快速跳转;Refresh
:修改后的Shader需要Refresh后才能生效。Insert...
:快速添加内置的一些变量;
如何获取到当前纹理并处理
添加Point & Linear Samplers
和Texture Resources
,通常当前纹理都是texDisplayTex2DArray
中的第一个元素,采样即可得到当前颜色。
点击查看代码
/////////////////////////////////////
// Resources //
/////////////////////////////////////
// Float Textures
Texture1DArray<float4> texDisplayTex1DArray : register(RD_FLOAT_1D_ARRAY_BINDING);
Texture2DArray<float4> texDisplayTex2DArray : register(RD_FLOAT_2D_ARRAY_BINDING);
Texture3D<float4> texDisplayTex3D : register(RD_FLOAT_3D_BINDING);
Texture2DMSArray<float4> texDisplayTex2DMSArray : register(RD_FLOAT_2DMS_ARRAY_BINDING);
Texture2DArray<float4> texDisplayYUVArray : register(RD_FLOAT_YUV_ARRAY_BINDING);
// only used on D3D
Texture2DArray<float2> texDisplayTexDepthArray : register(RD_FLOAT_DEPTH_ARRAY_BINDING);
Texture2DArray<uint2> texDisplayTexStencilArray : register(RD_FLOAT_STENCIL_ARRAY_BINDING);
Texture2DMSArray<float2> texDisplayTexDepthMSArray : register(RD_FLOAT_DEPTHMS_ARRAY_BINDING);
Texture2DMSArray<uint2> texDisplayTexStencilMSArray : register(RD_FLOAT_STENCILMS_ARRAY_BINDING);
// Int Textures
Texture1DArray<int4> texDisplayIntTex1DArray : register(RD_INT_1D_ARRAY_BINDING);
Texture2DArray<int4> texDisplayIntTex2DArray : register(RD_INT_2D_ARRAY_BINDING);
Texture3D<int4> texDisplayIntTex3D : register(RD_INT_3D_BINDING);
Texture2DMSArray<int4> texDisplayIntTex2DMSArray : register(RD_INT_2DMS_ARRAY_BINDING);
// Unsigned int Textures
Texture1DArray<uint4> texDisplayUIntTex1DArray : register(RD_UINT_1D_ARRAY_BINDING);
Texture2DArray<uint4> texDisplayUIntTex2DArray : register(RD_UINT_2D_ARRAY_BINDING);
Texture3D<uint4> texDisplayUIntTex3D : register(RD_UINT_3D_BINDING);
Texture2DMSArray<uint4> texDisplayUIntTex2DMSArray : register(RD_UINT_2DMS_ARRAY_BINDING);
/////////////////////////////////////
/////////////////////////////////////
// Samplers //
/////////////////////////////////////
SamplerState pointSampler : register(RD_POINT_SAMPLER_BINDING);
SamplerState linearSampler : register(RD_LINEAR_SAMPLER_BINDING);
/////////////////////////////////////
float4 SampleTexture2DArray(float2 uv, int sliceIndex)
{
return texDisplayTex2DArray.Sample(linearSampler, float3(uv, sliceIndex));
}
float4 main(float4 pos : SV_Position, float4 uv : TEXCOORD0) : SV_Target0
{
float3 m_color = SampleTexture2DArray(uv.xy, 0).rgb;
return float4(m_color.b, m_color.g, m_color.r,1);
}
效果:
标签:RenderDoc,自定义,register,BINDING,Shader,FLOAT,RD,Texture2DArray,ARRAY From: https://www.cnblogs.com/PAdiD/p/18597492