抗锯齿技术之FXAA

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

HDR技术之tone mapping

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

实时渲染中的菲涅尔效应

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

使用梯度来估计法线

      写在前面   一般来说,法线贴图不是由美术直接制作的。法线贴图的制作通常有两个途径: - 由灰度图、高度图进行生成,通过这种途径生成的法线会丢失许多细节。 - 进行高精度建模,然后把相应的表面凹凸信息写入法线贴图或者视差贴图,再把高模减面成适合游戏使用的低精度模型,然后将生成的贴图应用在模型上,这种方式可以拥有各种细节。   这篇文章记录的是我实现地形算法 […]

OpenGL阴影采样器

  在 glsl 版本 1.30 之前,没有能与 sampler2DShadow 配合的纹理采样函数。在 1.40 版本开始,可以使用 texture 系的函数对阴影采样器进行采样,输入参数为 CVV 空间的三维坐标。   要使用 sampler2DShadow,需要做两件事。第一,需要开启比较模式,否则会行为未定义。有 sampler 或者 texture […]