什么是PBR?

article/2025/9/17 6:32:49

一、什么是PBR?

  • 基于物理渲染
  • 以前的渲染是在模仿灯光的外观
  • 现在是在模仿光的实际行为
  • 试图形看起来更真实

二、PBR组成部分

  • 灯光属性:直接照明、间接照明、直接高光、间接高光、阴影、环境光闭塞
  • 表面属性:基础色、法线、高光、粗糙度、金属度

三、灯光属性

1、光线类型

入射光

  • 直接照明:直接从光源发射阴影物体表面的光
  • 间接照明:环境光和直接光经过反弹第二次进入的光

反射光

  • 镜面光:在经过表面反射聚焦在同一方向上进入人眼的高亮光
  • 漫发射:光被散射并沿着各个方向离开表面

2、光与表面相互作用类型

  • 直接漫反射:从源头到四面八方散发出来的直接高光
  • 直接高光:直接来自光源并被集中反射的光
  • 间接漫反射:来自环境的光被表面散射的光
  • 间接高光:来自环境光并被集中反射的光

(1)直接漫反射

  • 直接来自光源的光
  • 撞击表面后散落在各个方向
  • 在着色器中使用简单的数学计算

(2)直接高光

  • 直接来自光源的光
  • 反射在一个更集中的方向上
  • 在着色器中使用简单的数学计算

直接镜面反射的计算成本比漫反射低很多

(3)间接漫反射

  • 来自环境中各个方向的光
  • 撞击表面后散落在各个方向
  • 因为计算昂贵,所以引擎的全局照明解决方案通常会离线渲染,并被烘培成灯光地图

(4)镜面反射

  • 来自环境中各个方向的光
  • 反射在一个更集中的方向上
  • 引擎中使用反射探头,平面反射,SSR,或射线追踪计算

四、表面属性

(1)基础色

  • 定义表面的漫反射颜色
  • 真实世界的材料不会比20暗或比240 sRGB亮
  • 粗糙表面具有更高的最低~ 50srgb
  • 超出范围的值不能正确发光,所以保持在范围内是至关重要的

基础色贴图制作注意点:

  • 不包括任何照明或阴影
  • 基本颜色纹理看起来应该非常平坦
  • 使用真实世界的度量或获取最佳结果的数据

(2)法线

  • 定义曲面的形状每个像素代表一个矢量
  • 该矢量指示表面所面对的方向即使网格是完全平坦的
  • 法线贴图会使表面显得凹凸不平
  • 用于添加表面形状的细节,这里三角形是实现不了的
  • 因为它们表示矢量数据,所以法线贴图是无法手工绘制的

(3)镜面

  • 用于直接和间接镜面照明的叠加
  • 当直视表面时,定义反射率
  • 非金属表面反射约4%的光
  • 0.5代表4%的反射
  • 1.0代表8%的反射但对于大多数物体来说太高了
  • 在掠射角下,所有表面都是100%反射的,内置于引擎中的菲涅耳项

镜面贴图制作注意点:

  • 高光贴图应该大多在0.5
  • 使用深色的阴影来遮盖不应该反光的裂缝
  • 一个裂缝贴图乘以0.5就是一个很好的高光贴图

(4)粗糙度

  • 表面在微观尺度上的粗糙度
  • 白色是粗糙的
  • 黑色是光滑的
  • 控制反射的“焦点”
  • 平滑=强烈的反射
  • 粗糙=模糊的,漫反射

粗糙度贴图制作注意点:

  • 没有技术限制-完全艺术的选择
  • 艺术家可以使用这张地图来定义表面的“特征”,并展示它的历史
  • 考虑一下被打磨光滑、磨损或老化的表面

(5)金属度

  • 两个不同的着色器通过金属度混合他们
  • 基本色变成高光色而不是漫反射颜色
  • 金属漫反射是黑色的
  • 在底色下,镜面范围可达100%
  • 大多数金属的反光性在60%到100%之间
  • 确保对金属颜色值使用真实世界的测量值,并保持它们明亮
  • 当金属为1时,镜面输入将被忽略

