Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间

网友投稿 1034 2022-11-20

Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间

Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间

Unity系列文章目录

文章目录

​​Unity系列文章目录​​​​前言​​​​一、4.6.1 为什么要使用这么多不同的坐标空间​​​​二、4.6.3 顶点的坐标空间变换过程​​​​4.6.4 模型空间​​​​4.6.6 观察空间​​​​4.6.7 裁剪空间​​​​总结​​​​法线变换​​​​参考​​

前言

我们已经学会了如何使用矩阵来表示基本的变换,如平移、旋转和缩放。而在本节中,我们 将关注如何使用这些变换来对坐标空间进行变换。 我们在第2 章渲染流水线中就接触了坐标空间的变换。例如,在学习顶点着色器流水线阶段 时,我们说过,顶点着色器最基本的功能就是把模型的顶点坐标从模型空间转换到齐次裁剪坐标 空间中。 渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程,那么本 节我们就将学习这个转换的过程是如何实现的。更具体来说,顶点是经过了哪些坐标空间后,最 后被画在了我们的屏幕上。

一、4.6.1 为什么要使用这么多不同的坐标空间

阵MA→B,我们是把它们按列放呢还是按行放呢?如果读者实在想不起来正确答案,我们不妨先随 便选择一种方式,例如按列摆放。那么,

读者看到这里会有疑问,“我不知道这个结果是什么啊”。没错,这不是你的计算有问题,而 是上式的计算结果的确不可知。这种时候你就会发现我们的摆放方式选择错了。现在,我们使用 正确的摆放方式,即按行来摆放,那么就有:

这次结果就和我们预期的一样了。 理解上面的原理和过程非常重要。我们在本书的后面也会经常遇到坐标空间的变换。

二、4.6.3 顶点的坐标空间变换过程

我们知道,在渲染流水线中,一个顶点要经过多个坐标空间的变换才能最终被画在屏幕上。一 个顶点最开始是在模型空间(见4.6.4 节)中定义的,最后它将会变换到屏幕空间(见4.6.8 节)中, 得到真正的屏幕像素坐标。因此,接下来的内容我们将解释顶点要进行的各种空间变换的过程。 为了帮助读者理解这个过程,我们将建立在农场游戏的实例背景下,每讲到一种空间变换, 我们会解释如何应用到这个案例中。 在我们的农场游戏中,妞妞很好奇自己是如何被渲染到屏幕上的。它只知道自己和一群小伙 伴在农场里快乐地吃草,而前面有一个摄像机一直在观察它们,如图4.31 所示。妞妞特别喜欢自 己的鼻子,它想知道鼻子是怎么被画到屏幕上的?

4.6.4 模型空间

4.6.6 观察空间

4.6.7 裁剪空间

总结

法线变换

参考

Unity Shader入门精要 作者:冯乐乐

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:osg::ref_ptr<osg::CullFace> cf = new osg::CullFace;提高帧率
下一篇:让我们重新认识一下docker 的全局观
相关文章

 发表评论

暂时没有评论,来抢沙发吧~