Substance与PBR工作流总结

article/2025/9/16 17:37:57

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

 2.关于Substance

Substance是Allegorithmic公司的一套PBR美术制作工具,包括Substance Printer和Substance Designer等软件,Substance Painter是PBR贴图绘制软件,


我们可以导入自己的模型,然后绘制输出PBR贴图。而Substance Designer可以输出 sbsar文件,sbsar描述了PBR贴图的生成方式,可以导入Substance Painter为材质,也可以直接给Unity使用(Unity2018版本以上需要额外的插件)。在Unity里使用sbsar文件,我们就可以直接在Unity里调参数生成新的PBR贴图。


上图选中的就是一个sbsar文件,包含了5种材质以前材质使用的贴图。

上图是Gold材质的属性面板,我们可以看到有Metal Properties和Age 这类的自定义参数,调整这些参数,就能重新生成新的PBR贴图。


(使用Gold材质的渲染结果)

sbsar文件除了动态生成PBR贴图这个功能,其实与Unity材质没有差别,因为它们都是使用相同的Shader。仅仅使用它的贴图我们也可以渲染出完全一样的效果。

Substance Painter比较重要的注意点是导出贴图的设置,通常我们将Config设置为Unity5(Standard Metallic)


而Unity5(Standard Metallic)的配置我们可以在上面CONFIGURATION中查看和修改:


如图,我们将为每套贴图输出Albedo,Normal,Emission,Metallic4张贴图,Albedo的RGB通道使用Base Color的RGB颜色,Normal的RGB通道是NormalOpenGL的RGB颜色,而Metallic的RGB通道使用Metallic的灰度颜色,A通道使用Roughness的灰度颜色(这是我修改后的配置,默认配置不是这样)。

3.整合到Unity开发流程的问题

实际开发中必定会存在的一个问题是,美术在Substance Painter中调出了一个牛逼哄哄的效果,开开心心地导入Unity,发现效果不一样了!除了一些光照的设置,最主要的是因为Color Space的问题。关于Color Space的概念可以看下这两篇文章:

Gamma & Linear Color Space 和 GAMMA AND LINEAR SPACE - WHAT THEY ARE AND HOW THEY DIFFER

这是Unity中不同Color Space渲染SP的PBR贴图的结果,第一张的Gamma Space,第二张是Linear Space,可以看出差异还是挺明显的,特别是底座的颜色

SP的渲染是在Linear Space中进行的,导出的贴图经过了gamma encoding,如果在Unity中使用Linear Space渲染,渲染结果还是很接近SP中的效果的,但是Linear Space不仅消耗高,而且在某些移动平台上不支持(需要OpenGL ES3.0以上及Metal图形API支持),这意味着我们需要在Gamma Space中得到跟SP一样的渲染效果。

With Unity 5.5, linear rendering is now available on Android and iOS. On Android, linear rendering requires OpenGL ES 3 graphics API which represents 61.1% of the Android devices. On iOS, linear rendering requires Metal graphics API which represents 71.1% of the iOS devices.

4.Substance Printer与Unity Gamma Space渲染效果一致化方案

方案1:修改Unity Standard Shader,手动加入gamma校正,使其达到Linear Space的效果。

Although Unity does not support the default linear pipeline on some platforms such as mobile. It is possible to do so yourself within shaders. This is done by applying the pow() function to gamma corrected input textures to transform the inputs to linear space, and applying pow() again before returning the result to put it back in gamma space. Note that this method will be computationally expensive, so be aware of the capabilities of your target devices and use it only where needed.

Unity提供了在UnityCG.cginc头文件中提供了GammaToLinearSpace和LinearToGammaSpace 两个方法进行两个空间的转化。但是我尝试了仍然没法得到Linear Space的渲染效果,颜色偏差还是存在,而且因为工作流程而加入额外的性能消耗,我觉得不是好方案,于是放弃这个方案。

