中EN
概念页

环境贴图

Environment Mapping

把球面函数记录在一张或多张图像里、用纹理查找来解码,就是环境贴图。它比其他球面表示占内存多,但解码简单快速,能表达任意高频和任意动态范围。最基本的用法是反射贴图:假设镜面 BRDF,用反射视线向量查表。本页比较经纬度、球面、立方体、双抛物面和八面体等投影。

反射贴图

  • 前提:入射辐亮度只依赖方向,即被反射的物体和灯光足够远,且反射体不反射自身。环境贴图通常存 HDR 辐亮度,每纹素位数多,占空间、访问也更慢。
  • 反射视线向量 r=2(n⋅v)n−vr=2(n\cdot v)n-v,镜面反射方程 Lo(v)=F(n,r)Li(r)L_o(v)=F(n,r)L_i(r)。注意这里菲涅耳用的是 nn 与 rr(等于 nn 与 vv)的夹角,而不是半向量。
  • 流程:生成或载入环境纹理 → 每像素求法线 → 求反射向量 → 由投影函数转为纹理坐标 → 取值作为入射辐亮度。
  • 常见的坑:平面上反射向量只变化几度,一小块环境被拉到大面积上,效果差;需用带位置信息的方法或平面反射(第 11 章内容)。
  • 与法线贴图结合效果尤其丰富;受限形式的凹凸环境贴图是消费级硬件上首个依赖纹理读取。
  • 用真实场景 360° HDR 全景照明场景时称为基于图像的光照。

投影方式对比

投影访问优点缺点
经纬度(Blinn & Newell 1976)ρ=arccos⁡(rz)\rho=\arccos(r_z),ϕ=atan2(ry,rx)\phi=\mathrm{atan2}(r_y,r_x)(+z 向上)直观两极纹素过多、过滤核不随拉伸变化,极点奇点处有瑕疵;反三角函数在 GPU 上贵。注意它保持纬线等距,与墨卡托不同
球面贴图(Williams;Miller & Hoffman)m=rx2+ry2+(rz+1)2m=\sqrt{r_x^2+r_y^2+(r_z+1)^2},u=rx2m+0.5u=\frac{r_x}{2m}+0.5,v=ry2m+0.5v=\frac{r_y}{2m}+0.5首个商用硬件支持的方式;计算简单;可拍镜面球(如圣诞球)得到,称光照探针只对单一视线方向有效,换视角会放大局部并暴露边缘奇点;实践中跟随相机放在视图空间
立方体贴图(Greene 1986)任意向量直接作三维纹理坐标,无需归一化当今最流行,硬件原生支持;与视角无关,采样比经纬度均匀;现代 GPU 能跨面正确过滤老 GPU 面接缝需扩大视野角等技巧;isocube 采样更均匀
双抛物面(Heidrich & Seidel)按 rzr_z 符号选图,前图 u=rx2(1+rz)+0.5u=\frac{r_x}{2(1+r_z)}+0.5,v=ry2(1+rz)+0.5v=\frac{r_y}{2(1+r_z)}+0.5比球面贴图甚至立方体更均匀两张图接缝处需小心采样插值,访问更贵
八面体(方形布局)$r'=r/(r_x+
  • 立方体贴图可在立方体中心以 90° 视野渲染 6 次生成(如《Forza Motorsport 7》随车辆位置更新),真实环境则把拼接全景投影到立方体坐标。
  • 绕某轴径向对称的环境(如晴空):Stone 用一维纹理存一条经线上的辐亮度;推广到二维时每行存一个用不同 Phong 瓣预卷积的版本。

球面贴图存着色结果与 MatCap

球面贴图在固定视线下每点也对应一个法线,因此可存任意各向同性 BRDF(漫反射、高光、逆反射等)的着色结果,只要光照和视线固定就正确,甚至可以用真实球的照片。用两张球面贴图分别以视图空间法线和反射向量索引、相加,就是 ZBrush 推广的 MatCap:便宜且有说服力,但光照随相机坐标系移动,与视角无关。

GEA 的视角:球面贴图与立方体贴图(卷 II 12.5.2、12.5.5)

  • 在光栅化引擎中,借助预计算或动态生成的图像数据(通常是纹理)来近似部分间接光的技术,GEA 统称为基于图像的光照(卷 II 12.5.2,见 基于图像的光照)。
  • 环境贴图像从场景中某个物体视角拍的全景照片,水平覆盖 360°,垂直覆盖 180° 或 360°,用来便宜地模拟反射和间接光(卷 II 12.5.2.1)。
  • 取样方法:把相机到点 P 的光线绕 P 处法线反射,沿反射光线找到它与环境球或环境立方体的交点,用那里的纹素给 P 着色。
  • 立方体贴图由上下左右前后六个方向的照片拼成,渲染时当作贴在以物体为中心、位于无穷远的盒子内壁上(卷 II 12.5.2.1)。这与本页 RTR4 的描述一致。
  • 环境贴图在 GEA 中也是镜面物体反射周围环境的通用做法;镜子等平面的直接反射则把相机关于反射平面做镜像、从镜像视点渲染到纹理,第二遍再贴到反射面上,见 局部反射探针 的「平面反射」(卷 II 12.5.5)。

