关于unity里pbr技术和材质 unity5默认shader和传统的对比
刚开始也不知道什么是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和传统的对比的更多相关文章
- Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》
时间一转眼从春天来到了初夏,Unity User Group(以下简称UUG)活动也迎来了第七期.我们面向Unity3D开发从业者以及未来想从事Unity3D开发的学生群体的UUG活动这次仍然在海淀 ...
- 【Unity Shaders】Unity里的雾效模拟
写在前面 熟悉Unity的都知道,Unity可以进行基本的雾效模拟.所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色).这种技术的实现实际上非常简单,就是根据物体距离摄像 ...
- 关于Unity中的几何体,材质和FBX模型
一.创建几何体的类型 1: 创建平面 Plane;2: 创建立方体 Cube;3: 创建球体 Sphere;4: 创建胶囊体 Capsule;5: 创建圆柱体 Cylinder;6: 3D文字 3D ...
- Unity光滑与粗糙的材质——相似于生锈的金属表面
纹理是在Photoshop中制作的,终于效果则是在Unity里得到的.这样的类型的材质.在3D游戏中非经常见.
- Unity里的人物驱动/换装备/换武器/换衣服/卡通重定位(转)
Unity里的人物驱动/换装备/换武器/换衣服/动画重定位 刚学的过程被这个问题困扰最多. 首先,基本的,大家都知道驱动人物需要骨架.绑骨的Mesh和动画(这三个要是不知道的话就得考虑看看计算机图形学 ...
- Unity内存优化技术测试案例
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- Unity游戏开发技术的最佳实践
活动详情 作为全球规模最大的Unity开发者聚会,历年的Unite大会都成为开发者们获取Unity最新技术知识,交流开发经验,把握行业发展脉搏,体验全球前沿科技与高品质Made with Unit ...
- Unity5.x shader打包AssetBundle总结
最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧. 在上一个项目中,我们使用unity4.7,对于shader ...
- 关于Unity中GrabPass截屏的使用和Shader的组织优化
GrabPass截屏 可以用来截屏,截屏后把纹理传给下一个通道使用. 1:使用抓屏通道, GrabPass {} 或 GrabPass { “ 纹理名称”}; 使用GrabPass {}后,可以用_G ...
随机推荐
- sysbench安装及性能测试
现在的压力测试工具各种各样,只要上手好几款功能强大点的而且比较大众化的压力测试工具即可,以下跟大家交流下sysbench的安装和压力测试 sysbench支持以下几种测试模式: 1.CPU运算性能 2 ...
- Android Studio从2.3升级到3.1注意事项
原文:https://blog.csdn.net/lithiumyoung/article/details/80111111 Android Studio从2.3升级到3.1注意事项 项目根目录下的b ...
- xgboost 实践
xgboost 安装:xgboost:Scalable and Flexible Gradient Boosting github: eXtreme Gradient Boosting 中文教程:可 ...
- 【LOJ】#2077. 「JSOI2016」飞机调度
题解 考虑一架飞机飞完自己之后还能飞到哪些航线,用floyd求两点最短路 这个图建出来是个DAG,求最小路径覆盖即可,二分图匹配 注意判断时是航班的起飞时刻+直飞时间+加油时间+最短路时间 代码 #i ...
- Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given,
使用laravel内置的注册认证系统,注册账号,提示如下错误.Google之后,发现github的一个答案,解决了.分享一下 Argument 1 passed to Illuminate\Auth\ ...
- 【LeetCode】167. Two Sum II - Input array is sorted
Difficulty:easy More:[目录]LeetCode Java实现 Description Given an array of integers that is already sor ...
- CSS html标签元素分类
在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1>… ...
- SQL2008配置管理工具服务显示远程过程调用失败
问题: 打开SQL2008配置管理工具,发现SQL服务名称里什么也没有,只有一个提示: 解决办法: 这是由于电脑中安装有Visual Stuido, 它内含一个本地SQL数据库服务:Microso ...
- android 流行框架的使用
=== OKHttp主要功能 1.联网请求文本数据 2.大文件下载 3.大文件上传 4.请求图片 get请求 Request request = new Request.Builder() ...
- luoguP4643 阿狸和桃子的挑战 思维
看下数据范围: \(n \leq 14\),emmmm,状压\(dp\)的分 \(n \leq 10000, m \leq 100000\),emmmm.....???,这是什么数据范围? 再观察一下 ...