二、Unity Shader顶点变换总结
来源:互联网 发布:程序员的自我修养 git 编辑:程序博客网 时间:2024/05/16 14:43
《Unity Shader入门精要》读书笔记 之 二
做这个总结的目的是为了加深了解一个模型上的顶点是如何从模型上一步步变换到屏幕上的,搞明白Unity到底做了些啥?
1、顶点变换的目的:
将顶点坐标坐标开始,到屏幕坐标为止的一系列转换。
2、UNITY_MATRIX_MVP矩阵的解释:
Unity内置的MVP矩阵,可以将模型上的顶点从他的本地坐标系,转换到裁剪空间中。
一个顶点转换到裁剪空间后,就表示它的w具有了特殊意义:可以用来进行透视除法,透视除法(xyz分别除以w)后的x、y用来进行屏幕映射(也就是这个顶点应该出现在屏幕上的哪个位置),z用来表示这个顶点的深度(是否离观察者更近或被其他顶点挡住等)。
M(Model):从本地坐标系 转换到世界坐标系 的转换矩阵。
V(View):从世界坐标系 转换到相机坐标系 的转换矩阵。
转换矩阵总结如下(矩阵左乘列向量):
注意:Unity的相机坐标系(观察者空间、相机空间)是比较特殊的坐标系,它使用右手坐标系,而它的前一步转换是在左手坐标系内完成的,因此顶点转换到相机坐标系后要对z进行一下处理(或使用相反的转换顺序)。
P(Projection):投影矩阵,说是投影矩阵,其实并未进行投影计算,但是它却坚强的算出了齐次向量w的值,为后面的透视除法做准备,根据相机类型的不同,投影矩阵也会有些许差别。
在正交相机(orthographic)中:w的值恒为1,所以做了透视除法也没变化;
在透视相机(perspective)中:w的值有意义,经过此投影矩阵计算的xyz向量需分别除以w进行透视除法即xyz / w。
正交相机的矩阵总结如下(矩阵左乘列向量):
透视相机的矩阵如下(矩阵左乘列向量):
3、MVP后的顶点表示啥?
注意:
① -1.0 ~ 1.0用的时候要处理成 0.0 ~ 1.0。
② 透视投影处理后的顶点xyz要进行透视除法。
4、深度贴图采样总结:
Upgrading to Unity 5.5说明:
采样方法:
step 1、声明深度贴图(名字是系统默认的):
sampler2D_float_CameraDepthTexture;
step 2、采样深度贴图:
float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv);
step 3、处理采样数值(保证不同平台的深度值相同):
depth = Linear01Depth(depth);
0 0
- 二、Unity Shader顶点变换总结
- unity shader 之 几何变换--顶点位移
- unity shader 可编程管线(二) 顶点和片段着色器(Vertex Shader and Fragmet Shader)
- 【Unity Shader学习笔记】(一)在表面着色器中控制顶点变换
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader 知识点总结(二)
- Unity Shader中法线变换
- Unity Shader学习笔记:变换
- Unity3D shader(7)——Vertex Shader(顶点几何变换)
- 【Unity Shader学习笔记】(二)最基本的顶点片段着色器
- unity中顶点片段shader环境反射
- Unity Shader 二 发光Shader
- Unity Shader简单Shader二
- [LINUX] 防火墙开关
- 机器学习笔记(一):梯度下降算法,随机梯度下降,正规方程
- 贴吧水笔你和我
- 自控力—凯利.麦格尼格尔—【读书笔记】
- 并查集
- 二、Unity Shader顶点变换总结
- 桥接模式 Bridge
- VTK7.1安装记录
- 指针与数组,指针与函数之间的关系
- MyEclipse集成开发环境配置
- 【Java】之 简易ArrayList
- 01 -【CentOS5.6_WebSphere8.5.5集群安装配置】- 安装InstalMgr
- setContentView(R.layout.xxx)出错
- 02 -【CentOS5.6_WebSphere8.5.5集群安装配置】- 安装WAS_ND_V8.5.5