粗糙度贴图制作注意点:

  • 将着色器切换到金属模式
  • 灰度值会很奇怪,最好使用纯白色或黑色
  • 当金属色为白色时,请确保使用正确的金属底色值
  • 没有黑暗金属这回事
  • 所有金属均为180srgb或更亮

五、非金属和金属对比

非金属

  • 基础颜色=漫反射
  • 镜面反射=0-8%

金属

  • 基础颜色=0-100%的镜面反射
  • 镜面=0%
  • 漫反射总是黑色的

六、总结

  1. PBR是基于物理渲染的着色模型,PBR着色模型分为材质灯光两个属性。
  2. 材质部分由:基础色、法线、高光、粗糙度、金属度来定义材质表面属性的。
  3. 灯光部分是由:直接照明、间接照明、直接高光、间接高光、阴影、环境光闭塞来定义照明属性的。
  4. 通常我们写材质的时候只需要关注材质部分的属性即可,灯光属性都是引擎定义好的直接使用即可。
  5. PBR渲染模型不但指的是PBR材质,还有灯光,两者缺一不可。

本文章整理自作者Ben'Cloward视频教程:

https://www.youtube.com/watch?v=fePsD_8p9vM&list=PL78XDi0TS4lFlOVKsNC6LR4sCQhetKJqs&index=2​www.youtube.com/watch?v=fePsD_8p9vM&list=PL78X


http://chatgpt.dhexx.cn/article/9UIbdmsp.shtml

相关文章

PBR流程介绍和模型规范

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

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

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

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

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

PBR——概述、基于物理的材质

PBR概述 PBR,即Physically Based Rendering,主要分为基于物理的材质、基于物理的光照和基于物理的相机三个部分,目前来说对大家最为所熟知的是基于物理的材质部分。本文围绕基于物理的材质进行相关介绍。 什么是PBR 其实最早听说PBR这玩意…

PBR基础理论通俗解释

PBR基础理论通俗解释 今天给大家介绍PBR的基础理论, 不会涉及比较深的具体算法, 算是一篇扫盲的文章, 尽量尝试说人话, 让大家能够对PBR有基本的了解. 什么是PBR? PBR是基于物理的渲染(Physically Based Rendering), 也就是说通过模拟物理世界的方式来渲染. 既然有基于物理…

基于物理的渲染PBR(一):pbr的基础理论和推导

初始PBR 最近刚接触pbr不久,我搜寻了许多文章进行阅读并了解后发现,pbr涉及到的知识点繁琐且不容易理解,所以想在博客上给自己记录并总结一下,方便以后回顾并加深记忆。 这里首先借用知乎上的大佬毛星云关于pbr所涉及到的知识要…

策略路由(PBR)

1、基本概念 PBR (Policy-Based Routing,策略路由): PBR使得网络设备不仅能够基于报文的目的IP地址进行数据转发,更能基于其他元素进行数据转发,例如源IP地址、源MAc地址、目的MAc地址、源端口号、目的端口号、VLAN-ID等等。 用户还可以使用A…

技术美术知识学习_04:PBR的个人理解

一、什么是PBR? PBR(Physically Based Rendering),中文翻译为基于物理的渲染。 PBR是一种渲染方式,是使用基于物理原理和微平面理论的光照模型,以及使用从现实中测量的表面参数来准确表示真实世界材质的渲…

图灵直播|《第一行代码》作者郭霖在线Coding,今晚八点,给你留位!

图源来自Pexels “我们为什么需要 Kotlin?答:消失的 Getter 和 Setter、又见空指针、Smart Cast、打日志、再见Utils、晚安ButterKnife……” 相信很多人初识Kotlin,都是基于谷歌技术大牛 Steve Yegge的一篇文章《为什么说 Kotlin 比你们用的…

