Unity Shader学习笔记(一)坐标变换
基本问题 试想我们的美术做了一个3D模型,然后渲染引擎把模型渲染到屏幕上。我们还可以选定不同的视角,模拟不同的光照条件去观察模型。现在来分析一下这个过程。如果说我们把这个过程看成一个函数,那么函数的输出就是屏幕上的图像。确切地说,是屏幕上的每个像素。这个函数的主要输入是这个3D模型,我们观察的视角,光照情况等等因素。渲染过程就是给出这些因素决定每个像素值的过程。 首先来看模型。模型通常是由可视化的建模软件制作,看上去是一个“实体”。然而从计算机的角度来说,模型文件只不过是包含渲染它所需要的数据的文件。真实世界中的物体细节是无法穷尽,极其复杂的。所以我们进行简化,把物体简化成多面体,进一步的,简化成每个面是三角形的多面体。(对于曲面和细节较多的地方,我们可以用更多更小的三角面来拟合)。很显然,每个顶点的相对位置是重要的。它决定了模型的形状。由于需要描述位置,自然就有了选择坐标空间的问题。模型描述自身顶点坐标的空间称为模型空间。于是我们可以得出模型文件里一定要包含模型空间下的顶点坐标。 通常,在一个渲染的场景中,包含了多个渲染的物体。它们根据不同的位置摆放,当然会构成不同的场景。那么为了描述场景里模型之间的相对位置,我们会选择一个独立于模型的坐标空间,称为世界空间。有了世界空间,我们也可以描述观察者的位置和观察的角度。这个观察者,通常我们可以叫它为camera