Shader之学习笔记六

加群获取unity引擎源代码580392083;

Shader "Unity Shaders Book/Chapter 5/FalseColor"
{
	SubShader{
		Pass{
			CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				 
				//集合了最常用的函数、宏、结构体
				#include "UnityCG.cginc"
				//使用一个结构体来定义顶点着色器的输出
				struct v2f{
					float4 pos:SV_POSITION;//存储顶点在裁剪空间位置信息
					fixed4 color:COLOR0;				
				};

				//顶点着色器和片元着色器之间的通信
				v2f vert(appdata_full v){
					v2f o;//定义一个输出对象		
					o.pos = mul(UNITY_MATRIX_MVP,v.vertex); //UNITY_MATRIX_MVP观察模型投影矩阵
					//可视化法线方向
					o.color = fixed4(v.normal*0.5+fixed3(0.5,0.5,0.5),1.0);
					//可视化切线方向
					o.color = fixed4(v.tangent.xyz*0.5+fixed3(0.5,0.5,0.5),1.0);
					//可视化副切线方向	
					fixed3 binormal = cross(v.normal,v.tangent.xyz)*v.tangent.w;
					o.color = fixed4(binormal*0.5+fixed3(0.5,0.5,0.5),1.0);
				    //可视化第一组纹理坐标
					o.color=fixed4(v.texcoord.xy,0.0,1.0);
					//可视化第二组纹理坐标
					o.color=fixed4(v.texcoord1.xy,0.0,1.0);

				    //可视化第一组纹理坐标的小数部分
					//frac-->fractional :部分的 该函数表示返回指定数据的小数部分
					//saturate : 把输入值限制到[0, 1]之间。
					//any:测试x的任何组件是否为非零
					o.color = frac(v.texcoord);
					if(any(saturate(v.texcoord)-v.texcoord)){
						o.color=0.5;
					}
					o.color.a=1.0;
					



					return o;

				}

			fixed4 frag(v2f i):SV_Target{
				return i.color;
			}

			ENDCG

		}
	}

}
 
 
 
 





 
发布了70 篇原创文章 · 获赞 68 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/Rose_Girls/article/details/55520789