基于线性余弦变换的实时多边形明暗处理
基于线性余弦变换的实时多边形明暗处理
动机
使用区域灯光进行着色可以为CG渲染添加大量真实感。然而,它需要求解球面方程,这使得实时渲染具有挑战性。在这个项目中,开发了一种新的球形分布,能够实时使用多边形灯光对基于物理的材料进行着色。
为什么多边形明暗处理很复杂?
使用多边形灯光进行着色需要在灯光覆盖的多边形域上集成BRDF。
尽管多边形灯光理论上是最简单的照明模型之一,但在实时渲染中具有挑战性,主要原因有两个:
问题1:积分球面上的参数球面分布
多边形通常是困难的,即使是最简单的分布。
问题2:最先进的基于物理的材料模型不是简单的分布;它们具有复杂的形状,具有各向异性的拉伸和偏斜,需要对其进行表示才能使材料看起来逼真。
线性变换余弦
为了克服这些问题,引入了线性变换余弦(LTCs),这是一种新的球面分布,涵盖了各种各样的球面形状,可以在任意多边形上进行解析积分。
定义
想法是从一个简单的钳制余弦分布开始,并对其方向向量应用线性变换。这允许控制分布形状的特性,例如粗糙度、各向异性和偏斜度。
BRDF近似
由于它们涵盖了各种各样的球形,线性变换余弦可以非常接近基于物理的BRDF。以下是GGX BRDF(左)与LTC(右)在不同入射方向下的近似示例。
当然,该近似并不完美,但对于不同的粗糙度和入射配置,它有效地恢复了BRDF的主要特征。
多边形集成
由于它们的线性不变特性,在多边形上积分LTC相当于在通过逆线性变换的多边形上积分原始的钳制余弦分布:它只是变换后的多边形的辐照度(形状因子),对于它可以使用闭式表达式!
其他属性
有了同样的想法,可以使用任何球形分布作为基本形状来创建一个新的具有参数粗糙度、椭圆各向异性和偏斜度的球形分布族。如果原始分布具有解析表达式、归一化、球面多边形上的积分和重要性采样,则这些特性由线性变换的分布继承。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-11-12 ElfReader-Elf文件类型
2021-11-12 TVM自定义修改代码示例