18、计算机图形学——BRDF与渲染方程

2023-11-03

一、BRDF(Bidirectional Reflectance Distribution Function)双向反射分布函数

基于https://blog.csdn.net/Master_Cui/article/details/119787704中的内容,就可以基于辐射度量学理解反射

先看下图中法线的右侧,符合照度(Irradiance)模型,表示单位面积上接受到了能量

再看法线的左侧,符合radiance模型,表示将单位面积上,沿着单位立体角将能量辐射出去

所以,反射就可以理解为:根据镜面反射或者漫反射方式的不同,将某个单位面积上接收到的能量dE以dL的方式辐射出去

但是这里的问题在于:入射方向的能量有多少被辐射出去了呢?为了表示这个比例,brdf出现了,brdf的表示如下图所示

这个比例,取决于物体表面的材质,所以,brdf的决定因素就是物体表面的材质

借助于brdf和对单个点的反射情况的分析,就可以认为,反射是单位面积上,所有方向的能量被吸收后,再向外辐射的过程

所有方向在数学上的表示就是对单位立体角进行积分(累加),因此,反射方程可以写成如下形式

上述方程的物理意义就是单位面积所有方向接收到的能量乘上一个比例因子(brdf)后,向外辐射了多少radiance

二、渲染方程

渲染方程就是在反射方程的基础上加了一个自放光项的radiance

三、渲染方程的理解

当只有一个入射光时

当有多个入射光时

当存在面光源时,可以把面光源看成无数个点光源,因此,渲染方程写成如下形式

 当空间中存在其他物体时,也可以将物体视为光源,因为物体会将反射的光照射到单位面积上,在下图中,只有等式两侧的radiance是未知的

因此,可以将上式写成

将上式再次写成矩阵的形式为

再对矩阵形式进行变换

得出反射结果可以进行如下表示

可见,光线追踪得到的渲染结果,不仅包含了光栅化的渲染,更包含了间接反射的渲染,所以,光线追踪得到的渲染效果是全局光照(直接光照+间接光照)

光栅化只是光线追踪的近似

下图是一次反射和四次反射的光线追踪渲染效果图

参考

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

