首页 > 其他分享 >RenderDoc在Texture View中使用自定义的Shader

RenderDoc在Texture View中使用自定义的Shader

时间:2024-12-12 17:10:01浏览次数:4  
标签:RenderDoc 自定义 register BINDING Shader FLOAT RD Texture2DArray ARRAY

简单介绍一下如何在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 SamplersTexture 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

相关文章

  • 自定义typeHandler将包含经纬度对象插入到mysql的point类型的字段中
    博客:https://www.emanjusaka.top公众号:emanjusaka的编程栈下面给出关键部分代码,完整代码请访问原文地址mysql中的point类型在java中没有对应的类型匹配,需要我们自定义typeHandler去处理。环境参数SpringBootMybatisPlusmysql代码实现typeHandlerGeomPointTyp......
  • 转载:【AI系统】自定义计算图 IR
    模型转换涉及对模型的结构和参数进行重新表示。在进行模型转换时,通常需要理解模型的计算图结构,并根据目标格式的要求对其进行调整和转换,可能包括添加、删除或修改节点、边等操作,以确保转换后的计算图能够正确地表示模型的计算流程。本文主要介绍自定义计算图的方法以及模型转换的......
  • 转载:【AI系统】自定义计算图 IR
    模型转换涉及对模型的结构和参数进行重新表示。在进行模型转换时,通常需要理解模型的计算图结构,并根据目标格式的要求对其进行调整和转换,可能包括添加、删除或修改节点、边等操作,以确保转换后的计算图能够正确地表示模型的计算流程。本文主要介绍自定义计算图的方法以及模型转换的......
  • 【Java编程】如何自定义一个类加载器,加载自己指定的类?
    在Java中,类加载器(ClassLoader)负责把字节码文件(.class文件)加载到JVM中,Java的类加载机制给我们提供了高度的灵活性。通常情况下,Java会用默认的类加载器去加载类,但如果想加载特定路径的类,或者加载特定格式的文件,就需要自己写一个类加载器。本文将带你一步步实现一个简单的自......
  • QT自定义控件实践--滑动组件
    概述             本篇文章,会逐步带您了解,如何自定义一个QT的滑动组件操作步骤选择合适的基类继承:我们命名这个自定义控件为MySlipButton,继承自QWidget添加成员变量:根据滑动组件的特性,添加合适的成员变量,如当前值、最小值、最大值、滑块的位置等。......
  • [图形编程] 【unity】【游戏开发】Shader基础7:着色器编程语言-HLSL、GLSL与CG的比较
    在现代图形渲染中,着色器编程是核心内容之一,尤其在GPU上执行图形处理时,着色器决定了渲染效果的实现。着色器的编写通常使用高级编程语言,这些语言专门设计用于编写图形程序,虽然它们并不完全等同于像Python这样的通用高级语言,但相比汇编语言,它们提供了更高层次的抽象。常见的着......
  • c#委托 ,自定义函数中使用委托
    Func<int,int,int>t=(j,i)=>i+j;//自定义委托Func表示有返回值,返回两个的和Console.WriteLine(t(6,4));//输出10Func<int,bool>a=delegate(intj){returnj>0;};Console.WriteLine(a(6));......
  • ShaderGraphs和ASE对比
      大家好,我是阿赵。  之前我写了一些关于Unity可视化Shader编写工具AmplifyShaderEditor(简称ASE)的使用介绍的文章。有不少网友给我留言,内容主要有2点:怎么我的Unity里面没有ASE插件?为什么要用ASE?用ShaderGraph应该会更好?  我个人的看法,使用什么工具是次要的,理解思......
  • vue el-select封装一个滚动加载更多下拉选项的自定义指令
    没有什么讲究,直接上代码模板部分<el-selectv-model="operator"filterableremotesize="small"reserve-keywordplaceholder="请输入经办人姓名":......
  • Monitor Asset Manager 和 MonitorInfoView 非常合适;而对于需要更多自定义和修改 EDID
    扩展显示识别数据(EDID,ExtendedDisplayIdentificationData)是显示设备(如显示器、电视、投影仪等)与计算机、显卡等设备之间交换的一种数据格式。它包含了显示设备的基本信息,如分辨率、刷新率、色彩深度、支持的音频格式等。这些信息能够帮助计算机自动识别和配置显示设备的最佳设......