关于Unity中的光照(六)
反射探头
1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源,
unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cubemap中采样,就能显示反射效果了;
2: 反射探头的参数:
type: 设置反射探头的类型(baked, custom, realtime)三种类型;custom也是烘焙的,但是可以自定义
a:Baked烘培模式: 类似于光照烘培,把反射探头设置好后,将反射信息烘培到CubeMap中,当游戏运行的时候直接使用烘培好的CubeMap;
b:Custom(自定义模式): 与Baked模式的探头的用法相同,需要手动烘培才能看到效果。Custom提供了更多的参数可以设置,如Dynamic Object,将非静态的物体烘培到发射图中,但是不会随着物体的移动而改变;CubeMap选项可以制定烘培出来的Cubemap;
用Custom的baked烘焙的,可以不勾选cube的static,依然有反射纹理。步骤是先取消自动烘焙,再选择Relfection Probe组件的模式为custom,勾选Dynamic Object,拖进烘焙好的纹理ReflectionProbe-0.exr,点击baked。
c:Realtime模式: 可以实时的更新反射图,在这种类型的反射头不需要将被反射的物体勾选为Static, 能实时, 但是性能要求高;
Dynamic Object: 将场景中的没有标识为Static的对象烘培到发射纹理中;
Cubemap: 烘培出来的立方体纹理图;
Refresh Mode 刷新模式: OnAwake只在唤醒时刷新,EveryFrame 每帧刷新, Via Scripts 有脚本控制;
Time slicing: 反射画面刷新频率: All face at once: 9帧完成一次刷新(中等) Individual Faces: 14帧完成刷新(性能消耗低) no time slicing: 每帧刷新(性能消耗最大);
Importance: 权重,根据权重来混合不同Probe的反射情况;
Intensity: 反射纹理的颜色亮度;
Box Projection: 若是勾选此项, Probe的Size和Origin会影响反射贴图的映射方式;
Size:该探头的区域大小,在该区域内所有的物体都会应用反射(需要Standard着色器);
Probe Origin: 反射探头原点,会影响到捕捉到的Cubemap;
HDR 生成Cubemap中是否使用高动态范围图像(High Dymainc Range)这也会影响探头的数据存储位置;
Shadown Distance: 在反射图中的阴影距离,超过该距离阴影不会被反射;
ClearFlags: 设置反射图中的背景是天空盒或者是单一的颜色;
Background: 设置背景的颜色;
Culling Mask: 反射剔除,决定哪些层的物体是否进行反射;
Using Occlustion Culling: 烘培时,是否启动遮挡剔除;
Clipping Plances: 反射的裁剪平面,有near, far两个个参数
位置大小
1:反射探头是由物体挂载 Relfection Probe来决定的,位置设置完毕后需要设置大小;
(1)根据需要反射物体的大小对探针进行摆放,场景的中心,墙壁的角落, 若有一些物体比较小又有强烈的视觉效果(比如篝火), 就需要探头距离它很近能得到很好的反射效果;
(2)放好探头后要设置探头的大小,探头的形状似一个轴对称的立方体,如果在立方体内有对应的着色器,其反射效果就会根据其所在的反射探头的区域进行显示。若有多个探头,根据权重进行混合;
(3)默认情况下探头的原点是几何中心,可以通过Probe Origin参数进行偏移,一个大的物体来反射一个从边缘接近他的点。
循环反射
1:循环反射: 两个物体可以都反射,那么就会形成循环反射 --- interReflection;
2: Unity不能无限循环下去,可以设置循环次数: window-->Lighting-->Environment Lighting Reflection Bounes来控制反射的次数, 最大反射次数为5次;
反射探头实例
1.创建Unity工程和文件目录
2.把天空盒资源文件夹拖到res下,在res下创建一个Materials文件,在里面创建一个天空盒材质叫Skybox
3.设置材质球Skybox的Shader---->Skybox---->6sided,把天空盒的6张纹理关联到Skybox材质
4.创建一个平面plane,调大这个plane的大小scaleX=100,scaleZ=100
5.创建一个空节点Ref_object,添加反射探头的组件Relfection Probe,设置Clear Flag为Skybox,有一个黄色的框框,在这个框框内的物体都会参与反射

