比较bump mapping & parallax mapping(转载)

本文探讨了bump mapping和parallax mapping两种技术的区别。bump mapping通过纹理映射来模拟表面细节,而parallax mapping则在此基础上进一步通过视差效果增强凹凸感。文章提供了两种技术实现的伪代码,并指出parallax mapping能提供更为逼真的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较bump mapping & parallax mapping

使用bump mapping能得到更多的光照细节,其原理就是纹理映射对每个像素的法向量进行扰动。
首先要将每个顶点转换到其切线空间(tangent space)中去。该空间由tangent, binormal(bitangent)和normal构成,分别对应的是x,y,z。需要注意的是切向量和纹理空间要一致。

bump mapping: 

 

vec4 base = texture2D(Base, texCoord);
vec3 normal = normalize(texture2D(Bump, texCoord).xyz * 2.0 - 1.0); 
 

 

parallax mapping:
vec2 newTexCoord = texCoord + ((height * 2 - 1) * scale * eVec.yx);
vec3 normal = normalize(texture2D(Bump, newTexCoord).xyz * 2.0 - 1.0); 
 

可以看出parallax mapping比bump mapping更有凹凸效果

PS:
关于切向量传入VS可以通过纹理坐标(glMultiTexture)或自定义属性(glVertexAttribPointer)。
虽然都可行,个人认为后者的方法比较好。

update(2005/01/07):

加了shelf-shadow,你会发现墙面的缝隙里有明显的阴影效果 
   

