工作流实现

工作流中的核心内容便是贴图,不论是UE4还是Unity都支持将PBR的参数以贴图的形式传入引擎,我们可以根据一个物体同一mesh或不同mesh的不同区域的属性差异来控制贴图上的属性产生不同,而没有贴图的话,一个物体只能使用一种参数属性。

//glsl贴图代码示例

uniform sampler2D albedoMap;

uniform sampler2D normalMap;

uniform sampler2D metallicMap;

uniform sampler2D roughnessMap;

uniform sampler2D aoMap;

...

vec3 albedo = pow(texture(albedoMap, TexCoords).rgb, 2.2);

vec3 normal = getNormalFromNormalMap();

float metallic = texture(metallicMap, TexCoords).r;

float roughness = texture(roughnessMap, TexCoords).r;

float ao = texture(aoMap, TexCoords).r;

...

美术制作的albedo纹理一般都是sRGB空间的,因此我们要先转换到线性空间再进行后面的计算。根据美术资源的不同,AO纹理也许同样需要从sRGB转换到线性空间。


早期工作流

在Disney PBR没有大规模使用之前,材质贴图是没有一套规范通用的流程的,往往将很多东西混杂在一起去实现一个凭空想象的效果,而且每个人每个公司都有自己的方式,就好比绘画一样,没有一个标准的流程和规范。

想要得到预期效果,不仅得调节材质的属性还得相应地控制光照的属性,即材质与光照不解耦,工作流程上下端配和难度大。此处不再过多赘述,这种工作流已经基本消失殆尽。


金属粗糙流

该工作流是基于之前讲到的PBR原理,是PBR工作流中最为通用的。

  • Albedo-Base Color基色:sRGB三色图,代表非金属的漫反射颜色和金属的反射率值,也就是漫反射项中的C与金属部分的F0;

  1. 非金属漫反射区域不应低于50sPRG(容忍),红线是30sRGB,亮值不应超过240 sRGB

  1. 金属部分反射率值,在70-100%范围内,我们可以将其映射到180-255 sRGB

  1. 不会带有任何的光照信息(微观自遮挡可以包含,指个位像素级别)

  • Metallic金属度:灰度图,代表公式中运算的金属度,计算F0和漫反射Kd需要的插值系数。

  • 金属度图完全可以做成一张非零即一的黑白图,允许极少量两头极端范围内的过度值存在

  1. 金属值应在235-256 sRGB,它们的基色贴图值应该在180-255 sRGB范围内

  1. 涂层金属与生锈金属应当视作非金属,金属度设置为0;蒙灰金属可以小范围低于235sRGB,对应的basecolor需要降低一定范围,自行把控

  1. 理论上不应出现大面积的位于中间范围的金属值,那样做是错误的,现实不存在这种材料,但是强行为了特殊效果亦可

  • Roughness粗糙度:灰度图,代表高光部分计算中的粗糙度,根据需要自行设置。

优劣分析

  • 更容易理解创作,Basecolor就是物体的固有色,符合日常认知

  • 纹理占用内存少,因为金属和粗糙度贴图都是灰度图(单通道),可以和其他贴图混用通道

  • 非金属F0只能是默认的0.04,无法更改

  • 金属和非金属交界处会有白边,注意贴图分辨率和UV分布


高光光泽流

  • Albedo-Diffuse:sRGB三色图,包含非金属的反射颜色,即漫反射项中的C。

  1. 非金属反射颜色暗值不应低于30 sRGB(容差范围) - 50 sRGB(严格范围),亮值不应超过240 sRGB

  1. 金属区域为纯黑色

  • Specular高光度:sRGB三色图,包含金属的反射率值与非金属的反射率值,即金属与非金属的F0。

  1. 一般非金属部分应为2-5%,sRGB值应介于40-75之间,常见的宝石在0.05-0.17范围内,普通液体在0.02-0.04范围内

  1. 一般金属在70-100%镜面反射率范围内,映射到180-255 sRGB

  • Glossiness光泽度:与Roughness相反。

优劣分析

  • 可以自己控制非金属的F0

  • RGB贴图变多,占用内存变大

  • 不易控制,容易做出自然界不存在的材质

  • 边缘效应会产生黑边,注意贴图分辨率和UV分布


工作流转换

Specular到Metalness的转换

  1. 创建一张Metalic图

  1. 以Metalic图作为遮罩对Specular处理,得到金属的反射率值

  1. 覆盖到原本的diffuse

Specular到Metalness的转换

  1. 依靠金属与非金属在diffuse和specular的差异获得一张Metallic贴图

  1. 使用Metallic图作为遮罩,对BaseColor处理,将金属部分抠去,得到Diffus贴图

  1. 翻转Metallic图,作为遮罩对BaseColor处理,剩余的部分覆盖56度灰,得到Specular贴图

