(七)unity自带的着色器源码剖析之——————Unity3D的全局光照和阴影:中篇(光照探针和反射探针)

本文深入探讨Unity3D的光照探针和反射探针技术,包括光照探针照明的原理、场景布置、使用方法及限制。反射探针则用于动态生成环境映射,通过立方体贴图捕获周围环境。Unity提供了多种模式以适应不同的性能需求和场景类型。
摘要由CSDN通过智能技术生成

一、光照探针照明的细节

 1.1 光照探针照明概述

使用光照贴图可以大幅度提升场景渲染的真实程度,但缺点是光照贴图无法作用在非静态的物体上,所以看上去运动的物体和场景就显得恨不协调。为了解决这个问题,使用光照探针(probe lighting)技术模拟使用光照贴图的效果。光照探针大致原理:在某一光照探针的所在位置点上对光照信息进行采样,然后从该光照探针相邻的其他光照探针的位置上对光照信息进行采样,把这些采样得到的光照信息进行插值运算,便可算出这些光照探针之间某个位置的光照信息。在运行期这些插值的速度很快,可以达到实时渲染的要求。利用光照探针技术可以避免运动的物体的光照效果和整个使用静态光照贴图的场景不协调的感觉。

光照探针照明是一种能够快速而近似地模拟实际光照效果的技术。这种技术适用于类似游戏等需要实时渲染的应用场合,在这些应用中光照探针通常被应用在人物角色或者一些动态的物体上;还可以向使用了LOD技术的静态场景提供在渲染不同细节的场景时所需要的光照信息。光照探针技术在运行时的性能很高效,并且它用到的光照信息在运行之前快速地被预计算出来。

从实现技术角度来说,光照探针照明技术对照亮在3D空间中某一个指定点的光照信息在运行前的预计算阶段进行采样,然后把这些信息通过球谐函数进行编译打包存储。在游戏运行时,通过着色器程序可以把这些光照信息编码快速地重建出光照原始效果。Unity通过Light Probe组件实现光照探针照明技术的。

类似于光照贴图,光照探针也存储了场景中照明信息。不同在于光照贴图存储的是光线照射到场景物体表面的照明信息,而光探针则存储的是穿过场景中空白空间的光线信息。使用光照探针照明技术会有一些限制,例如要处理光的高频信息,球谐函数的阶数就要增大,而当提升阶数时所需要的性能耗费也会逐步提升。因此Unity在编码打包光照信息时用的函数都是低阶球谐函数,即会忽略光的一些高频信息。目前Unity使用了三阶球谐函数进行处理。

在3D空间中的一个位置点上,因为有且只使用一个球面表达式用于描述光照,所以光照探针照明技术不适合用于描述光线穿过一个很大的物体时的情况。在这种情况下光照会发生很大变动,从而无法精准地进行模拟。另一个限制就是,因为球谐函数是在一个球面上对光照信息进行编码,所以对于一个大型的有着平坦表面的物体,或者是一个有着凹面的物体,光照探针照明技术也是不适用的,如果想在一个大的物体上应用光照探针照明技术,则需要使用Light Probe Proxy Volume组件辅助实现。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值