Shader学习10【shader如何进行Debug】

1:使用假彩色图像

     假彩色图像(false- color image)指的是用假彩色技术生成的一种图像。与假彩色图像对应的是照片这种真彩色图像(true-color image)。一张假彩色图像可以用于可视化一些数据,那么如何用它来对Shader进行调试呢?

     主要思想是:我们可以吧需要调试的变量映射到【0,1】之间,把它们作为颜色输出到屏幕上,然后通过屏幕上显示的像素颜色来判断这个值是否正确,需要注意的是,颜色的分量范围在【0,1】之间,因此我们需要小心处理需要调试的变量范围,如果我们已知它的值域范围,可以先把它映射到【0,1】之间再输出,如果你不知道一个变量的范围(这往往说明你对这个Shader中的运算还不了解,),我们就只能不停的实验,一个提示是:颜色分量中任何大于1的数值将会被设置为1,而任何小于0的数值会被设置为0.因此我们可以尝试使用不同的映射,直到颜色发生变化为止,

      如果我们调试的是一个一维数据,那么可以选择一个单独的颜色分量(如R分量)进行输出,而把其他颜色分量置为0。如果是多维数据,可以选择对它的每一个分量单独调试,或者选择多个颜色分量进行输出。

      作为实例,我们可以使用假彩色图像的方式来可视化一些模型数据,如法线,切线,纹理,坐标,顶点颜色,以及它们之间的运算结果等,我们使用的代码如下:

       Pass

{

       #pragma vertex vert

       #pragma fragment frag

       #include  "unityCG,cginc"

       Struct v2f

      {

          float4 pos:SV_POSITION;

          fixed4 color:COLOR

          

      };

      v2f vert(appdata_full v)

     {

         v2f o;

         o.pls=mul(UNITY_MATRIX_MVP,v.vertex);

         //可视化发现方向

         o.color = fixed(v.normal * 0.5+fixed3(0.5,0.5,0.5),1.0);

     }

}

posted @ 2021-09-18 20:58  专杀小三  阅读(780)  评论(1编辑  收藏  举报