shader2.0 顶点着色器 片段着色器

波动实例 (shader2.0 顶点着色器)
y=Asin(ωx+φ)
φ:决定波形与X轴位置关系或横向移动距离(左加右减)
ω:决定周期(最小正周期T=2π/∣ω∣)
A:决定峰值(即纵向拉伸压缩的倍数)

模型波动(顶点卓思琪)

顶点着色器:
1, 计算顶点位置
2, 矩阵转换

片段着色器:
1, 纹理寻址
2, 灯光作用。

Shader 2.0 对property 变量需要引用。

    float   _Frenquncy ;
	float    _Arange ;
	float   _Speed ;

_Time : 表示时间周期。

颜色和vector :

.xyzw rgba

//  Wave Shader
//Shader "Hidden/Wave"
//{
//	Properties
//	{
//		_MainTex("Texture", 2D) = "white" {}
//
//		_Arange("Amplitute",float) = 1
//
//		_Frenquncy("Frenquncy",float) = 0.5
//
//
//		_Speed("Speed",float) = 0.5
//	}
//		SubShader
//		{
//			Pass
//			{
//				CGPROGRAM
//				#pragma vertex vert
//				#pragma fragment frag
//
//				#include "UnityCG.cginc"
//
//				struct appdata
//				{
//					float4 vertex : POSITION;
//					float2 uv : TEXCOORD0;
//				};
//
//				struct v2f
//				{
//					float2 uv : TEXCOORD0;
//					float4 vertex : SV_POSITION;
//				};
//
//
//			   float   _Frenquncy;
//
//				float    _Arange;
//
//				float   _Speed;
//
//
//				v2f vert(appdata v)
//				{
//					v2f o;
//
//
//					float  timer = _Time.y * _Speed;
//
//
//
//					  float  waver = _Arange * sin(timer + v.vertex.x * _Frenquncy);
//
//
//					  v.vertex.y = v.vertex.y + waver;
//
//					o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
//					o.uv = v.uv;
//					return o;
//				}
//
//				sampler2D _MainTex;
//
//
//
//
//				fixed4 frag(v2f i) : SV_Target
//				{
//					fixed4 col = tex2D(_MainTex, i.uv);
//				// just invert the colors
//				//col = 1 - col;
//				return col;
//			}
//			ENDCG
//		}
//		}
//}

河流效果 shader2.0 片段着色器
1,让纹理滚动起来。(在片段着色器上做)
纹理流动为片段着色器

Shader 2.0 :
片段着色器:
1, 纹理采样
2, 灯光作用。

UV :

在这里插入图片描述

纹理: 当前在屏幕中显示区域:
UV就是将图像上每一个点精确对应到模型物体的表面。
在点与点之间的间隙位置由软件进行图像光滑插值处理。这就是所谓的UV贴图

tex2D(_MainTex, i.uv)
MainTex: 一张图片
i.uv  : 表示比例 UV坐标。(0―――1)

Clamp 不会从0开始寻址 而是从1.0开始寻址 只寻找贴图最后的点的像素拉伸
repeat 从0-1 不停反复寻址

Clamp: 表示UV 坐标超过 1永远取 1这个地方的像素。
UV 比0小取的都是 0这个地方的像素。
Repeat : UV 超过 1取小数部分跟(0–1)
UV 动画。

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Hidden/River"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
	}
	SubShader
	{
		// No culling or depth
		Cull Off ZWrite Off ZTest Always

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			
			#include "UnityCG.cginc"

			struct appdata
			{
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
			};

			struct v2f
			{
				float2 uv : TEXCOORD0;
				float4 vertex : SV_POSITION;
			};

			v2f vert (appdata v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = v.uv;
				return o;
			}
			
			sampler2D _MainTex;

			fixed4 frag (v2f i) : SV_Target
			{

			  
			   float2 tmpUV = i.uv ;

			    tmpUV.x  +=_Time.x ;

				 tmpUV.y  +=_Time.y
				  ;
				fixed4 col = tex2D(_MainTex, tmpUV);
				// just invert the colors
				//col = 1 - col;

				//col.x *= 2 ;

				//col.rgb = float3(1,0,0) ;

				return col;
			}
			ENDCG
		}
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值