顺序无关半透明:Depth Peeling

      由于光栅化渲染 API 只能保存一个像素的深度(通常为最近像素的深度),所以光栅化渲染天生具有半透明渲染的劣势。通过到相机的距离对图元进行排序可能有所帮助,但排序是计算密集型的,必须在每一帧完成,而且如果图元相互交错,就会出现无法修复的错误。 Depth peeling   Depth peeling 的中文意思是深度剥离,本质也类似。先渲染最远的一层深度的像素,然后将它剥离掉,然后再 […]

实时渲染:基础架构与图形管线

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

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

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

抗锯齿技术之FXAA

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

浮点数误差分析及补偿

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

可编辑网格的存储方式

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

蒙特卡罗综述

    许多事情在生活中太难以评估,特别是当它涉及非常大的数字。例如,计算一个国家的成年人口的平均高度,将需要测量每个人的身高,身高值相加除以总人数。这明显是不可能的,这种任务需要很长的时间,非常难以求解。在这种情况下,可以做的是取一个样本的人口并计算其平均高度,以此来估算整个国家人口的平均高度。这是统计学中最简单的概念。   需要特别提醒的是,在这个例子中,随机选取的人的身高是随机数, […]

光线追踪简述

    光线追踪(Ray tracing)是三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。这样得到的结果类似于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果,例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以当追求高质量的效果时经常使用这种方法。 光线追踪分为两种: […]

HDR技术之tone mapping

      现实中人类的眼睛所能看到亮度比的范围是10^5左右。照相机和摄像机可以捕捉到HDR的影响,渲染过程中可以产生HDR的画面。这样问题就出现了,2^{16}或者更高数量级的亮度只能存在电脑里,而一般的显示器只能表示2^8个亮度数量级,用256个数字来模拟 所能表示的信息,这种模拟的方法就是HDR技术核心内容之一,学名叫Tone-Mapping(色调映 […]

实时渲染中的菲涅尔效应

      光线追踪中使用的菲涅尔效应公式由平行项 r_{\parallel} 和垂直项 r_{\perp} 组成,而且针对绝缘体和导体的公式又不相同,计算非常复杂。用于实时渲染必须进行简化。   菲涅尔效应   实际上,菲涅尔效应描述了光线的角度和光线反射率的关系。如果视线和法线夹角越大,眼睛接收到的反射光线能量越大;反之,夹 […]