撸了郭霖大神写的Framework源码笔记,offer拿到手软

前不久听我一个字节的朋友说了一个神转折的故事。 一名大专生,异常执着地向他们公司投简历,屡战屡败,屡败屡战,前前后后向字节跳动投了九次简历。 你猜后面怎么着?还真让他成功了,第九次居然拿到了offer! 看到这里,不过是一个普普通通的励志故事吧,一个菜鸡凭借自己…

(郭霖)Android图片加载框架最全解析(一),Glide的基本用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 现在Android上的图片加载框架非常成熟,从最早…

图灵专访:郭霖的成长之路

各位小伙伴们大家早上好,最近这段时间我真的是快要忙疯了,好多件事情同时在做,实在抽不出时间写原创文章。 正巧想到前段时间和图灵做了一次专访,记录了一些我的成长经历。这篇专访姑且也可以算是一篇原创吧,因为里面的…

第一行代码-第二版(郭霖著)笔记十一(Material Design)

目录 一、什么是Material Design 二、Toolbar 三、滑动菜单 1.DrawerLayout 2.NavigationView 四、悬浮按钮和可交互提示 1.FloatingActionButton:悬浮按钮 2.Snackbar:提示工具 3.CoordinatorLayout:加强版FrameLayout 五、卡片式…

第一行代码-第二版(郭霖著)笔记二(Activity)

目录 一、Activity的用法 1.Activity 2.Toast 3.菜单 4.销毁一个活动 二、Intent 1.使用显示Intent 2.使用隐式Intent 3.更多隐式Intent的用法 4.向下一个活动传递数据 5.返回数据给上一个活动 三、活动的生命周期 1.返回栈 2.活动的四种状态 3.活动的生存期 4…

android动态权限依赖库,动态申请app权限:郭霖大神的PermissionX库带你告别原生

引言 为什么那么多人想要自定义Android的权限申请PermissonX?因为PermissionX默认的权限提醒弹出实在是太丑了!而且,需要在你需要提醒用户弹出Dialog时,显得捉襟见肘,你可能就在想有没有一款能封装进去Dialog提醒用户,具有超棒的用户体验,还能看起来美观大气的Permissio…

跟随郭霖学Volley

volley 下载导入volleyjar 学习地址: https://blog.csdn.net/guolin_blog/article/details/17482095 2013在Google I/O大会提出 github地址: https://github.com/google/volley 下载volley导入到as 具体的操作是: project模式下 具体看图: 之后的操作是打开lib 选择jar 右…

android 6.0权限 郭霖,Permission——郭霖认为最优的运行时权限方案

Android6.0发布这么久,对运行时权限也看了很多资料,对比过几个流行的库。但是个人还是喜欢在项目里用自己动手封装的东西,哪怕照抄也好。。。不知道是什么原因。 前天无意听郭神的直播。讲解的是运行时权限的封装,收益颇多。依样画…

郭霖LitePal

由于项目需要开始学习sqlite 一开始先学习使用的是 android ormlite 操作 从最基本的建表增删改查一路走来 磕磕碰碰很多 都是在内存中操作sqlite 只能通过sqlitestudio工具进行查看 不能导出 并且应用卸载数据表就丢失 最终考虑在sd卡中操作sqlite 但是ormlite 并没有这方面…

android郭霖博客,Runtime Permissions(郭霖CSDN公开课)

运行时权限 Api23开始,Android权限机制更改,有一部分权限不再是简单的在AndroidManifest.xml中声明即可。而是需要在运行时让用户去选择是否允许该项权限的操作。 那么哪些权限需要在运行时申请呢?危险权限需要这么做,而普通权限仍…

看一看Facebook工程师是怎么评价《第一行代码》的

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。 大家好,我是一名Facebook的工程师,同时也是《第一行代码——Android》的忠实读者。 虽然我最近几年是在国外读书和工…