刚开始也不知道什么是pbr (Physically Based Rendering)后来才发现这是一种新的渲染方式

与之对应的是材质是pbs(Physically Based Shader)

unity中的pbs有两种,一种是金属度的,一种是反射的,

具体前者可以做金属泥土之类,后者用于其他非金属的,但是这不绝对,前者也能做布料木头之类

最终使用还是要看艺术效果

(unity中金属度pbr材质)

(unity中反射流程pbr材质)

PBR做法

albedo map 无光颜色贴图
normal map 法线贴图 
metallic map 金属度贴图 或者specular map 高光贴图

roughness 粗糙度贴图

3.19.2016内容纠正和更新

(unity中普通材质)

传统做法
diffuse mapping 颜色贴图
specular map 高光贴图
normal map 法线贴图

在PBR流程下,游戏中场景将更加符合自然,对于光照的计算也更符合现实。将在以后离线渲染和实时渲染中占据主流,单一材质能模拟出更多现实中的特性

当然在国内这种框架还不是很流行,大部分还是采用传统的方式进行制作。PBR流程和传统区别就是不再使用Specular Map
在PBR里是glossness(光泽 可以理解成高光粗糙度)和metallicity(金属),后面两张基本都是灰度图,需要在游戏引擎中调节效果,据其他网上说法“一般公司会根据项目发一张材质球的表,Albedo ,glossness,metallicity的值的范围都在上面,根据物品的物理属性来调整就行。”
贴图的流程有了新的变化,模型流程没有多少变化

当然这里要说的是unity5,默认材质其实就是使用的pbs,最明显特征是使用了Metallic,金属贴图(这个在unity里可以通过选择shader Standard Specular setup来使用反射版本pbr)也可以继续使用Legacy旧版非pbr材质

现在说下unity5贴图
http://docs.unity3d.com/Manual/StandardShaderMaterialParameters.html
albedo相对于diffuse map 但不相同
固有色贴图(Albedo map)不需要光照信息,看起来更平,没有高光点,大多也不需要叠加AO和那几张黑白边,只需要给出物体表面固有颜色和很浅的纹理而已,一张光泽度贴图(GLOSS map)来表现物体粗糙度(只和粗糙度有关),越粗糙越黑反之越白,一张SPECULAR map 来表现物体固有反光能力的,这个只和材质有关,不同的项目会给出不同的材质的高光色值范围

Metallic 灰度图,就是pbr中特殊的,可以说是金属的感觉吧
normal map 主体蓝色的,法线贴图
height map 是灰度图 这里指的是视差贴图( parallax mapping),当然也可以放凹凸贴图(bump map)或者置换贴图(displacement map)

http://docs.unity3d.com/Manual/StandardShaderMaterialParameterHeightMap.html
这个简单说就是能更好增加凹凸感,这个概念很想法线贴图,但是技术更加复杂,
Occlusion map是灰度图 这个用来保护高光和间接照片照到的地方,间接照明来自环境光和反射光,

Emission 彩色贴图 自发光贴图 控制表面光发射 这个选项也会影响到附近的物体,但是要设置lighting里面是realtime,如果是baked动态物体将不接受光照 其实要看到效果必须加light probe 然后发光的物体要static才能看到,否则只能靠脚本刷新或者其他方式才能看到了

Detail Mask 细节图片的遮罩
Secondary Maps
Detail Albedo 细节颜色贴图
Normal Map 细节的法线贴图
这三个其实是一组为了再放大物体时能看到物体的细节层次,比如做皮肤的毛孔贴图之类,放在这里贴图一般使用repeat并且重复很多次才能达到细节效果

有两种流程可以自己选择
反射流程

金属度流程

混用也没问题,当然金属度还是反射材质没有绝对的使用选择
具体看这里
http://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/
还有画贴图工具

substance

http://quixel.se/

既然说到了pbr那再结合下色彩空间

linear和srgb,HDR区别
人眼有光线自适应的特性,这样也是能让人在暗的场景里看到更多东西,在亮的场景里能分辨更多东西,这种效果一般从电影院这样昏暗的场所里走出来更能体会,眼睛会有一个慢慢适应的过程。现在摄像头一般也会自适应曝光度,但是工业需求的有些还是需要不自动的,三维渲染之中,如果把这种真实完全模拟的图像给人眼看到,会感觉比我们人眼看到灰暗的多,所以一般会在硬件方面做一个反曲线最后变成srgb的色彩空间让人看到。

游戏引擎里面最终效果给人看到,当然是这种强化过的适应人眼的色彩空间,但是我做光照计算和贴图就不行,因为会由于多次的色彩强化导致最终画面强烈失真,这时候就是需要linear的色彩空间,计算时候用真实色彩,直到输出这一步把色彩强化一遍以适合人眼。unity很早就是linear的色彩空间,但是由于后期最后一部的矫正方面很多从业人士的素养不足,或者完全没有这个意识,做出来的效果完全是不正确,或者缺乏调整弹性的。而unreal则在工作流上面几乎是整合和后期的色表,去解决这个问题。