PBR工作流实现与对比相关推荐

  1. 工作流调度系统介绍,常见工作流调度系统对比,azkaban与Oozie对比,Azkaban介绍与特性(来自学习笔记)

    1. 工作流调度器azkaban 1.1 概述 1.1.1为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序.hive ...

  2. activiti 工作流设置并行审批_activity、jbpm5、snakerflow常用工作流审批流对比

    # 审批流调研 背景 由于目前产品研发组支持的产品项目越来越多, 同时几乎每个项目都会有导出审批,流程流转等需求,本着提高开发效率和组件化的目的,调研和开发通用的工作流组件,为后面的项目和新的需求提供 ...

  3. 两种不同的PBR工作流介绍

    本文介绍两种常用的PBR材质工作流:金属/粗糙度工作流(Metal/Roughness)和镜面反射/光泽度工作流(Specular/Glossiness).这两种工作流都可以用来制作一个支持PBR的材 ...

  4. Substance与PBR工作流总结

    关于PBR PBR即基于物理的渲染,是一套尝试基于真实世界光照物理模型的渲染技术合集,使用了一种更符合物理学规律的方式来模拟光线,达到更真实的渲染效果,而且可以直接通过物理参数来直观地达到想要的结果, ...

  5. 各大OA工作流使用技术对比

    一.工作流的存储类型: 国内的OA,工作流,通常使用数据库(MS SQL,Orcale)来存储工作流的数据,如:(北京金和,智遥工作流,用友致远等):国外的工作流,通常使用文件类型的来存储,就跟邮件系 ...

  6. 批量 材质 调整_寒霜引擎的PBR实践3.0(一)材质篇

    随着对游戏美术品质要求的提高,对整个开发从流程pipeline到从业人员的素质要求都开始增加.传统的美术工作流因为依赖个人的经验和感觉,所以在制作大体量项目的过程中很难达到理想效果.而这时,由项目组内 ...

  7. 【Unity 手写PBR】Build-in管线:实现直接光部分

    写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 [技术美术图形部分]PBR直接光部分:Disney原则的BRDF和次表面散射模型 [技术美术图形部分]PBR全局光照: ...

  8. Move to totally PBR

    Date: 2018-11-05 13:15 Categories: 渲染 草稿,未完- Validating 首先要说的是,做基于物理渲染(着色)Validation非常重要,因为稍有不同的代码和数 ...

  9. 【PBR系列一】PBR知识体系

    本文核心知识主要参照知乎毛星云浅墨的游戏编程文章总结归并,并根据个人学习方向进行了筛选摘抄,规划整体学完之后对内容进行代码实现,如有错误或不完整之处,可参照原文阅读. PBR知识体系概览 本系列主要打 ...

最新文章

  1. 国内ntp时间服务器ip地址
  2. Python 函数知识汇总
  3. System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
  4. 二十八、Java中的Int和Integer的区别
  5. 康托展开与逆展开(原理+模板)
  6. ExtJs Panel 滚动条设置
  7. turtle填充随机颜色同心圆
  8. oracle报错注入的一些函数
  9. [公告]请不要在首页转载文章
  10. 从零开始搭二维激光SLAM --- 文章索引
  11. Win10无法安装 文鼎CS行楷.TTF
  12. 详解js继承的那些事儿
  13. 分享五个最好的BT下载软件
  14. 计算机 hdmi不显示桌面,电脑用HDMI连接电视,电视却只显示桌面 其他的什么都不显示...
  15. C语言坐标打飞机,C语言实现打飞机小游戏
  16. “2021云管和云网大会”在京召开
  17. 项目xx方案文档格式规范模板
  18. 巨头的工业互联网:在“黑灯工厂”探寻制造业之光
  19. nginx -rtmp多码率,动态码率二级m3u8适应
  20. 电脑无鼠标修复计算机怎么办,电脑屏幕只有鼠标箭头怎么解决_电脑开机后只显示鼠标修复方法...

热门文章

  1. python微信推送消息_Python实现微信推送模板消息功能示例
  2. Java实现微信公众号模板消息推送给用户
  3. 记录ie不支持 for of 解决办法
  4. C++常数据成员,常成员函数及常对象的使用
  5. 爬虫日常-cookies登录12306
  6. 升级Linux系统内核
  7. 合肥个体户营业执照办理流程 注册个体户营业执照
  8. 克莱姆森大学计算机博士,2020年克莱姆森大学博士申请流程
  9. WIN10-22H2专业版_电脑维修人员专用装机系统镜像【04.20更新】
  10. 程序猿必备的高逼格午饭玩具