部分内容摘抄自:https://www.cnblogs.com/murongxiaopifu/p/8553367.html

直接光和间接光

大家都知道在Unity中,我们可以在场景中布置方向光、点光、聚光等类型的光源。但如果只有这些光,则场景内只会受到直接光的影响,而所谓的直接光简单理解就是从光源发出的直接影响物体的光。如果只考虑直接光的影响,则会缺乏很多光影细节,导致视觉效果很“平”。而间接光则描述了光子在物体表面之间的反弹,能够用来增加细节以及真实感。

例如上图中,位于天花板灯直射光线之外的区域缺乏光照效果。表现为四壁上没有明暗细节,相反此时直接光范围之外都是均匀的黑色,而整个空间同样也显得十分平。

而增加了间接光之后进行渲染,可以看到光被物体表面反弹,彩色光从一个表面转移到另一个表面。表现为红色墙壁和绿色墙壁(在右侧和红墙相对,没在画面内)的颜色反映到了场景中的其他表面上,四壁也不再是均匀的黑色,而有了层次感。

混合光照

使用混合光照和直接使用烘焙的lightmap有什么区别呢?简单来说,选择“混合”烘焙模式,会将标记为静态的GameObject受到的来自混合光源的光照信息保存为Lightmap。 然而,与标记为“烘焙”的灯光不同,混合光源也会为场景中的非静态(动态)GameObject提供实时的直接光照。

Unity HDRP中的测试

首先打开window - rendering - lighting setting ,可以看到Mixed Lighting 选项卡。

一 无Baked Global illumination

如果我们对Baked Global illumination不勾选,则会提示,场景中的Baked光源和Mixed的光源会被默认改成Realtime的实时光。

场景中Baked模式的光源,提示已被改为Realtime模式。

1.光照

黄色的光源为Baked模式,左侧球体为static,右侧球体为动态物体,此时可以发现由于Baked的光源被改成了Realtime模式,导致右侧的动态小球也可以接收到光照。

2.阴影

此状态下如果加入一个静态物体(红色面板)进行阴影的测试,也会发现本来是Baked模式的黄色光源对动态物体也会产生阴影

 3.Emission

此模式下,由于没有烘焙,绿色和红色的emision物体也无法产生间接光,场景中的物体都没有受到红色和绿色物体的影响。

二 ShadowMask

当在Lighting Setting中设置为ShadowMask模式后,可以发现场景中类型为Mixed的Light中的ShadowMask Mode有两种模式,一种是ShadowMask,一种是Distance ShadowMask,两者的区别在于阴影的渲染。

1.光照

Mixed类型的光无论是设置为ShadowMask还是Distance ShadowMask,对光照的着色渲染都是相同的。对于静态物体使用lightmap,对于动态物体使用实时光。Baked类型的光则是只能对静态物体产生影响,动态物体需要使用LightProbe才能受到影响。

2.阴影

对于Baked类型的光源,静态物体对静态物体投射阴影是通过ShadowMask,静态物体对动态物体投射阴影也需要通过LightProbe。动态物体则不能投射阴影。无论是ShadowMask还是LightProbe,都是预先计算的,因此也没有实时阴影ShadowMap中的Shadow Distance的限制,也就是说无论物体距离多远都会有阴影。

ShadowMask模式

如果MixedLight中的Shadowmask Mode设置为ShadowMask(不要和Lighting Setting中的ShadowMask搞混)对于MixedLight类型的光源静态物体投射阴影时和Baked类型光源投射状况相同。动态物体投射阴影时则会采用ShadowMap的实时阴影。

如下图,MixedLight类型的光源,红色面板为静态物体,左侧球体为静态,可以通过ShadowMask正常接收静态阴影,右侧小球因为是动态,则不能直接接收静态物体投射的阴影,如果需要接收,则要使用LightProbe。

如果把红色面板改为动态的,则两个小球都会通过ShadowMap方式接收阴影。

ShadowDistance Mask模式

如果MixedLight中的Shadowmask Mode设置为Distance ShadowMask,在distance范围内,无论是静态还是动态物体投射阴影,都将使用ShadowMap的实时阴影。

而如果超出Distance,则对于静态物体投射时,回归到和ShadowMask一致,对于动态物体投射时则没有阴影。

在distance范围内,通过实时阴影都可以正常接收阴影。

3.Emission

由于有lightmap的支撑,emission对间接光的贡献也可展示出来,可以看到静态的球体(左下和右上)会受到右侧红色面板的影响。

三 Baked Indirect

此模式下,事实上这个混合模式的名字就已经十分直白了——它只烘焙间接光,其他的全部是实时的。Shadowmask贴图?不存在的。
因此我们有了实时光、实时阴影等等。所以,在Shadow Distance的范围之内和实时光下效果一样,阴影是实时的shadow map,并且在shadow distance之外不会有阴影产生——哪怕是分辨率比较低的模糊阴影也没有。

1.光照

对于mixed类型的光(紫色),左侧球体(静态)和右侧球体(动态)都会受到该光源的影响,左侧静态球体是通过lightmap获取,而右侧则是实时的。