方案2:不再调整Unity的渲染,我们调整SP的渲染,让其使用Gamma Space渲染。幸好SP支持自定义Shader


这篇文章提供了这个方案:点击打开链接,同时提供了一个模拟Unity PBR渲染的GLSL文件,下载下来,在SP中File->Impoty resources导入,在SHADER SETTINGS中设置为使用该shader,注意把Linear Space勾选去掉,因为我们要使用Gamma Space。导出贴图时,注意要修改Metallic贴图的设置:RGB通道使用Metallic的灰度颜色,A通道使用Roughness的灰度颜色。


Untiy中的和SP中,差异算可以接受了



http://chatgpt.dhexx.cn/article/2y8RMDaJ.shtml

相关文章

BPR算法

目录 什么是BPR算法 BPR算法简介 显示反馈与隐式反馈 矩阵分解的不足 BPR算法 符号定义 BPR算法解决方式 BPR算法两个基本假设 BPR算法推导 贝叶斯定理 BPR推导 BPR算法流程 BPR算法代码与结果 数据 BPR算法代码 BPR结果展示 什么是BPR算法 BPR算法简介 BPR&…

基于物理的渲染技术(PBR)系列一

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

[引擎开发] PBR材质的原理

[本文大纲] 基础概念篇 引入 光线与介质的作用 光线的传播路径 体积散射和表面光照 光线和介质外观 微平面理论 概念介绍 中间向量 能量守恒定律 微平面理论的不足 光照计算 半球积分 …

PBR材质基础概念,限制及未来发展

最近几年图形学社区对PBR的关注非常高,也许是由于Disney以及一些游戏引擎大厂的助推,也许是因为它可以被轻松集成进实时渲染的游戏引擎当中,也许是因为许多人发现现在只需要调几个参数就能实现具有非常精细细节的表面着色了。反正现在网络上随…

PBR渲染(一)——PBR理论基础

PBR基础框架 PBR理论基础PBR基础框架 1.PBR理论基础 BSDF(双向散射表面分布函数) 对于一般的基于物理的表面材质来说,使用第一项BSSRDF双向散射表面反射分布函数,其简化后的重点就是BRDF双向反射率分布函数,忽略了复…

Unity ShaderGraph没有PBR Graph的解决方法

1.创建光照Shader Graph 2.打开Shader Graph界面 Fragment选项卡上右击——Add Block Note——添加Alpha和Alpha Clip Threshold两个属性 可以看到此时这两个属性是灰色的,并不生效,是因为未启用Alpha Clipping 3.Graph Inspector选项卡中,勾…

在3ds max中,什么是PBR材质?

PBR是Physically-Based Rendering(基于物理的渲染)的简称。 PBR材质是一种基于物理的渲染材质,可提供灯光与曲面交互方式的精确表示。注: 仅当活动渲染器支持时,该材质才会显示在“材质/贴图浏览器”中。 在3ds max中PBR材质分为…

理解PBR:从原理到实现(上)

PBR 从离线渲染进入游戏引擎 CSDN 博客的公式排版有问题,可以看我的 GitHub Page:https://neil3d.github.io/unreal/pbr-theory.html 基于物理的渲染,即 PBR,Physically Based Rendering,这个技术名词最早是有马特法尔…

什么是PBR

PBR就是基于物理的渲染。 首先得介绍光照模型。光照模型是一种数学模型,也就是一种算法。这些算法用于计算机模拟物体在光照下的表现,具体就是 计算物体某一点处的光强。 这些模型从理论而言分为两类。 基于物理理论的和 基于感知经验的。 PBR就是基于…

BPR

BPB模型概念 BPR(Bayesian Personalized Ranking)推荐模型是基于贝叶斯后验优化的个性化排序算法。从user-iem矩阵训练出多个矩阵,而且一个矩阵表示一个用户的item偏好情况来获得用对多个item的偏好关系的推荐系统。本身不优化用户对物品的评分,只是借由…

