Shader 数学基础
坐标系笛卡尔坐标系(法语:système de coordonnées cartésiennes,英语:Cartesian coordinate system,也称直角坐标系)在数学中是一种正交坐标系,由法国数学家勒内·笛卡尔引入而得名。二维的直角坐标系是由两条相互垂直、相交于原点的数线构成的。在平面内,任何一点的坐标是根据数轴上对应的点的坐标设定的。在平面内,任何一点与坐标的对应关系,类似于数轴上点与坐标的对应关系。 采用笛卡尔坐标系,几何形状可以用代数公式明确地表达出来。几何形状的每一个点的直角坐标必须遵守这个代数公式。 直线: ${\displaystyle ax+by+c=0}$ 斜截式 : ${\displaystyle y=mx+k}$ 圆 : ${\displaystyle (x-a)^{2}+(y-b)^{2}=r^{2}}$ 众所周知,OpenGL使用的是右手坐标系,而Direct3D使用的是左手坐标系。 Unity 使用的是左手坐标系。 点和向量点和向量点是三维空间中的某个坐标,是绝对的,它的值是参照原点的,而向量...
Shader 基础笔记02
笔记该笔记对应入门精要中 4、5、6 章节部分。 坐标空间以及顶点变换的顺序 模型空间(model space), 在 DCC 中建立的坐标 世界空间(world space),将模型的顶点变换到世界空间中这个操作叫做 Model Transform。 观察空间(view space),也被称为摄像机空间(camera space)将顶点从世界空间变换到观察空间的操作叫做 View Transform。 裁剪空间(clip space), 从观察空间转换到裁剪空间的矩阵叫做 clip matrix,也称为 projection matrix(投影矩阵)。完全位于这个空间内部的图元会被保留,位于这个空间之外的图元会被剔除,位于边界的图元会被裁剪。 屏幕空间(screen space), 投影之后,获得一个真正的像素坐标。首先,通过标准齐次除法获得归一化的设备坐标(Normalized Device Coordinates, NDC)。然后,我们可以根据变换后的 x 和 y 坐标来映射输出窗口的对应像素坐标。总结为两个操作(齐次除法,屏幕映射)。 顶点变换的过程 顶点从模型空间 -...
Shader 基础笔记01
Shader 基础笔记该部分笔记对应入门精要中 1、2、3 章内容 Shader 渲染流程在 OpenGl 中,矩阵的变换过程如下。 为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么: 《Render-Time Rendering,Third Edition》一书中将一个渲染流程分成三个阶段:应用阶段(Application Stage)、几何阶段(Germetry Stage),光栅化阶(Rasterizer Stage)段。 应用阶段 准备场景数据,如摄像机的位置、视锥体、场景中包含了哪些...








