关于Unity中的光照(五)
Mobile Diffuse
Unity自带的一种shader,用的比较多,性能还可以。我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区别
1: 漫反射着色器, 最简单的3D着色模式;光照在物体上,漫反射就是原本是什么样的颜色,就显示什么样的颜色。
2: 模型顶点,到顶点的纹理坐标,到着色的时候选择纹理上的颜色着色;
3: 在光照之前,你把纹理本来的颜色着色上去,参与光照,漫反射部分;
Standard
Unity自带的一种shader,使用后要把Main Maps---->Albedo的颜色调到最亮,是一种比较自然的shader
1: 基于物理学的着色是用模拟现实的方式呈现出材质和灯光之间的相互作用, 基于物理学的着色器给用户营造出连续性。;
2: 为了表现出真实的灯光, 标准着色器模仿了能量存储(物体反射的光源不大于它接收的光源), Fresnel反射(视线不垂直于物体表面时夹角月小,反射越明显), 表面遮蔽;
3: Stander着色器的参数:
Rendering Mode: 四种渲染模式;
(1) Opaque模式:这种模式代表该着色器不支持透明通道, 物体是完全不透明的;
(2) Cutout模式:这种模式下支持透明通道,要么就透明,要么就完全不透明,图片内容是否透明,由Albedo的Alpha值和Alpha Cutoff决定的。适合制作叶子,草灯,带有透明通道的图片但不希望出半透明效果的材质;
(3) Fade模式: 褪色模式,改模式下可以操作Albedo的Color的Alpha值来操作材质的透明度,比较适合做物体渐渐淡出的动画效果, 当Alpha值降低了以后,表面的高光和反色也会变淡;(经常用于游戏中怪物死亡的时候淡出效果)
(4) Transparent模式: 这种模式下的材质通过Albedo的Color的Alpha值来操作材质的透明度,当物体为半透明的时候,表面的高光和反色不会变淡;
Albedo: 漫反射纹理图,也可以设置颜色和透明度, 纹理颜色 + 调和颜色;
Metallic: 金属性,值越高,发射效果越明显;
Smoothness:影响反射时表面的光滑程度,值越高,反射效果越清晰;
Specular: 高光。颜色可以自行设置;
Normal Map: 法线贴图;
使用:1.把法线的纹理贴图的Texture Type设置为Normal Map 2.在材质的Normal Map属性里选择法线纹理贴图
Height Map: 高度图, 通常是灰度图;
Occlusion: 环境遮罩贴图。
遮罩贴图,是一种模型的表面应该接受多少间接反射的图片,一个表面凹凸不平的物体,在其凹下的地方应该接受较少的间接光照,遮挡图是一张灰度图,白色表示完全的间接照明,黑色表示完全不接受间接照明;
使用:1.材质贴好纹理和设置好shader 2.把res下的lowpoly robot01DiffuseMap.png拖进材质的Occlusion属性中,看起来更加真实
遮罩前 遮罩后
Emission: 自发光属性,开启后类是于一个光源,可以调节GI模式;
Detail Mask: 细节遮罩贴图。当某些地方不需要细节图,可以使用遮罩图进行设置。
Tiling: 贴图的重复次数;
Offset: 贴图的偏移量;
Secondary Maps: 二级细节贴图,可以让主贴图Main Map更加精细;
又叫Detail Map,材质的次级贴图,又叫细节贴图,它的作用是展示第一组贴图中没有显示的材质细节效果, Unity允许用户在一个材质上添加一个次级的漫反射贴图和法线贴图;
光探头
1:光照贴图都是应用于静态物体,如果一个非静态物体在烘培好的Lighting map的场景中移动,当它挡住某个物体的光照的时候,烘焙好的这个物体依然显示光,而这个非静态物体表面也没有光照,很突兀。
这样不能很好的融合到烘培好的场景中,最理想是实时计算,但是达不到理想的效果,针对这种提出光探头;
2: Light Probes 的原理是在场景中放上若干采样点,收集采样点的周围的光暗信息;然后在附近的几个点围城的区域内进行插值,将插值结果作用到动态物体上;
3: Light Probes应用细节:
(1)没有必要在光影无变化的区域内布置多个采样点;
(2)在动态物体的活动空间来进行部署,不必要全部空间都部署;
(3) 在我们的一个节点上,添加Light Probes Group组件,来进行部署光d探头
4: 在物体的Mesh Renderer组件下面的Light Probes表示是否接受光探头的影响
Light Probes 选项的3个:
off(关闭)
Blend Probes(默认)反射探针将被启用。
Use Proxy Volume(光照探头代理)(只要指定的光照探头才会有用)
光探头实例
1.创建Unity工程和文件目录
2.场景一个静态场景,加一个点光源
3.设置点光源光照模式为baked,要烘焙的静态物体为static,对静态物体进行烘焙
4.放进一个动态物体在点光源附近移动,发现很突兀
5.再创建一个空节点,放在点光源的中心,给空节点加一个探头组件Light Probes Group,这时候就发现原来的非静态物体的表面有了光照效果,但是光照强度不会随着距离的变化而变化
6.为了解决光的强度的变化,点击Light Probes Group的Edit Light Probes,再点击Add Probe,移动到距离非静态物体比较近的点,再点击Duplicate Selected
7.重复第6点,只要在不同的光强度区域布置光探头,这样非静态物体经过的时候就会显示不同强度的光照。
关于Unity中的光照(五)的更多相关文章
- 关于Unity中的光照(七)
全局光照 GI 这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红. 1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;2:Baked ...
- 关于Unity中的光照(六)
反射探头 1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源, unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cu ...
- 关于Unity中的光照(四)
渲染路径和颜色空间 1:Unity光影效果可以通过设置 渲染路径和颜色空间;2: 渲染路径: 光照到物体表面,物体着色的时候,算上光的颜色的时候有这么几种光照的着色方式,计算着色的方式 forward ...
- 关于Unity中的光照(三)
法线贴图 次时代游戏用的比较多 1:法线贴图是凹凸贴图技术上 的一种应用,有时也称为Dot3(仿立体)凹凸纹理贴图;2: 法线贴图是不增加多边形的情况下,增强模型的细节;3: 法线贴图是高精度模型导出 ...
- 关于Unity中的光照(二)
光源 1: 光照的本质:就是光的颜色和物体纹理的颜色的混合;2: 光源类型: 点光源,定向光源,聚光灯, 区域光源; 区域光的范围会在场景中用黄色的光显示出来; z轴是光的方向; 光的强度会随距离衰减 ...
- 关于Unity中的光照(一)
一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...
- 第五章 Unity中的基础光照(3)
目录 1. 在Unity Shader中实现高光反射光照模型 1.1 实践:逐顶点光照 1.2 逐像素光照 1.3 Blinn-Phong光照模型 2. 召唤神龙:使用Unity内置的函数 @ 1. ...
- 第五章 Unity中的基础光照(2)
目录 1. Unity中的环境光和自发光 2. 在UnityShader中实现漫反射光照模型 2.1 实践:逐顶点光照 2.2 实践:逐像素光照 2.3 半兰伯特模型 1. Unity中的环境光和自发 ...
- 第五章 Unity中的基础光照(1)
[TOC] 渲染总是围绕着一个基础问题:我们如何决定一个像素的颜色?从宏观上来说,渲染包括了两大部分:决定一个像素的可见性,决定这个像素上的光照计算.而光照模型用于决定在一个像素上进行怎样的光照计算. ...
随机推荐
- vuex入门教程和思考
Vuex是什么 首先对于vuex是什么,我先引用下官方的解释. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可 ...
- C#实现RSA加密与解密、签名与认证
一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力 ...
- rpm 安装zabbix 注意
# grep zabbix /etc/sudoers zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev
- [AWS vs Azure] 云计算里AWS和Azure的探究(6) - Amazon Simple Storage Service 和 Microsoft Azure Blob Storage
这几天Nasuni公司出了一份报告,分析了各个云厂商的云存储的性能,包括Amazon S3,Azure Blob Storage, Google Drive, HP以及Rackspace.其中性能上A ...
- mysql--Ubuntu下设置MySQL字符集为utf8
1.mysql配置文件地址/etc/mysql/my.cnf 2.在[mysqld]在下方添加以下代码[mysqld]init_connect='SET collation_connection = ...
- SQL 迭代查询语句
SQL迭代查询 PL/SQL with ORG_Tree(ObjectId,parentID) as ( select a.ObjectId,a.parentID from Ot_Organizati ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- idea 换行设置
- wcf会话、实例化、并发
在asp.net中含有会话,是保存值,供所有的程序使用,同样在wcf中也有会话,供多个客户端使用. 会话的支持通常在契约定义的开始标出,如下 [ServiceContract(Namespace = ...
- 编写js语句结束时保持良好的习惯-源于身边例子
记录以下信息,源于一件事情,一位同事,每次我改他的js代码,发现语句结束都不使用分号作为结束.长长的一串,读起来比较吃力.即便语句的结束不使用分号结束,代码仍然不会报错,正常运行,所以不少程序员懒得去 ...