对于baked类型的光(黄色),左侧球体(静态)受到该光源的影响,右侧球体(动态)则不会受到该光源的影响。动态物体需要使用LightProb才能接受到baked类型光的影响。

2.阴影

在Baked Indirect模式下,无论是Mised Light还是Baked Light,在距离小于shadow distance时都将会投射shadowMap实时阴影,而大于shadow distance后将没有阴影。

3.Emission

由于有lightmap的支撑,emission对间接光的贡献也可展示出来,可以看到静态的球体(左下和右上)会受到右侧红色面板的影响。

总结

1.总结下对于MixedLight类型的光,在各模式下其光照和阴影的情况(感谢此图原作者大佬)

2.Emission的间接光:只有静态物体可以产生,动态物体如果想接收需要LightProbe

3.动态物体想接收Baked的间接光或者阴影都得需要LightProbe

4.HDRP也有实时间接光,但是Spot和Point Lights并不支持。

5.别被ShadowMask搞蒙圈,对于Baked类型的光,只有ShadowMask和Baked Indirect的差别。

Unity HDRP中的光照烘焙测试(Mixed Lighing )和间接光相关推荐

  1. Unity HDRP中解决抗锯齿问题

    使用Camera相机组件属性(Anti-aliasing)为界面添加抗锯齿效果. 在默认状态下,将Anti-aliasing设置为 No Anti-aliasing,这里有三个选项: (按性能消耗的大 ...

  2. Unity移动平台下的烘焙使用及优化

    这是侑虎科技第436篇文章,感谢作者文雅供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群465082844) 作者也是U Sparkle活动参 ...

  3. 自定义光照烘焙和采样

    一: 光照烘焙: 1.静态光照烘焙: 静态物体 烘焙 lightMap 所以需要对lightMap 采样 // 采样烘焙LightMap光照 float3 SampleLightMap(float2 ...

  4. Unity5中的光照简介

    unity 5中的光照可以用整本书来说明,此文是过去几个月使用 unity5 的简单汇总.下面主要分6个部分来讲解. Forward(前向)与Deferred(延迟)渲染 Realtime(实时)与B ...

  5. (转)Unity 5.6 光照烘焙系统介绍

    Unity 5.6 光照烘焙系统介绍 一. 基本概念 1. 直接光照.间接光照 直接光照:光源直接照射到物体上,并反射到眼中的光照. 间接光照:光源先照射到其它物体上,并经过一次或多次弹射,最终抵达到 ...

  6. Unity 5 中的全局光照技术详解

    简介 全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算. ...

  7. Unity HDRP烘焙技术原理及应用

    您要找的是不是UWA学堂的<Unity HDRP烘焙技术原理及应用>? 文章简介 Unity的HDRP是高清渲染管线(High Definition Render Pipeline)的简称 ...

  8. Unity引擎光照烘焙

    光照烘焙 一.先将系统中的光源去掉,会发现场景还是亮的.将天空环境光去掉(Windows-> Rendering->Lighting) 将Environment Lighting, Env ...

  9. [Render] 适用于高级Unity创作者的通用渲染管线[4] - URP中的光照

    RuntimeMapMaker3D-Pro 英文原文:https://resources.unity.com/games/introduction-universal-render-pipeline- ...

最新文章

  1. 混淆矩阵(confusion matrix)是什么?以及能从混淆矩阵中衍生出来的指标FPR、TPR、FDR、ACC、PPV、NPV分别是什么?对应的概念及公式是什么?
  2. 当你打开的程序在任务栏出现两个一样的怎么办?
  3. LeetCode两数相加
  4. python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集
  5. Java @Deprecated注解
  6. PHP导出excel
  7. 人在低谷是最应该看的六句话!(深度好文)
  8. Error: Cannot retrieve metalink for repository: epel.
  9. C# 数据类型 数据转换 自己的见解和方式
  10. 到 Google 面试去!开发者必读的避坑指南
  11. 程序显示文本框_vb程序语言题库
  12. 偷懒才能编程序——计算机达人成长之路(18)
  13. 如何通过5S管理改变工作环境?
  14. 自动化爬虫selenium之键盘操作
  15. python_计算一张纸对折多少次超过珠峰
  16. PDF文档无损去签名去口令
  17. 超声波模块HC-SR04简介以及编程
  18. WPF:MouseDown、MouseUP事件,鼠标按下不起作用
  19. Maven 创建 Spring、SpringMVC、Mybatis(SSM)项目
  20. STATA 森林图 Logistic可视化

热门文章

  1. java获取0点的时间戳_Java获取凌晨时间戳的方法分析
  2. python怎么清理垃圾_Python 中的“垃圾”是怎么回收的?
  3. Remove One Element(贪心)
  4. D - 邂逅明下 HDU - 2897(有点水平的巴什博奕)
  5. html怎么给边框改样式,html里面怎么设置边框?html边框样式设置方法
  6. 从sqlserver中数据写入mysql_从SQL server数据库导入Mysql数据库的体验
  7. 『数据库』朴实无华的数据库绪论
  8. Spatial Transformer Networks(STN)详解
  9. 【OpenPose-Windows】error1 OpenPose项目加载失败
  10. PADS 中的 PIN TYPE 说明