两种不同的PBR工作流介绍

本文介绍两种常用的PBR材质工作流:金属/粗糙度工作流(Metal/Roughness)和镜面反射/光泽度工作流(Specular/Glossiness)。这两种工作流都可以用来制作一个支持PBR的材质,并用PBR渲染出逼真的效果&#xff0c…

4.3 PBR

1. 实验目的 熟悉PBR的应用场景掌握PBR的配置方法2. 实验拓扑 PBR实验拓扑如图4-8所示: 图4-8:PBR 3. 实验步骤 (1) IP地址的配置 R1的配置 <Huawei>system-view

PBR渲染(二)——PBR皮肤渲染

PBR皮肤渲染 在PBR基础框架的基础上实现皮肤的渲染&#xff0c;要根据皮肤的渲染特性来对基础框架进行扩充和修改&#xff0c;从而实现真实感的PBR皮肤渲染。皮肤一般具有以下渲染特性&#xff1a; 1.次表面散射&#xff08;SSS&#xff09; 2.BRDF高光&#xff08;Specular …

PBR 基础知识干货总结

&#xff08;1&#xff09;什么是PBR&#xff1f; 基于物理的渲染过程。 PBR是一种着色和渲染技术&#xff0c;用于更精确的描述光如何与物体表面互动。 PBR的优势&#xff1a; &#xff08;1&#xff09;方法论和算法基于精确的计算公式&#xff0c;免除创作表面的猜想过程。 …

PBR与Blinnphong解读

我们做光栅化模式的渲染都了解有两种比较常用的渲染方式&#xff0c;一个是blinnphong的渲染&#xff0c;一个是pbr的渲染。 blinnphong&#xff1a; blinnphong的渲染模式更多的是一种经验值模拟光照对物体的效果。所以他不是一个正确的能量守恒的渲染方式。 blinnphong的渲…

【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览

本文由浅墨_毛星云 出品&#xff0c;首发于知乎专栏&#xff0c;转载请注明出处 文章链接&#xff1a; https://zhuanlan.zhihu.com/p/53086060 先放出PBR知识体系的架构图&#xff1a; 图很大&#xff0c;建议下载到本地放大查看。原图下载地址&#xff1a; https://raw.gi…

什么是PBR?

一、什么是PBR&#xff1f; 基于物理渲染以前的渲染是在模仿灯光的外观现在是在模仿光的实际行为试图形看起来更真实 二、PBR组成部分 灯光属性&#xff1a;直接照明、间接照明、直接高光、间接高光、阴影、环境光闭塞表面属性&#xff1a;基础色、法线、高光、粗糙度、金属度…

PBR流程介绍和模型规范

&#xff08;1&#xff09;基本流程&#xff1a; &#xff08;1&#xff09;制作中模&#xff1a; 基础模型&#xff1a; 指的是中模&#xff01;&#xff01; 中模导出为.obj 格式&#xff08;跟.fbx格式相比&#xff1a;不会出现模型大小的缩放&#xff09; 高模&#xff1a…

PBR材质:基本原理和简单制作

概要&#xff1a;介绍PBR材质的基本原理以及制作一个简单的PBR材质 参考资料&#xff1a;BASIC THEORY OF PHYSICALLY-BASED RENDERING 如有问题&#xff0c;多多指正。 侵删。 1.PBR是什么&#xff0c;光线的基本原理。 PBR即Physically-based rendering&#xff0c;基于物理…

什么是PBR?pbr入门基础干货

&#xff08;1&#xff09;什么是PBR&#xff1f; 基于物理的渲染过程。 PBR是一种着色和渲染技术&#xff0c;用于更精确的描述光如何与物体表面互动。 PBR的优势&#xff1a; &#xff08;1&#xff09;方法论和算法基于精确的计算公式&#xff0c;免除创作表面的猜想过程…