shader中常见的语义与函数

语义是告诉某个变量是做什么的,存储什么东西。

从应用阶段传递模型给顶点着色器时Unity支持的常用语义:

		float4 vertex:POSITION;//告诉UNITY吧模型空间下的顶点坐标填充给vertex
		float3 normal:NORMAL;//把顶点填充给normal
		float4 texcoord:TEXCOORD0;//该顶点的纹理坐标,TEXCO0RD0表示第一组纹理坐标,依次类推
		fixed3 Color:Color;//顶点颜色

从顶点着色器传递给片元着色器时Unity常用的语义:

	        float4 position:SV_POSITION;//表示返回的是剪裁空间下的坐标,必须有
		float3 temp:COLOR0;//这个语义可以有用户自己定义,一般存储颜色,不一定必须有
		float4 texcoord:TEXCOORD0;//输出纹理坐标,但不是必须的
片元着色器输出时Unity支持的语义:

                SV_Target //输出值将会存储到渲染目标
当把一个点从各个空间进行变换时是通过矩阵变换,而shader中有些特定方法,例如:

			UNITY_MATRIX_MVP    当前模型观察投影矩阵,用于将顶点矢量从模型空间变换到裁剪空间
			UNITY_MATRIX_MV      当前模型观察矩阵,用于将顶点 / 方向从模型空间变换到观察空间
			mul(UNITY_MATRIX_MVP,v.ertex);//从模型空间到剪裁空间
			mul(_World2Object,v.normal);//从世界空间到到模型空间
			反方向调用的话就正好相反
在shader中对于光照来说,光照强度与光照到一个点上和摄像机的角度还有法线有关。关于如何得到摄像机的角度,法线方向等斗鱼特定的API
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) 把方向 模型空间=》世界空间




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值