mul函数

匿名 (未验证) 提交于 2019-12-03 00:22:01

基本信息

mul函数




Unity3d 中,若是OpenGL,用的应该是GLSL,mul方法是(M,V)。

矩阵

内置的矩阵(float4x4):

名称说明
UNITY_MATRIX_MVP当前模型视图投影矩阵
UNITY_MATRIX_MV当前模型视图矩阵
UNITY_MATRIX_V当前视图矩阵
UNITY_MATRIX_P当前的投影矩阵
UNITY_MATRIX_VP当前视图投影矩阵
UNITY_MATRIX_T_MV模型视图矩阵的转置
UNITY_MATRIX_IT_MV模型视图矩阵的逆转置
_Object2World当前模型矩阵
_World2Object当前世界矩阵的逆矩阵

这里要特别说明一下UnityObjectToClipPos(v.vertex)) 方法,官方网站上说明,在写Instanced Shader时,通常情况下并不用在意顶点空间转换,因为所有内建的矩阵名字在Instanced Shader中都是被重定义过的,如果直接使用UNITY_MATRIX_MVP,会引入一个额外的矩阵乘法运算,所以推荐使用UnityObjectToClipPos / UnityObjectToViewPos函数,它们会把这一次额外的矩阵乘法优化为向量-矩阵乘法。

相机

名称类型数值
_WorldSpaceCameraPosfloat3世界空间相机的位置
_ProjectionParamsfloat4x = 1.0(或如果当前使用翻转投影矩阵渲染则为-1.0),y是相机的近平面,z是相机的远平面,w是1 / FarPlane
_ScreenParamsfloat4x是相机的渲染目标在像素里的宽度,y是相机的渲染目标在像素里的高度,z是1.0 + 1.0 /宽度和w是1.0 + 1.0 /高度
_ZBufferParamsfloat4用于线性化Z缓冲区的值。x(1-far /near),y(far/near)、z(x /far)和w(y /far)
unity_OrthoParamsfloat4x是正交的相机的宽度,y是正交的相机的高度,z是未使用的,为正交的相机时w为1.0,透视相机时w为0.0
unity_CameraProjectionfloat4x4摄像机的投影矩阵
unity_CameraInvProjectionfloat4x4摄像机的投影矩阵的逆矩阵
unity_CameraWorldClipPlanes[6]float4相机锥平面世界空间方程,按顺序为:左、右、底部、顶部、近、远

光照

名称类型数值
_LightColor0(Lighting.cginc中声明)fixed4光照颜色
_worldspacelightpos0float4方向光:(世界空间方向,0)。其他光:(世界空间位置,1)
_LightMatrix0(AutoLight.cginc声明)float4x4world-to-light矩阵。用于样品cookie 和衰减纹理
unity_4LightPosX0、unity_4LightPosY0 unity_4lightposz0float4(仅ForwardBase通道)前四个不重要的点光源的世界空间坐标
unity_4lightatten0float4(仅ForwardBase通道)前四个不重要的点光源的衰减系数
unity_lightcolorhalf4[4](仅ForwardBase通过)前四个不重要的点光源的颜色数组

在Shader的光照通道里的延迟着色和延迟光照(在unitydeferredlibrary.cginc):

名称类型数值
_LightColorfloat4光照颜色
_LightMatrix0float4x4world-to-light矩阵。用于样品cookie 和衰减纹理

多光源下,最多8个光源在顶点通道,排序为从最亮的开始

名称类型数值
unity_LightColorhalf4[8]光照颜色数组
unity_LightPositionfloat4[8]视图空间光源的位置。方向光源的坐标是(-方向,0);(位置,1)用于点/点指示灯,点光源,聚光灯的坐标是(位置,1)
unity_LightAttenhalf4[8]光源衰减的系数。X是cos(spotAngle/2)或非聚光灯为-1;Y为1/COS(spotangle / 4)或非聚光灯为-1;Z是衰减的二次方;W是正方形光源的范围
unity_SpotDirectionfloat4[8]视图空间聚光灯的位置;(0,0,1,0)则非聚光灯。

基本变换



把一个3D物体渲染到2D的屏幕上的基本流程以及每个变换对应的矩阵

  1. 模型空间――>世界空间,对应矩阵:_Object2World
  2. 世界空间――>相机空间,对应矩阵:UNITY_MATRIX_V
  3. 此刻获取到了物体处于相机空间的位置,要把相机空间的所有信息都渲染到2维图片上,此刻需要进行投影变换相机空间――>投影空间,对应矩阵:UNITY_MATRIX_P

    通过UNITY_MATRIX_MVP
    对投影矩阵感兴趣的,可以自己搜索一下,整个推导过程需要一定的数学基础,理解就行。

    切线空间矩阵





    T=(dxdu,dydu,dzdu)B=N×TN=T×(dxdv,dydv,dzdv)

    yaomingyang

    2017-12-12 09:48:43

    阅读数:302

    没有更多推荐了,返回首页

文章来源: mul函数
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!