您的位置:首页 > 移动开发 > Unity3D

Shader之学习笔记六

2017-02-17 20:04 253 查看
加群获取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

}
}

}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息