Unity Shader 小白之旅(二)

原文写的确实挺好的,说的内容也挺详细,最主要是刚入门的小白能够看明白,不过有个别的地方有错误,不过我都在下方评论粘出来了,也是为了避免跟我一样的小白掉到坑里去。

Shader "Custom/Study"
{
   Properties
   {
	   _Color("Color",Color) = (1,1,1,1)
	   _MainTex("Texture",2D) = "white"{}
	   _Range("Range",Range(0,1)) = 1
	   _ExtrudeAmount("Extrue Amuount",float) = 0
   }
   SubShader
   {
	   Pass
	   {
		   CGPROGRAM
           #pragma vertex vertexFunction
		   #pragma fragment fragmentFunction
		   #include "UnityCG.cginc"
		   struct a2v
		   {
			   float4 vertex:POSITION;//顶点坐标
			   float2 uv:TEXCOORD0;//uv纹理
			   float3 normal:NORMAL;
		   };
		   struct v2f
		   {
			   float4 position:SV_POSITION;//sv指的是system value
			   float2 uv:TEXCOORD0;//uv 纹理
		   };
		   float4 _Color;
		   sampler2D _MainTex;//获取这个属性在cg中使用  sampler2D 2d图片关键字
		   float _Range;//range
		   float _ExtrudeAmount;
		   v2f vertexFunction(a2v v)
		   {
			   v2f o;
			   //顶点拉伸扩散
			   //sin(_Time.y) _Time是代表时间变量被包含在UnityCH.cginc中,y值代表秒
			   v.vertex.xyz+=v.normal.xyz*_ExtrudeAmount/**sin(_Time.y)*/;  //sin(_Time.y)pingbong
			   //Unity提供的APIUnityObjectToClipPos()
			   //(将世界空间的模型坐标转换成裁剪空间,
			   //函数内部封装了实现顶点坐标变换的具体细节,矩阵等等)
			   o.position = UnityObjectToClipPos(v.vertex);
			   o.uv = v.uv;
			   return o;
		   }
		   fixed4 fragmentFunction(v2f i):SV_TARGET
		   {
			   float4 _mT = tex2D(_MainTex,i.uv);
			   clip(_mT.rgb-_Range);
			   return _mT *_Color;//对纹理进行采样 tex2D()
		       //想让model显示color又显示贴图 在return的时候贴图跟color进行相乘
		  }
		   ENDCG
	   }
   }
   FallBack "Diffuse"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值