标签:
转自 http://www.itnose.net/detail/6095974.html
struct appdata_base {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};
struct appdata_tan {
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};
struct appdata_full {
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
float4 texcoord1 : TEXCOORD1;
fixed4 color : COLOR;
};
可以直接根据需要选择合适的输入结构体,我们可以书写这样形式的代码:
Pass{CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct vertexOutput {
float4 pos : SV_POSITION;
float4 col : TEXCOORD0;
};
vertexOutput vert(appdata_full input)
{
vertexOutput output;
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
output.col = input.texcoord;
return output;
}
float4 frag(vertexOutput input) : COLOR
{
return input.col;
}
ENDCG}


output.col = float4(input.texcoord.x, 0.0, 0.0, 1.0);
output.col = float4(0.0, input.texcoord.y, 0.0, 1.0);可以想象这个球体的南极应该是黑色(0,0,0,1),北极应该是绿色(0,1,0,1)
output.col = float4((input.normal + float3(1.0, 1.0, 1.0)) / 2.0, 1.0);
output.col = input.texcoord - float4(1.5, 2.3, 1.1, 0.0); //rgba区间分别为[-1.5,0.5],[-2.3,-1.3],[-1.1,-0.1],[0,1],不能与颜色建立映射 output.col = float4(input.texcoord.z);//rgba区间分别为[0,1],[0,1],[0,1],[0,1],可以与颜色建立映射 output.col = input.texcoord / tan(0.0);//分母为0数学上无意义,因为值无穷大,所以区间是[0,∞]
output.col = dot(input.normal, float3(input.tangent)) *input.texcoord; output.col = dot(cross(input.normal, float3(input.tangent)),input.normal) * input.texcoord; output.col = float4(cross(input.normal, input.normal), 1.0); output.col = float4(cross(input.normal,float3(input.vertex)), 1.0);
output.col = radians(input.texcoord); output.col = noise(input.texcoord);
标签:
原文地址:http://www.cnblogs.com/mrblue/p/4589107.html