Shader学习笔记(三)

Shader"MyShader/Demo2"{
	Properties{

	}
	SubShader{
		Pass{
		CGPROGRAM
		//顶点函数 这里只是声明了顶点函数的函数名
#pragma vertex vert
		//片源函数 这里只是声明了片源函数的函数名
#pragma fragment frag
		//POSITION (Shader中的语义说明,把顶点坐标传递给v)相当于每一个顶点坐标都会调用这个函数,把顶点坐标转换为剪裁控件坐标
		float4 vert(float4 v : POSITION) : SV_POSITION{//参数后面跟的语义表示对参数的解释说明,括号后的语义表示对返回值的解释说明
		//SV_POSITION这个予以用来解释返回函数,意思是返回值是剪裁空间下的顶点坐标
			//计算矩阵和向量相乘
			float4 pos = UnityObjectToClipPos(v);//这里我本来写的是mul(UNITY_MATEIX_MVP,v),这是一个矩阵的宏,把一个坐标和一个矩阵相乘,unity将这个函数自动转化成了新的函数
			return pos;
		}
		fixed4 frag():SV_Target {//SV_Target语义:返回值就是处理模型对应到屏幕中每一个颜色
			return fixed4(0.5,0.5,1,1);
		}
		ENDCG
		}
	}
	FallBack "VertexLit"
}


顶点函数的基本作用:
模型是由一个个三角面组成的,mesh中存储了模型每个三角面的顶点信息,顶点信息就是模型的顶点坐标,顶点坐标是相对于模型的中心来说的,以自身的中心,(不一定是模型的正中心,是建模的时候的中心),也就是模型空间的坐标系。
将顶点从模型空间转换到剪裁空间。将模型转换到屏幕视野中。(从游戏环境转换到视野相机屏幕上)


片源函数:
处理模型对应到屏幕中每一个像素(返回模型对应屏幕上的每一个像素的颜色值)


UnityCG.cginc中一些常用的函数

//摄像机方向(视角方向)
float3 WorldSpaceViewDir(float4 v)  根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向
float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标==》世界空间从这个点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v) 模型空间中的顶点坐标==》模型空间从这个点到摄像机的观察方向
//光源方向
float3 WorldSpaceLightDir(float4 v) 模型空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 UnityWorldSpaceLightDir(float4 v) 世界空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 ObjSpaceLightDir(float4 v) 模型空间中的顶点坐标==》模型空间中从这个点到光源的方向
//方向转换
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向 模型空间==》世界空间
float3 UnityObjectToWorldDir(float3 dir) 把方向 模型空间=》世界空间
float3 UnityWorldToObjectDir(float3 dir) 把方向 世界空间=》模型空间


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值