法线强度?

法线贴图甚至法线都并无强度一说,因为法线仅仅是一个方向数据,并不能存储任何“定量”数据。所谓“法线强度”的视觉效果:对于引擎,实际上是通过夸大或减弱法线方向对光照计算的影响来模拟的;而对于法线贴图自身,则通过​​直接修改存储在纹理中的法线向量数据​​实现。具体而言,是​​提升法线向量在切空间(Tangent Space)的 X(T)和 Y(B)分量值之间的整体对比度​​,这种操作​​实质上放大了法线贴图所编码的微观表面梯度​。当贴图中相邻像素的 T/B 分量值差异增大时,​​在后续光照计算中,这些修改后的法线诱导的反射方向偏移也更为显著​​,最终导致渲染图像呈现出​​更深的阴影、更锐利的高光以及更强烈的整体凹凸感​​——这正是用户端所感知到的“法线强度”提升的视觉效果来源。

代码

这是常用的调整法线贴图数据“强度”的算法:

HLSL
lerp(Normal, float3(0.0, 0.0, 1.0), strength)
点击展开查看更多

原理

在法线中,(0,0,1)表示完全垂直向上的法线(切线空间的“上方向”),当法线为(0,0,1)时,将失去法线效果,即纯蓝色的法线贴图。

调整法线强度示意图

0 ≤ ​strength ≤​ 1

strength < 0 和 strength > 1

当strength超过标准值[0, 1]时,法线的T/B分量会有可能超越原始值,即T/B分量增强了,对应到整个贴图中便是提升法线向量T分量和B分量值之间整体对比度,放大了法线贴图所编码的微观表面梯度,便会出现渲染图像呈现出​更深的阴影、更锐利的高光以及更强烈的整体凹凸感。

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/%E6%B3%95%E7%BA%BF%E8%B4%B4%E5%9B%BE%E5%BC%BA%E5%BA%A6%E8%B0%83%E6%95%B4/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键