原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0402/435.html
Unity5.x Reflection Probe引见
本篇文章给大家引见下Reflection Probe, 大家都晓得:当运用规范着色器时,每一个材质都会具有一定水平的镜面反射(specularity)和金属反射(metalness)属性,在没有强大的硬件来处置即光阴迹追踪反射的状况下,我们常州网站开发建设得仰赖预先计算着色反射,我们运用了一个由六张描绘天空的图片所组成的方体恤图(Cubemap)然后在和其他光和地表信息混合运算来仿真好像我们真实世界看到的反射效果。
从Unity 5.x开端,我们能够反射探头(Reflection Probe)产生贴图来模仿反射。
工作原理:在某个定点搜集环境信息,动态生成cubemap 反射贴图。
![Unity5.x Reflection Probe介绍](/uploads/allimg/190402/2310491595-0.jpg)
当一个物体横跨了多个Reflection Probe的时分, 他的Mesh Renderer中会自动参加一切他触及到的Reflection Probe. Weight是经过计算每个他触及的Reflection Probe和这个物体之间间隔来得出的。 另外还能够单独调理Reflection Probe的”Importance”这个参数来手动干预这个计算结果。
![Unity5.x Reflection Probe介绍](/uploads/allimg/190402/2310495T6-1.png)
Mesh Renderer的Reflection Probes游戏开发运营选项可以选择四种运用Reflection Probe的办法:
1.Off:代表不运用Reflection Probe。
2.Simple:代表只运用列表中Weight值最大的那个ReflectionProbe。
3.Blend Probes:should be used for interior objects, that way you’ll ensure that object won’t accidentally use reflections from skybox (a.k.a default reflection)。
4.Blend Probes And Skybox:should be used for exterior objects, that way when object leaves the bounding box of reflection probe, it will gradually switch reflections from reflection probe to skybox。
下面我们讲一下Refelection Probe的面板参数,这里只讲无法第一时间测试出意义的参数。 其他参数都比拟简单。
![Unity5.x Reflection Probe介绍](/uploads/allimg/190402/23104953O-2.png)
Type选择类型, 三种可选:
Baked:用于烘焙形式的,在Lighting面板下点击Bake停止烘焙光照贴图时,生成对应的反射贴图。
Custom:自定义一个cubeMap来指定反射贴图,选择Dynamic Objects可将非静态物体也给Bake出来。
Realtime:实时生成反射贴图,但是和实光阴照一样的耗费性能,
细致参数见下:
Time Slicing---官方文档上说这个选项仅仅针关于当我选择了Every frame作为刷新形式的状况, 实则不然, 由于不论是On Awake还是Every frame还是Via scripting, 这个Time Slicing都是有效果的, 常州手游开发要理解这个选项。 首先要理解一下Reflection Probe的内部生成机制, 一个Realtime的Reflection的生成有三个步骤:第一个步骤要计算一个Cubemap的六个面, 第二步要思索这个Cubemap的mipmap(文档上说为了支持Glossy Reflections, mipmap是必要的, 而Glossy Reflections关于调理不同水平的Smoothness时是有一定效果上的提升的), 第三步是将计算结果拷贝到Cubemap中。
那么TimeSlicing的三个选项分别有不同的三步计算所需帧数:
All faces at once---9帧, 性能耗费中等。 (9帧之内再次经过Via Scripting调用刷新是无效的)
Individual faces---14帧(在9帧的根底上加了将六个面分为六帧的那多出来的五帧), 性能耗费最低。(14帧之内再次经过Via Scripting调用刷新是无效的)
No time slicing---1帧。 一切动作都在同一帧执行, 这种性能耗费最大。 (1帧之内再次经过Via Scripting调用刷新是无效的)
Importance---影响了一个MeshRenderer中的多个ReflectionProbe的Weight的自动混合比例。 当一个物体处在多个Reflection Probe的”领地”内的时分, 首先会思索每个Reflection Probe的Importance, 之后, 在此根底上才会思索每个Reflection Probe与该物体之间的分别的穿插的体积的大小。 也就是说Importance的优先级高于穿插体积的计算。
关于穿插体积的计算: For ex, if the first volume is 1.0 and the second is 2.0, then first probe’s influence will be 1.0 / (1.0 + 2.0) = 0.33, the second probe’s influence will be 2.0 / (1.0 + 2.0) = 0.67. 还有一种特殊状况, 就是就是一个小的Probe套在一个大的Probe里面, 而一个物体又完整在这个小的Probe里面, 那么对这个物体来说, 小的Probe的Weight会是1, 大的会是0. 而当这个物体逐步脱离这个小的Probe的时分, 那么小的Probe和大的Probe关于这个物体的Weight会停止一个混合。
Size---该Reflection Probe的影响范围。 进入这个范围的MeshRenderer会自动和这个Reflection Probe产生关联。 同时, 当Box Projection开启的时分, 这个Size也会影响Reflection Probe的UV映射。
Probe Origin---取样点相关于影响范围中心的偏移。 当勾选了Box Projection的时分, Probe Origin的位置会影响Reflection Probe的UV映射。
Box projection:普通状况下,反射cubemap是被假定在无限远出投射出来的图像,不同的角度都能看到反射的团,但是当你间隔反射物体远近改动时,这个反射的图案不会发作改动,这个特性,普通状况下,在室外场景很适用,但是到了室内就不行了,
开启Box projection 选项,(支持Shader Model3以上平台可用)允许我们常州游戏开发培训创立一个投射有限间隔内的物体,当我们与反射物体间隔发作变化时,反射图案的尺寸也同样发作变化,Probe Size以及Probe Origin会影响Reflection Probe的映射图案的效果。
Shadow Distance---反射阴影间隔, 特性和Quality Setting中的特性一样, 数值越小, 在反射画面中阴影显现越近, 但阴影越精密, 调成0会完整关闭阴影。
上篇:上一篇:Unity渲染次第
下篇:下一篇:unity项目优化手段