6.为了看见反射的材质,创建一个材质球ref在Materials文件夹下,勾选允许反射Reflections,调一下Metallic到一半,Smoothness到最高
7.把ref材质关联到plane的材质属性上,整个平面像一个镜子。
8.创建一个cube,设置为Lightmap Static,Ref_object设置type为baked,把cube移动到Ref_object的黄色框框的范围里面,这时候就可以看见plane有一个cube的反射和一个cube的阴影,如果去掉cube的static,就看不见反射,因为是烘焙出来的,对象必须是static。

9.如果没有节点Ref_object,是不会反射cube到plane的,因为plane的材质是原本设定好的反射,是勾选Reflections造成的,不是动态的,这个节点的作用就是在它的黄色框框的范围内如果有物体,会把这个物体在plane上的反射纹理添加到plane材质上,可以看到plane材质球有变化。

关于Unity中的光照(六)的更多相关文章
- 关于Unity中的光照(七)
全局光照 GI 这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红. 1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;2:Baked ...
- 关于Unity中的光照(五)
Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...
- 关于Unity中的光照(四)
渲染路径和颜色空间 1:Unity光影效果可以通过设置 渲染路径和颜色空间;2: 渲染路径: 光照到物体表面,物体着色的时候,算上光的颜色的时候有这么几种光照的着色方式,计算着色的方式 forward ...
- 关于Unity中的光照(三)
法线贴图 次时代游戏用的比较多 1:法线贴图是凹凸贴图技术上 的一种应用,有时也称为Dot3(仿立体)凹凸纹理贴图;2: 法线贴图是不增加多边形的情况下,增强模型的细节;3: 法线贴图是高精度模型导出 ...
- 关于Unity中的光照(二)
光源 1: 光照的本质:就是光的颜色和物体纹理的颜色的混合;2: 光源类型: 点光源,定向光源,聚光灯, 区域光源; 区域光的范围会在场景中用黄色的光显示出来; z轴是光的方向; 光的强度会随距离衰减 ...
- 关于Unity中的光照(一)
一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...
- 浅析Unity中的Enlighten与混合光照
0x00 前言 在Unity的5.6版本之前的5.x中,主要使用了Geomerics公司的Enlighten[1]来提供实时全局照明以及烘焙全局照明,在5.6之后Unity引入了新的Lightmapp ...
- 【Unity Shader】(六) ------ 复杂的光照(上)
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Sha ...
- Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照
转自冯乐乐的<Unity Shader入门精要> 通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...
随机推荐
- 使用Delaunay三角剖分解决求多边形面积的问题
朋友那边最近有个需求,需要框选一个选区,然后根据选区中的点求出面积.并且让我尝试用Delaunay来解决 似乎音译过来应该是德诺类 大致如下: 我在github上找了一个可以用的Delaunay库 h ...
- 当update的查询条件是数组的时候,upsert会失效
不管是findOneAndUpdate还是update方法,只要他们的查询条件是数组,upsert就会失效,比如: //这段代码只会更新已存在的数据,不存在的不会插入 tagModel.update( ...
- 添加多个CCArmature
CCArmatureDataManager::sharedArmatureDataManager()-> addArmatureFileInfo("armature\\Cowboy0. ...
- 使用 Jackson 树模型(tree model) API 处理 JSON
http://blog.csdn.net/gao1440156051/article/details/54091702 http://blog.csdn.net/u010003835/article/ ...
- jetty 7.0 笔记
codehaus download:http://dist.codehaus.org/jetty/ 找到7.0 tar.gz 解压 拉取 Lib下jar 和 Lib--jsp下jar 代码同启动 ...
- Python基本语法_强制数据类型转换
目录 目录 前言 软件环境 Python数据类型的显式转换 显式转换的多种类型 Non-String转换为String str函数 repr str和repr的区别 eval Non-int转换为in ...
- DCHP是什么意思
不是DCHP,应该是DHCP. DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部 ...
- RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例
交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...
- [转]Oracle的update语句优化研究
原文地址:http://blog.csdn.net/u011721927/article/details/39228001 一. update语句的语法与原理 1. 语法 单表 ...
- android 中使用jwt token(json web token)--java
http://blog.csdn.net/mingzhnglei/article/details/51119836 下面贴上自己项目中的一个小小的example import com.nimbusds ...