关于Unity中的光照(七)
全局光照 GI
这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红。
1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;
2:Baked GI:通过烘培光照贴图的方式获得很好的光照效果,无法实时的改变光照;
3: 预先计算全局光照: Precumputed Realtime GI
实时光照不能很好的显示间接光照的效果, 比如实时光照到一个红色的物体上。
红色物体发生反射,本来如果是实时不会有反射,如果使用预先光照,那么会预先计算好静态物体的反射, 让物体显示出间接光效果;
4: 环境光
预先全局光照思路
先把物体标记为静态,预先把光的反射计算出来,实时光照+光的反射=既有实时光照又有反射,性能也不错。
1: 使用实时光照,编写场景;
2: 开启预先光照选项 Window --->Lighting-->Scene面板-->Precomputed Realtime GI;
Realtime resolution代表间接光照分辨率,值越高间接光照效果越明显,间接光就是太阳照在物体上,物体反射出的太阳光就是间接光。
3: 运行场景,看到光源角度变化后,场景中的光影效果也是实时的;
4: 通过预先光照,有效的降低了原本要在游戏中实时计算的全局光照运算数量,若用户需要在游戏中频繁的对光源修改颜色,光源方向,光源强度,一般使用预先光照;
5: 预先光照也是针对静态物体而言;对于动态物体时不会计算预先光照的;
6: 实时光照 + 预先光照 对静态物体生成反射效果;
全局光照GI实例
1.创建Unity工程和文件目录
2.去掉环境光Window---->Lighting---->Skybox设置为none
3.创建一个平面plane和一个立方体cube搭建静态场景,创建Materials文件夹,里面再创建一个红色的材质球

4.使立方体cube关联红色材质球,这时候光线照下来,发现地板plane上只有恨生硬的阴影。

5.创建一个脚本来控制太阳光源绕着世界坐标的y轴旋转,使得光照不断变化,脚本叫rotate_lighgt,挂载在Directional Light节点下
打开rotate_lighgt:
using UnityEngine;
using System.Collections; public class rotate_light : MonoBehaviour { // Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
this.transform.Rotate(Vector3.up, Time.deltaTime * , Space.World);//绕世界的y轴旋转,1秒钟转50度,Space.World是让它绕世界坐标系的y轴旋转,没写的话会绕它自己坐标系的y轴旋转
//显然,Time.deltaTime是按照每秒来统计的。 Update()的刷新是按照每帧来显示的,但是Time.deltaTime是按照秒来统计的。
} //我的理解是我们这里只设置它1秒钟,也就是1个Time.deltaTime转多少度,系统会帮我们计算每一帧该转多少度(除于60),然后每次update的时候都转这个它自己计算好的角度
}
6.把cube和plane都标记为static,打开预先光照Window---->Lighting---->Scene---->Precomputed Realtime GI,出现反射光,比之前的逼真

光照总结
分类:
1.实时光照:模拟现实生活中的光照打在物体上,分为点光源,聚光灯,太阳光
这些光有一些特性如:Draw Halo光晕,Flare耀斑(光源对着摄像头才能看见)
特点:不能参与反射,就直接光照加阴影,性能开销大
2.baked光照贴图:把光源都配置成baked或者mixed模式,把物体都配置成static,烘焙出整个的光照贴图,区域光源只有在这个模式下才能使用
特点:效果和性能都很好,但是再也不能改变
两个问题:1.动态物体进到场景中怎么办---->光探头Light Probes,动态物体收集光探头信息,最后把光探头信息作用在动态物体上面,所以动态物体就能很好地融合到静态烘焙好的光照场景里面
2.没有反射,想做倒影怎么办---->反射探头Reflection Probes,在场景中布置一个反射探头的点,布置好了以后,
会把周围的物体的投影反射到动态材质上面,某个物体(plane)再贴上这个动态材质显示出来,这样就能显示出倒影。
反射探头模式:1.realtime 2.baked 3.custom(和baked模式唯一不同的是手动关联反射贴图,勾选Dynamic Object,可以不勾选cube的static)
3.预先光照:由于光源不参与反射,当光打到红色物体上,明明应该有红色的光反射出来,但是只有黑黑的阴影,效果不好,这时候就要使用预先光照。先把物体标记为静态,预先把光的反射计算出来,实时光照+光的反射=既有实时光照又有反射,性能也不错。
技术:
1.天空盒SkyBox,用在两个地方,一个是只对摄像机有用的,一个是全局Window---->LIghting---->Scene---->Environment Lighting下面的
2.自发光材质Emission
3.法线贴图(Normal map),希望模型更精细又不增加模型顶点
4.环境遮罩贴图(Occulsion),更加逼真的模型贴图,黑色(不透光)白色(透光)纹理图
5.光照过滤cookies(窗户投影),黑色(不透光)白色(透光)纹理图
6.二级纹理贴图Secondary Maps
7.环境光的设置Environment Lighting
自带的shader模式:
1.Mobile Diffuse
2.Standard
3.Lagacy Shaders---->Bumped Diffuse(既能带基础的漫反射贴图又能加法线贴图)
关于Unity中的光照(七)的更多相关文章
- 关于Unity中的光照(六)
反射探头 1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源, unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cu ...
- 关于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种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...
随机推荐
- Machine Learning Library (MLlib) Guide, BOOKS
download.microsoft.com/download/0/9/6/096170E9-23A2.../9780735698178.pdf Microsoft Azure Essential ...
- Android 支付宝接口调用
在近期,公司需要开发一个关于在线支付的模块,所以需要用到第三方支付平台 转载请注明出处:http://blog.csdn.net/ht_android/article/details/45307165 ...
- [开源项目-MyBean轻量级配置框架] MyBean的特性和MyBean的开始
[概述] 自从mBean框架出生后,受到很多朋友的关注,在公司的外包项目中得到了不错的应用.由于mBean是公司的项目,不便开源,于是这几天利用晚上的时间和周末的时间重写了底层beanMananger ...
- hdu3938(最小生成树,推荐)
题意描述:简单的讲就是,给你一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a.b两点之间的多条路径中的最长的边最小值! 思路:这题目有多个询问,肯定要用离线输出.思路 ...
- Android背景颜色渐变
●使用XML的方式为背景添加渐变效果 1.在res/drawable文件夹里添加一个jbshape.xml文件,然后写入如下代码: <?xml version="1.0" e ...
- 正则表达式-python-无捕获分组与分支选择
无捕获分组 当你要将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时,你需要将这部分规则用 (?:) 把它包围起来. 分支条件 在正则表达式中,分支条件是一个很常用的条件. 满足条件A 或 ...
- Mybatis之工作原理
1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,它支持定制化 SQL.存储过程以及高级映射的优 ...
- 基于jQuery仿迅雷影音官网幻灯片特效
分享一款基于jQuery仿迅雷影音官网幻灯片特效迅.雷影音官网jQuery幻灯片特效是一款带左右箭头,索引按钮切换的jQuery幻灯片代码.效果图如下: 在线预览 源码下载 实现的代码. html ...
- 【转载】TCP协议要点和难点全解
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的 ...
- js如何获取到本周的第一天和最后一天,本月的第一天和最后一天以及本季度的第一天和最后一天
1.首先来一个自己公司项目的源码: 项目需求描述: 从20150712日开始, , 需求①:根据当前时间返回每一周 .周一~周日的日期(需返回2种格式 格式1:7月13日,格式2:2015-07-13 ...