<think>我们正在讨论的是bump贴图(凹凸贴图)和法线贴图在计算机图形学中的区别以及各自的应用场景。根据提供的引用,我们可以总结如下:1.**原理差异**:-**Bump贴图**:使用灰度图像来表示表面的凹凸信息。其中,亮色区域(如白色)表示凸起,暗色区域(如黑色)表示凹陷。它通过改变表面法线在渲染时的方向来模拟光照效果,从而产生凹凸感,但实际上并没有改变模型的几何形状[^1][^2]。- **法线贴图**:使用RGB图像来存储每个像素点的法线方向(即表面的朝向)。其中,RGB值分别对应法线向量的X、Y、Z分量(通常映射到[0,1]范围)。法线贴图同样不改变几何形状,但它提供了更精确的法线扰动信息,能够产生更逼真的凹凸效果[^1][^3][^4]。2.**技术实现**:- Bump贴图通常通过计算灰度图的梯度(高度变化率)来扰动法线方向[^2][^4]。-法线贴图直接提供扰动后的法线向量,因此计算效率更高,且能表现更复杂的细节(如方向性光照变化)[^3][^4]。 3. **视觉效果**:- Bump贴图适用于模拟简单的表面纹理(如粗糙的石头、木材纹理),但边缘轮廓仍保持平滑(因为几何未变)[^1][^2]。-法线贴图能表现更细致的凹凸(如皮肤皱纹、金属划痕),且在视角变化时保持更好的立体感[^3][^4]。然而,当视线与表面平行时,两者都会暴露“表面实际平坦”的缺陷[^2]。 4. **应用场景**:-**Bump贴图**:适合早期硬件或移动平台(计算量小),或用于不需要高精度细节的场合(如远景物体)[^2]。-**法线贴图**:广泛用于现代游戏和影视渲染,尤其当需要近景细节(如角色模型、武器表面)时[^3][^4]。 5. **进阶技术**:-为弥补法线贴图在边缘轮廓的不足,衍生出**置换贴图(Displacement Map)**——它真正改变顶点位置(需细分曲面支持),但计算成本高[^1]。-**视差贴图(ParallaxMap)**通过偏移纹理坐标模拟深度,改善视角平行时的穿帮问题[^2]。###数学表达在光照计算中,两种贴图的核心都是修改法线向量$\vec{N}$: -Bump贴图通过高度场$h(u,v)$计算扰动后的法线:$$\vec{N}_{new}= \vec{N} +\left( \frac{\partial h}{\partialu},\frac{\partialh}{\partial v},0\right)$$ -法线贴图直接存储$\vec{N}_{new}$的切线空间坐标(通常需从RGB转换:$\vec{N} =2\cdot\text{RGB} -1$)[^4]。###总结对比表|**特性**|**Bump贴图**|**法线贴图**| |------------------|--------------------------|--------------------------| |**数据形式**|灰度图(高度信息)| RGB图(法线向量)|| **计算开销**|较低(需计算梯度)|中等(直接读取法线)|| **细节精度**|中等(适合宏观凹凸)|高(适合微观细节)|| **边缘轮廓处理** |无改善(边缘平滑)|无改善(边缘平滑)|| **典型应用**|简单纹理、移动端渲染|高细节模型、PC/主机游戏|[^1]:置换贴图(Displacement map),凹凸贴图(Bumpmap)与法线贴图(Normal map)的区别。 [^2]: UnityShader浮雕凹凸贴图BumpMap与法线贴图NormalMap的原理及其区别。[^3]:在三维计算机图形学中,法线贴图(英語:Normalmapping)是一种模拟凹凸处光照效果的技术。[^4]:法线映射:凹凸贴图的核心思想是通过对表面法线的扰动来模拟凹凸效果。 §§相关问题§§1.为什么法线贴图通常呈现蓝紫色?2.在实时渲染中,如何选择使用bump贴图还是法线贴图?3.置换贴图与法线贴图在性能开销上有何差异?</think>### Bump贴图与法线贴图的区别及应用场景(计算机图形学) #### **核心原理差异** 1. **数据表示方式** - **Bump贴图**: 使用**单通道灰度图像**存储高度信息。 - 白色/亮色 → 表面凸起 - 黑色/暗色 → 表面凹陷 通过灰度梯度计算法线扰动(数学表达:$\Delta N \propto \nabla h(u,v)$,其中$h$为高度场)[^1][^4]。 - **法线贴图**: 使用**三通道RGB图像**存储法线向量。 - RGB值 → 切线空间下的法线方向$(x,y,z)$ - 转换公式:$\vec{N}_{\text{new}} = 2 \times \text{RGB} - 1$[^3][^4]。 2. **计算过程** - **Bump贴图**: 需实时计算高度场的梯度(偏导数)来扰动原始法线,计算开销较高[^2][^4]。 ```glsl // GLSL伪代码示例 float height = texture(bumpMap, uv).r; vec2 gradient = vec2(dFdx(height), dFdy(height)); vec3 newNormal = normalize(N + gradient.x * T + gradient.y * B); ``` - **法线贴图**: 直接读取存储的法线向量,仅需向量归一化操作,效率更高[^3][^4]。 3. **视觉局限性** - 两者均**不改变几何体轮廓**(例如边缘仍保持平滑)[^1][^2]。 - 当视角与表面平行时,凹凸假象易穿帮(如图)[^2]: ![视角穿帮示意图](https://example.com/normal-map-limitation.png) *图示:法线贴图在平视角度下表面实际平坦[^2]* --- #### **应用场景对比** | **特性** | Bump贴图 | 法线贴图 | |------------------|------------------------------|------------------------------| | **细节精度** | 低(依赖灰度梯度近似) | 高(精确存储法线方向)[^3] | | **硬件要求** | 低(适合移动端/旧硬件) | 需支持切线空间计算[^2] | | **资源开销** | 纹理小(单通道) | 纹理大(三通道) | | **典型用途** | 石材纹理、布褶模拟(远景) | 角色皮肤、金属划痕(近景)[^3] | | **生成方式** | 可由高度图转换 | 需烘焙高模或算法生成[^1] | --- #### **技术演进关系** 1. **Bump贴图 → 法线贴图** - 法线贴图是bump贴图的升级,直接存储预计算的法线向量,避免实时梯度计算[^1][^3]。 - 法线贴图能表现**方向性细节**(如非垂直凹凸),而bump贴图仅支持垂直高度变化[^4]。 2. **进阶技术** - **置换贴图 (Displacement Map)**: 真正修改顶点位置,解决轮廓穿帮问题(但需细分曲面支持)[^1]。 - **视差贴图 (Parallax Map)**: 通过UV偏移模拟深度,改善平视角度的视觉缺陷[^2]。 --- #### **性能与优化** - **实时渲染首选法线贴图**: 现代引擎(如Unity/Unreal)默认使用法线贴图,因其在同等细节下性能更优[^2][^3]。 - **混合方案**: - 远景物体:Bump贴图(节省带宽) - 近景物体:法线贴图 + 视差/置换贴图[^2] > 引用总结: > Bump贴图通过灰度扰动法线,法线贴图直接存储法线向量,两者均属"视觉欺骗"技术。法线贴图因精度和效率优势成为主流,但受限于几何轮廓不变性[^1][^2][^3][^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值