而HDR是模拟人眼的过程,能看到更广范围的光(就是亮的时候能更亮瞎),HDR图像的一般色域也超过普通的RGB色域(但也可以不超过)。HDR在unity中需要勾选摄像机上的HDR选项和使用延迟渲染deferred才能(否则会有滤镜提示The camera is not HDR enabled 这是没使用延迟渲染),要看出效果还要加个bloom之类的

(对照图 在延迟渲染模式和HDR下加Tonemapping(effects里面的))

关于unity里pbr技术和材质 unity5默认shader和传统的对比的更多相关文章

  1. Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》

    ​时间一转眼从春天来到了初夏,Unity User Group(以下简称UUG)活动也迎来了第七期.我们面向Unity3D开发从业者以及未来想从事Unity3D开发的学生群体的UUG活动这次仍然在海淀 ...

  2. 【Unity Shaders】Unity里的雾效模拟

    写在前面 熟悉Unity的都知道,Unity可以进行基本的雾效模拟.所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色).这种技术的实现实际上非常简单,就是根据物体距离摄像 ...

  3. 关于Unity中的几何体,材质和FBX模型

    一.创建几何体的类型 1: 创建平面 Plane;2: 创建立方体 Cube;3: 创建球体 Sphere;4: 创建胶囊体 Capsule;5: 创建圆柱体 Cylinder;6: 3D文字 3D ...

  4. Unity光滑与粗糙的材质——相似于生锈的金属表面

    纹理是在Photoshop中制作的,终于效果则是在Unity里得到的.这样的类型的材质.在3D游戏中非经常见.

  5. Unity里的人物驱动/换装备/换武器/换衣服/卡通重定位(转)

    Unity里的人物驱动/换装备/换武器/换衣服/动画重定位 刚学的过程被这个问题困扰最多. 首先,基本的,大家都知道驱动人物需要骨架.绑骨的Mesh和动画(这三个要是不知道的话就得考虑看看计算机图形学 ...

  6. Unity内存优化技术测试案例

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  7. Unity游戏开发技术的最佳实践

    活动详情   作为全球规模最大的Unity开发者聚会,历年的Unite大会都成为开发者们获取Unity最新技术知识,交流开发经验,把握行业发展脉搏,体验全球前沿科技与高品质Made with Unit ...

  8. Unity5.x shader打包AssetBundle总结

    最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧. 在上一个项目中,我们使用unity4.7,对于shader ...

  9. 关于Unity中GrabPass截屏的使用和Shader的组织优化

    GrabPass截屏 可以用来截屏,截屏后把纹理传给下一个通道使用. 1:使用抓屏通道, GrabPass {} 或 GrabPass { “ 纹理名称”}; 使用GrabPass {}后,可以用_G ...

随机推荐

  1. snmp安装

    只为成功找方法,不为失败找借口! Snmp学习总结(六)——linux下安装和配置SNMP 一.安装SNMP 1.1.下载Net-SNMP的源代码 选择一个SNMP版本,比如5.7.1,下载地址如下: ...

  2. Nginx安装及常用命令

    一.选定源码目录 cd /usr/local/src 可以是任何目录,本文选定的是/usr/local/src 二.安装依赖库 yum install gcc yum install pcre-dev ...

  3. 一个洛谷Material化的Stylish美化主题

    Luogu Argon Design 新主题 Luogu Argon Design 目前已经取代了 Luogu Material,但这并不代表 Luogu Material 会停止更新,在 Luogu ...

  4. python的mock功能,感觉入门了~~~

    主要实现语法有patch, patch.object, Mock(). 下面的测试太赤裸裸了,只是为了熟悉语法. import unittest from unittest.mock import p ...

  5. Angular快速学习笔记(2) -- 架构

    0. angular 与angular js angular 1.0 google改名为Angular js 新版本的,2.0以上的,继续叫angular,但是除了名字还叫angular,已经是一个全 ...

  6. PLSQL Developer 中文显示乱码的解决方法

    PLSQL Developer 中文显示乱码是因为 Oracle 数据库所用的编码和 PLSQL Developer 所用的编码不同所导致的. 解决方法: 1. 先查询 Oracle 所用的编码 se ...

  7. 过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题

    如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为“multipart/form-d ...

  8. docker 网络的几种模式

    docker 网络分为单机和多机,我们来了解一下docker的单机网络 docker单机网络分为以下几种: 1)bridge NetWork,使用--net=bridge指定,默认设置.2)Host ...

  9. 关于js操作符需要注意的地方

    本文仅仅介绍部分js操作符在实际应用中需要注意的地方. 布尔操作符: //1.逻辑与操作属于短路操作,即如果第一个操作数能够决定结果那么就不会再对第二个操作数求值 var found=true; va ...

  10. BZOJ4816 Sdoi2017数字表格

    一开始只推出O(TN)的做法,后来看了看发现再推一步就好了. 我们只需要枚举gcd就可以啦. 然后我们改变一下枚举顺序 设T为dk 预处理中间那部分前缀积就好了. #include<bits/s ...