18、计算机图形学——BRDF与渲染方程 的相关文章

  • 图形学数学基础之基本蒙特卡罗尔积分(Monte Carlo Integration)

    作者 i dovelemon 日期 2017 07 29 来源 CSDN 主题 Monte Carlo Integration 引言 好久没有写博客了 最近一直在忙于工作 同时GLB库中关于PBR的渲染算法 一直卡住 无法实现下去 不过在这
  • openGL之API学习(五十四)glDepthFunc

    指定深度测试比较的方法 如果满足深度测试条件则赢得深度测试并会被渲染出来 void glDepthFunc GLenum func func Specifies the depth comparison function Symbolic
  • UnityShader 模型空间转剪裁空间

    模型空间转剪裁空间 1 引入UnityCG cginc库 include Lighting cginc 2 使用UnityObjectToClipPos 方法 v2f vert a2v v v2f f f svPos UnityObject
  • openGL之API学习(五十六)低模、高模的区别以及各自的使用领域

    高模是高细节高精度的3D模型 高模看上去十分逼真细节非常丰富模型的面数也相当的高 低模是游戏里的说法 可以理解为游戏所使用的模型 高模有很多作用可以用于电影制作 广告等等 在游戏里高模主要是为了烘焙NormalMap 并且运用在游戏低模型上
  • openGL之API学习(五十二)透视分割 透视除法的执行位置

    根据文章https blog csdn net hankern article details 89220736 的分析 透视分割 又叫透视除法 执行的位置在栅格化阶段
  • OpenGL 纹理数组

    参考 glTexStorage3D glTexStorage3D glTexImage3D glTexSubImage3D glTexStorage3D code example
  • games103——作业2

    实验二主要使用隐式积分法以及PBD法完成布料仿真 完整项目已上传至github 文章目录 基于物理的方法 弹簧系统 单个弹簧 多个弹簧 弹簧网络 结构化弹簧网络 Structured Spring Networks 非结构化弹簧网络 Uns
  • openGL之API学习(七十四)opengl版本的历史沿革

    OpenGL源于SGI公司为其图形工作站开发的IRIS GL 在跨平台移植过程中发展成为OpenGL SGI在1992年7月发布1 0版 后成为工业标准 由成立于1992年的独立财团OpenGL Architecture Review Bo
  • openGL之API学习(七十七)glDrawElements

    通过索引方式来绘制几何图元 如果要 glDrawArrays 和 glDrawElements 正确进行绘制的话 必须在之前 调用带有相应参数的 glEnableClientState 方法 glDrawArrays使用的是顶点 而glDr
  • 实时渲染学习(十)渲染加速算法总结

    参考博文 Real Time Rendering 3rd 提炼总结 十一 第十四章 游戏开发中的渲染加速算法总结 前言 本章主要介绍了一些加速渲染算法 个人认为了解这些加速技术还是很重要的 本章知识概览 常用空间数据结构 Spatial D
  • openGL之API学习(三十)深度缓冲区深度值为负值

    通过 glReadPixels 0 0 WINDOW WIDTH WINDOW HEIGHT GL DEPTH COMPONENT GL UNSIGNED BYTE tmpPixelsBuffer 从帧缓冲区中读取深度信息 深度值竟然是负值
  • 【GAMES101闫令琪图形学】作业0(配置开发环境)

    去games101往期作业汇总帖下载作业0的压缩包 作业0是让你配环境的 很简单 操作系统 VirtualBox虚拟机 Ubuntu20 04 比课程提供的虚拟硬盘版本更高 安装eigen和cmake sudo apt get instal
  • 【PBR系列二】辐射度量学理论

    本文核心知识主要参照 现代计算机图形学入门 闫令琪课程课件PPT 后续光线追踪系列辐射度量学知识也源于此处 辐射度量学理论 在开始之前我们先思考 为什么学习辐射度量学 辐射度量学是基于物理光照的基础 一 辐射能和辐射通量 辐射能 Radia
  • GAMES101笔记_Lec07~09_着色 Shading

    0 我们已经学了什么 What We ve Covered So Far 空间中定义了一个摄像机 通过某些变换使模型摆好姿势 Model 通过观测变换让摄像机放在原点 得到标准的 1 1
  • 图形学笔记《Fundamentals of Computer Graphics 4th Edition》——【1】Introduction

    Graphics Areas major areas other areas maybe not core areas Major Applications Graphic APIs Graphics Pipeline Numerical
  • WebGL系列 - 裁剪空间矩阵优化

    该系列仅为记录自己的学习相关知识 以 2d 的顶点着色器为例
  • 计算机图形学入门(一)-线性代数部分知识1

    本部分主要介绍了向量的点乘与叉乘在图形学中的基本应用 介绍了图形学中常用的2D矩阵变换 例如缩放 对称 切变换 旋转 平移 逆变换 组合变换和分解变换 还有在图形学中为了简化操作而采取的添加维度的方法 主要的学习过程来自下面的视频 本文只会
  • 图形学-改进的Bresenham算法

    图形学 改进的Bresenham算法 原理 代码 原理 虽然中点Bresenham算法是一种效率很高的算法 但也还有改进的余地 当然 其基本原理仍是每次在最大位移方向上走一步 而另一个方向上走还是不走取决于误差项的判断 根据中点Bresen
  • BRDF详解

    光照模型主要分为三类 测量模型 经验模型和基于物理的分析模型 在计算机图形学中介绍的光照模型为经验模型中的Phong模型 也就是本人理解的 根据点距光源的位置 入射角度等信息计算的 反射强度 包括漫反射强度 镜面反射强度 但是Phong模型
  • 计算机图形学十五:基于物理的渲染(蒙特卡洛路径追踪)

    蒙特卡洛路径追踪 摘要 1 蒙特卡洛积分 Monte Carlo Integration 2 蒙特卡洛路径追踪 Monte Carlo Path Tracing Reference 本篇文章同步发表于知乎专栏 https zhuanlan

