DirectX11 光照与材质的相互作用

光照与材质的相互作用对于3D物体的立体感和体积表现至关重要。DirectX11中的光照模型,如局部光照模型,用于实时渲染应用程序,平衡真实感和效率。全局光照模型虽能提供更逼真的效果,但实时应用中因资源需求较高而较少使用。本文主要探讨局部光照模型,并引用[Möller02]作为理论依据。

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

光照与材质的相互作用
1. 为什么需要光照?
下图展示了光照和阴影在表现物体的立体感和体积感时起到的重要作用。左边的球体没有灯照射,看上去就像是一个扁平的2D圆;而右边的球体有灯照射,看上去很立体。实际上,我们的视觉能力完全取决于光照及光照与材质之间的相互作用,所以,许多超写实场景的渲染工作都是通过精确的物理光照模型(lighting model)来实现的。(译者注:本章经常会提及“光照模型”个词,请读者不要将它与“3D网格模型”的含义混淆。“光照模型”不是指“用灯照射一个3D网格模型”,也不是指“支持光照运算的3D网格模型”。它的正确含义是“光照算法的数学模型(或者说数学公式)”。请读者一定要将“光照模型”与“3D网格模型”的含义区分开。)

这里写图片描述
(a)没有灯照明的球体看上去就像是一个2D圆。(b)有灯照明的球体看上去很立体。
当然,一般来讲,越精确的光照模型,花费的计算时间就越长;我们必须在真实感和速度之间寻求平衡。例如,电影中的3D特效场景可以做得非常复杂,可以使用更为写实的光照模型,因为电影中的帧是预渲染的(pre-rendered),电影制作者可以花费数小时甚至数日的时间来渲染一帧。而游戏是实时渲染应用程序,它至少要以每秒30帧的速度渲染场景。

注意,本书关于光照模型的解释和实现方法大部分来自于[Möller02]的描述。

2. 局部光照模型与全局光照模型

本书(和许多实时渲染应用程序)采用的光照模型都是局部光照模型(local illumination model)。在局部光照模型中,每个物体的光照都是相互独立的,所有的光线都是从光源直接照射到物体上(即,本来应该被场景中其他物体阻隔的线,仍然会照射到后面的物体上)。下图说明了局部光照模型的特点。

这里写图片描述
在现实环境中,如果墙壁挡住了从灯泡射出的光线,那么球体就应该位于墙壁的阴影之中。然而,在局部光照模型中,无论墙壁是否存在,球体都会被照亮。

与之相反,全局照明模型(global illumination model)不仅会考虑光源对物体的直接照明,也会考虑场景中的其他物体反射造成的间接照明。它之所以被称为全局照明模型,就是因为它在照亮一个物体的同时,也会考虑到整个场景中的其他因素。对于实时游戏来讲,全局照明模型占用的系统资源量过大(虽然它可以渲染出接近于照片的超写实场景)。目前,实时全局照明(real-time global illumination)的实现方法还处于探索阶段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值