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

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

直接光和间接光

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

Local_illumination.JPG


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

Global_illumination.JPG


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

混合光照

使用混合光照和直接使用烘焙的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的差别。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊Unity项目管理的那些事:Git-flow和Unity

感谢原作者https://www.cnblogs.com/murongxiaopifu/p/6086849.html 0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了。敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理。项目从最初使用svn到之后的Git One Track策略再到现在的GitFlow策略,中…

聊聊网络游戏同步那点事

写的非常好的一篇博文,转载自https://www.cnblogs.com/murongxiaopifu/p/6376234.html 0x00 前言 16年年底的时候我从当时的公司离职,来到了目前任职的一家更专注于游戏开发的公司。接手的是一个platform游戏项目,基本情况是之前的团队完成…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(1)

The Rendering Pipeline 渲染表现差有可能取决于CPU端(CPU Bound)也有可能取决于GPU(GPU Bound).调查CPU-bound的问题相对简单,因为CPU端的工作就是从硬盘或者内存中加载数据并且调用图形APU指令。想找到GPU-bound的原因会困难很多&#xff…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(2)

Lighting and Shadowing 现代的游戏中,基本没有物体能在一步就完成渲染,这是因为有光照和阴影的关系。光照和阴影的渲染在Fragment Shader中需要额外的pass。 首先要设置场景中的Shadow Casters和Shadow Receivers,Shadow Casters投射阴影&…

Unity 2017 Game Optimization 读书笔记 The Benefits of Batching

batching(合批) 和大量的描述一个3D物体的数据有关系,比如meshes,verices,edges,UV coordinates 以及其他不同类型的数据。在Unity中谈论batching,指的是用于合批mesh数据的两个东西&#xff1a…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (3)

Rendering performance enhancements Enable/Disable GPU Skinning 开启GPU Skinning可以减轻CPU或GPU中Front End部分中某一个的负担,但是会加重另一个的负担。Skinning是mesh中的顶点根据动画中骨骼的当前位置进行计算,从而让角色摆出正确的姿势。 …

Unity手游开发札记——布料系统原理浅析和在Unity手游中的应用

原文:https://zhuanlan.zhihu.com/p/28644618 0. 前言 项目技术测试结束之后,各种美术效果提升的需求逐渐成为后续开发的重点,角色效果部分的提升目标之一便是在角色选择/展示界面为玩家提供更高的品质感,于是可以提供动态效果的…

行为树(Behavior Tree)实践(1)– 基本概念

原文:http://www.aisharing.com/archives/90 行为树(Behavior Tree)实践(1)– 基本概念 自从开博以来,每天都会关心一下博客的访问情况,看到一些朋友的订阅或者访问,不胜欣喜&…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (4)

Optimizing Unity UI 本章讲探讨一些能够提升UGUI性能的优化方法。 1.Use more Canvases 一个Canvas的主要任务就是管理它层级下的所有UI元素,并且通过Draw Call去渲染它们。其中Canvas一个重要的事儿就是对这些元素进行合批来减少draw call。但是如果对Canvas或…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (5) Shader优化

Shader optimization Fill Rate和 Memory Bandwidth开销最大的地方就是Fragment Shader。开销多大取决于Fragment Shader的复杂程度:多少纹理需要采样,多少数学计算函数需要使用等等。GPU的并行特性意味着在线程中如果任何地方存在瓶颈,都会…

团队行为心理学读书笔记(5)执行力背后的行为心理学

违纪行为若没有得到及时惩处,就会蔓延 破窗效应 美国斯坦福大学心理学家菲利普辛巴杜在1969年进行了一项实验,他把两辆一模一样的汽车停在了不同的两个社区,其中,一个社区是加州帕洛阿尔托的中产阶级区,另一个则是治…

Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (6)

1. Use less texture data 这条优化技巧非常直接,减少texture的数据量,减少分辨率或者降低位数,虽然可能会降低渲染质量。但是通常使用16-bit textures并不会明显的感觉到渲染效果下降。 MipMap技术可以有效减少VRAM和Texture Cache之间来回…

LeetCode 面试题57 - II(剑指offer) 和为s的连续正数序列

今天毕业五年了,一直忙于工作和享受,自从当年找完工作后就一直没有再刷过题,作为搬砖的码农,觉得还是应该养成长期刷题的习惯坚持下去。之前坚持了每天被一会单词,如今雅思一本也快看完了,从今天开始准备在…

反走样技术相关文章

https://zhuanlan.zhihu.com/p/28800047 https://zhuanlan.zhihu.com/p/57503957 https://zhuanlan.zhihu.com/p/33444125 https://zhuanlan.zhihu.com/p/33444429 走样的原因及其分类 说到走样,首先要说的就是采样。这也算是很多图形学专著中提到反走样相关技…

求n的阶乘的算法框图_单片机常用的14个C语言算法

问:怎么每天看到这种文章?答:只需搜索公众号"51单片机学习网"免费关注算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述&#xff…

LeetCode 286. 墙与门 多源BFS和DFS

思路1&#xff1a; DFS&#xff0c;对于每个门进行一次DFS搜索&#xff0c;记录每个位置对每个门的距离&#xff0c;当有更小距离的门时更新这个数值 public void WallsAndGates(int[][] rooms) {for (int i 0; i < rooms.GetLength(0); i){for (int j 0; j < rooms[i]…

安卓手机充电慢_非 iPhone 12 独享,安卓系统手机也能用 MagSafe 充电|手机|安卓系统|充电器|安卓手机...

关于苹果日前的新品发布会&#xff0c;最让我感兴趣的并不是它的主角 iPhone 12 系列&#xff0c;而是一同推出的 MagSafe。因为它不仅解决了使用无线充电时必须对准的问题&#xff0c;而且还能让用户边充电边玩游戏。不过最近外媒发现&#xff0c;MagSafe 并不是 iPhone 12 专…

贝塞尔曲线

文章参考于&#xff1a;https://www.jianshu.com/p/0c9b4b681724 https://gameinstitute.qq.com/community/detail/129188 贝赛尔曲线的前世今生&#xff1a; 贝塞尔曲线&#xff0c;这个命名规则一眼看上去大概是一个叫贝塞尔的数学家发明的。但&#xff0c;贝塞尔曲线依据…

如何控制局域网网速_单臂路由|N1盒子(OpenWRT)单线多拨实现网速叠加

受于某些现实条件&#xff0c;有些同学苦于家里的网络带宽太小无法尽情冲浪。如何在不额外花钱升级宽带的情况下提升家里网络呢&#xff1f;且看一个盒子加路由器即可实现网络单线多拨&#xff0c;成倍提升网速完成网速叠加。题图是我家里的路由器加N1盒子。前置条件光猫有超级…

linux离线安装redmine_Linux 下一款非常好用的翻译软件

前面有一个半月的时间&#xff0c;我非常详细且非常基础的介绍了 Ubuntu 18.04 desktop 桌面系统的安装和基本使用&#xff0c;在知乎上也开了一个专栏《Linux 漫游之旅》&#xff0c;上面记录了所有的文章&#xff0c;这个专栏的目的呢是手把手教新接触 Linux 操作系统的朋友如…