[Real-Time Rendering 第四版 精要笔记]第2章:图形渲染管线

  前言   渲染管线是将三维场景转化为二维图像的函数,只需要给定三维对象、光源等等。三维物体的显示效果由材质属性、光源、纹理、采用的着色方程共同决定。   架构   渲染管线就像快餐厨房一样,每一层级联,每个阶段完成特定的任务。每个管线任务是并行化运行的,而管线内部的阶段则是依赖于前一个阶段的输出。 首先,渲染管线可以粗略地分为四个主要的阶段——应用-几何处理-光栅化-像素处理。应用阶段通常由 […]

关于多视口渲染的两个拓展

    在游戏中经常有需要用到多视口渲染的地方,比如级联阴影技术(CSM)、立方体贴图(Cube Map)、虚拟现实(VR)等等。   实质上,在 OpenGL4.1 之后,几何着色器(GS)已经开始支持 gl_ViewportIndex,也就具有了多视口渲染的能力。在进行多视口渲染时,GS 往往会成为性能瓶颈,因为所有的顶点数据都是通过 GS 分发到不同的视口中。所以 GPU 厂商都提供了一些语 […]

雅可比矩阵及应用

  雅可比矩阵   假设某函数 \mathbb{R}^n 需要映射到另一个空间 \mathbb{R}^m 中,雅克比矩阵就是从 \mathbb{R}^n 到 \mathbb{R}^m 的线性映射,其重要意义在于它表现出了多维对多维空间的一个最佳线性估计。因此,雅可比矩阵类似于单变量函数中的导数。事实上,在单变量函数中,导数就是 1\times 1 阶的雅可比矩阵。   注意,以下的推导的矩阵都是行 […]

抗锯齿技术之FXAA

  如果要平滑地显示一条直线,理论上需要无限大的分辨率。当前显示器的效果还远远没有达到匹配眼睛分辨率的效果。如果想要在网格屏幕上捕捉一条直线,在直线跨像素时,必然会产生一个极小的阶梯型效果。如果多个阶梯出现在同一个区域,眼睛马上就能发现错误。为了尽可能减少这种跳变的影响,出现了抗锯齿技术(anti-aliasing)。   当前已经开发出了多种抗锯齿技术。最 […]

浮点数误差分析及补偿

    在各种渲染引擎中使用浮点数几乎可以肯定一定会产生浮点数误差,而渲染引擎的大量计算量也不允许使用其他特别高精度的浮点数,因而需要一定程度的精度补偿。事实上,浮点数并不适合用于精确计算,而适合进行科学计算。 float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; double […]

指针和REF

      指针继承自 C 语言,也是操作数据最灵活最强大的武器;REF,中文名为引用,则可以认为是指针的一个“语法糖”。REF 使用起来更方便、更安全、也更可靠,它和指针一样也具有多态性。   指针   指针可以看成一个复合类型,它由 A 和 T 组成,A 表示指针指向的物理地址, T 表示地址包含的类型。通常来说,A 在运行 […]

折射光线方向公式推导

    先给出结论:折射方向公式: t={η_1\over η_2}i+({η_1\over η_2}cos\theta_i-\sqrt{1-sin^2\theta_t})n  要注意的是,这个向量不是单位向量,使用前请自行单位化。   下面开始证明,根据 Snell 法则: {sin\theta_1 \over sin\theta_2}={η_2\over η_1}  下面设定一些常用 […]

可编辑网格的存储方式

  渲染时使用的数据结构往往是数组,因为它节约存储空间而且方便索引进行随机访问。但是在模型编辑软件如 Blender、MAYA 中就不能使用数组,取而代之的是类似于链表的数据结构。   为了方便修改,网格信息时一般不只存储顶点信息,往往还会保存连接信息(mesh connectivity)。 邻接三角形结构     这次要讨论的 […]

OpenGL 中的 mipmap

  mipmap   使用 mipmap 时,OpenGL 根据被映射对象的大小(单位是像素),自动决定使用纹理图的哪个分辨率级别。mipmap 表示着纹理的层次细节(LOD),随着对象图像变小,使用纹理图的大小将减少。mipmap 需要一些额外的计算和纹理存储空间(大概三分之一),但这些消耗是值得的,如果不使用 mipmap ,那么映射到更小图像上的纹理将随着物体移动而闪烁。   Op […]

计算机图形学中的数学知识

  计算机图形学需要的数学基础,取决于希望进入这个领域的深度。如果单纯使用现成的图形引擎或者编辑程序,几乎不需要太多专门的数学知识;如果想要系统学习计算机图形学,那么需要学习代数、三角函数和线性代数;如果需要成为图形学的研究者,那么就应该持续不懈地学习数学。计算机图形学一些领域并不太关心数学思想。但是,如果愿意学习新的数学思想,那么将会有更多选择的自由。  &emsp […]