标签:
转自 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