球面贴图的描述分歧(原书问题,12.5.2.1):GEA 把球面环境贴图描述为"像透过鱼眼镜头拍的照片",按球坐标寻址,赤道附近分辨率充足,越接近竖直方向,水平分辨率越低,最终退化成一个纹素,立方体贴图就是为了避免这个问题。这种"极点退化"其实是本页表中经纬度贴图的典型缺点;RTR4 的球面贴图(Williams、Miller & Hoffman,拍镜面球得到)的问题则是只对单一视线方向有效、换视角会暴露边缘奇点。两书所说的"球面贴图"不是同一种映射,阅读时应按本页表格区分(经纬度贴图:Blinn & Newell, CACM 1976;球面贴图:Miller & Hoffman, SIGGRAPH 1984 课程笔记;均见 RTR4 第 10.4.1 节)。此外 GEA 这段把"竖直(方位)角"与"水平(天顶)轴"的叫法用反了:按书中 12.2.3.1 的约定,偏离竖直方向的是极角(天顶角),绕竖直轴旋转的才是方位角。

  1. realtime_rendering_4ed.pdf 第 10 章 Local Illumination
  2. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  3. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 12 章 12.5.2、12.5.5 节

相关页面

图形学基于图像的光照Image-Based Lighting用纹理数据(通常是相机拍摄的 360° HDR 全景)照明场景称为基于图像的光照。实时引擎常用预滤波的高光立方体贴图(配合 split-sum 近似)处理高光,用辐照度环境贴图或球谐系数处理漫反射。它们只依赖少量光照图元而不需要知道场景其他表面,因此仍属局部光照。图形学纹理映射管线Texturing Pipeline纹理通过修改着色方程中使用的值(颜色、粗糙度、法线等)来高效表现表面材质的变化。通用纹理管线是:空间位置 → 投影函数得到纹理坐标 → 对应函数变换到纹理空间 → 取值 → 值变换 → 用于着色。本页还整理纹理坐标约定、纹理表示方式、程序纹理、纹理动画、材质贴图、alpha 贴图和纹理光源。图形学球面函数基Spherical Basis Functions要让环境光照超越常数项,需要表示"每个入射方向的辐亮度"这样的球面函数。把函数转成某种表示叫投影,从表示求值叫重建。本页对比表格形式、环境立方体、球面高斯、球谐函数,以及专门为半球设计的 AHD、Half-Life 2 基和 H-basis。图形学菲涅耳反射Fresnel Reflectance菲涅耳方程描述光在两种物质的平坦界面上反射的比例 F,它取决于入射角和两侧折射率:垂直入射时为材质特有的 F0(特征镜面色),掠射时趋于 1。实时渲染用以 F0 为参数的 Schlick 近似。电介质 F0 低且无色,金属 F0 高且常带色,半导体介于其间;金属度参数化利用了这一点。光从物体内部射向表面时还可能发生全内反射。本页对应 RTR4 9.5 节。图形学法线贴图与凹凸贴图Normal & Bump Mapping凹凸贴图是一类在像素着色中修改着色法线来表现中尺度细节的技术:几何法线不变,只改变光照计算使用的法线,从而在不增加几何的情况下显得更立体。最常用的形式是切线空间法线贴图,需要每顶点的切线框架;法线贴图的过滤是难点。图形学局部反射探针Localized Reflection Probes镜面全局光照需要高角分辨率但只关心反射方向附近的小立体角。实时中最流行的方案是在场景中稀疏放置局部环境贴图(反射探针),配合反射代理体做视差校正;它实现简单、快、美术可控,但有拉伸和漏光问题。另有体素锥追踪和平面反射等替代方案(RTR4 11.6–11.6.4 节)。图形学天空盒与固定视点技术Skyboxes & Fixed-View Techniques用图像代替三角形时,渲染代价与像素数而不是顶点数成正比。Lengyel 的"渲染谱系"从纯图像方法一直排到三角形和光线追踪。本页汇总谱系中偏图像一端的技术:限制视点移动的固定视点加速、渐进细化与重光照、天空盒、光场渲染以及精灵与分层(RTR4 13.1–13.5 节)。图形学顶点压缩与精度Vertex Compression & Precision网格数据像纹理一样可以压缩:传输用的整体压缩(Draco 等)一次性解码,渲染用的定长压缩让顶点着色器在 GPU 上逐顶点解码,从而降低内存、带宽并改善缓存。另一面是精度问题:大世界中单一坐标系会让远离原点的物体抖动,需要相对相机的变换或分段原点。图形学着色方程与经典光照模型Shading Equation & Classic Lighting ModelsGEA 把渲染方程在两条简化假设下化成的求和式称为着色方程:只有理想化的点光源和方向光,间接光只用一个环境光项粗略近似。配上 Lambert、Phong、Blinn-Phong 这类简单 BRDF,它给不出照片级真实感,但能产生可信的画面,是早期游戏的全部光照,也是理解 BRDF 用法的最好入门(GEA4 卷 II 12.4、12.5.1)。游戏数学球面几何与方向参数化Spherical Geometry & Direction Parameterizations渲染中大量计算发生在单位球面上:方向就是球面上的点,一组方向就是球面上的一块区域。本页按 PBRT 4e 3.8 节整理立体角、球面多边形面积、三种球面参数化(球坐标、八面体编码、等面积映射)以及用于剔除光源的方向锥,并附原书一处公式问题。游戏美术假室内Fake InteriorsSimon Schreibt《Game Art Tricks》48 / 12:用平面窗户着色器假装后面有房间——立方体贴图减速视差、Bump Offset 平铺室内、多层视差+假公告板等——省建模与真透明排序成本。本页忠于原文观察,不臆造引擎未写明的实现细节。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原