随机推荐

  • 数据库中查询的数据是多条,可是显示出来的只有一条,为什么?

    1 首先附上代码 public List
  • Redis学习笔记5:Jedis、RedisTemplate

    一 Jedis是什么 Jedis是Redis官方推荐的Java连接开发工具 要在Java开发中使用好Redis中间件 必须对Jedis熟悉才能写成漂亮的代码 详细了解 https www jianshu com p a1038eed6d44
  • nacos登录 提示权限认证失败 没有命名空间的访问权限

    前言 环境 centos7 9 nacos 2 2 2 问题描述 最近在部署nacos 2 2 2版本的时候 这是目前2023年4月份最新版本 发现按照start out日志给出的登录地址 http 192 168 158 128 8848
  • TensorFlow.js 和 Node-RED 图像识别应用程序

    在本文中 我们将看看您可以将这两种流行的开源软件工具组合起来做什么 使用 Node RED 创建示例图像识别流程 我们的目标是在 Node RED 中创建一个流来识别图像中的对象 如下面的屏幕截图所示 使用黄色节点组件从浏览器上传文件后 可
  • 【韧性设计模式】韧性设计模式:重试、回退、超时、断路器

    什么是韧性 软件本身并不是目的 它支持您的业务流程并使客户满意 如果软件没有在生产中运行 它就无法产生价值 然而 生产性软件也必须是正确的 可靠的和可用的 当谈到软件设计中的弹性时 主要目标是构建健壮的组件 这些组件既可以容忍其范围内的故障
  • IOS App 的图标和启动图的烦恼

    前言 好多iOS App的开发者都会面临的一个问题 那就是 App 的图标 icon 和启动图 launch images 一些没有经验 指的是没做过App审计的 的UI设计师 不知道该怎么做 他就会问开发者 这个时候就是你展示的时候 其实
  • git format-patch命令介绍

    git format patch的使用 1 在dev1分支上 打出所有dev1分支在master分支基础上的patch git format patch master 结果为d1c1 patch d1c2 patch 2 在dev1分支上
  • Win10 修改JAVAHOME环境变量无效,默认java -version未改变

    Win10 修改JAVAHOME环境变量无效 默认java version不变问题 1 造成该原因的三个路径 环境变量 2 解决方法 1 造成该原因的三个路径 环境变量 1 C Program Files x86 Common Files
  • 使用R读取并查看数据

    本篇文章介绍如何使用R读取并查看数据 包含一些最基础的函数使用方法和说明 后面还会陆续介绍数据清洗 匹配和提取等相关的操作 查看函数帮助 对于新手来说 在使用R时最重要的是了解不同函数的使用方法 很多时候我们都是边用边学的状态 拿到一个函数
  • CRM部署以流程为核心

    大多数国内企业还不太习惯流程 尤其是精细化管理的流程 如果有流程 也可能是粗放型的流程 因为我们还是更注重结果 不太习惯过程管理 我们还是更注重每个人干什么 而不太习惯整体协同 在这样的基础上 大部分企业在部署CRM的时候 就或左或右的进入
  • GitHub Copilot收费了

    今天一早收到邮件看到提示收费的邮件 才想起来还有个这个插件 废话少说直接链接 https github com features copilot 个人看法 功能 首先功能确实是比一般的代码提示强不少 但要做到 我 hello GitHub
  • vue-cli项目中静态文件过大的问题

    我们最近在做一个项目时 因为static 文件中含有几个视频文件 导致static 文件过大 build 的时候非常慢 在这我大概介绍一下上面问题的解决方法 首先我们先要了解一下 webpack 的一个插件 拷贝插件 copy webpac
  • Linux系统安装VMware Tools和同W7共享文件遇到的问题

    我用的系统为CentOS6 5 minimal版本 minimal版本默认不启动网络 所以要自己配置 vi etc sysconfig network script ifcfg eth0 1 NM CONTROLLED no 修改为no不依
  • C# Task Cancellation总结

    1 调用cancellationTokenSource Cancel 时 只有在task的函数体内使用token ThrowIfCancellationRequested 方法时才会触发ContinueWith Action
  • Java jdk1.5 新特性讲解

    JDK1 5 可以说是java 最经典的一个版本了 在 jdk1 5 发布时 就因他的改动大 而命令为jdl5 0 为后来 java 的壮大立下了汗马之劳 有网友在面试的时候被问到 jdk新特性 我这里索性就从 jdk1 5的特性说到1 8
  • Android产品研发(十四)-->App升级与更新

    转载请标明出处 一片枫叶的专栏 上一篇文章中我们讲解了Android app中的轮询操作 讲解的内容主要包括 我们在App中使用轮询操作的情景 作用以及实现方式等 一般而言我们使用轮询操作都是通过定时任务的形式请求服务器并更新用户界面 轮询
  • 《2020王道》

    绪论 数据结构基本概念 数据 数据是信息的载体 是描述客观事物属性的数 字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合 数据元素 数据元素是数据的基本单位 通常作为一个整体进行考虑和处理 一个数据元素可有若干个数据项组成
  • 项目中的外包团队如何管理

    在复杂的项目工作中 对外采购产品 服务变得越来越普遍 这种基于合同的跨组织合作方式 确实给项目的管理工作带来了更大的挑战 项目经理在管理好自己团队的同时 应该怎样做好针对外包团队的监督与控制工作呢 01 工作外包不等于甩包袱 首先需要明确的
  • QLabel中设置背景图片的4种方法

    1 图片不重复 可设置缩放比例 不可动态缩放 find package Qt QT VERSION MAJOR COMPONENTS Svg REQUIRED Qt QT VERSION MAJOR Svg include
  • 18、计算机图形学——BRDF与渲染方程

    一 BRDF Bidirectional Reflectance Distribution Function 双向反射分布函数 基于https blog csdn net Master Cui article details 1197877