渲染方程的一点介绍

2023-11-04

来自:

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

反射方程

入射——反射——出射,没毛病。

光线只弹射一次,入射光都来自光源,没毛病。

但是,光线可能弹射的不止一次,这个入射,除了来自光源,还可能来自其它物体的反射。

所以,可能得递归……

从反射方程,推广到渲染方程

一个物体的某点向某个方向发射能量,这个能量,来源有两部分——自发光的,其它物体射过来的。

现代图形学的基础

那末,怎么解这个方程?以后再说……

这个论文的名字就叫《The Rendering Equation》

现在,可以不沉浸在推导里了

【这里的渲染方程只是针对反射,不能描述折射、散射等现象】

【半球,写作Ω+,只考虑上半球】

【KaijiyaKay?】

【因为是有限个点光源,所以不需要对立体角积分便能得到入射点的irradiance】

【BRDF的定义公式也表明它是将某个立体角附近范围入射的部分irradiance】

【点光源的radiance是没意义的,点光源应该用intensity,E=intensity/r^2】

【这里为什么没有积分了??】

【点光源啊,只有一条光线会有贡献】

【这里只考虑一根光线 所以积分没了 其他项都是0】

【没有积分了哦  这里只考虑特定的一根或几根光线    积分理解为求和即可】

【这里的(wi, n)应该是(wi dot n)】

【积分已经算出来了,直接就是Lux了】

【因为这里是点光源,不存在积分】

【求连续的 才用积分】

——不存在积分,所以把上面那个公式里的积分号+后面的积分变量去掉了,它俩是一对,表示积分,明白了

 好多点光源,就都累加起来

 如果是面光源呢?按若干点光源的集合来算

求和变成了积分

【多个有限(离散)点光源就是求和了,面(连续)就要积分了】

【连续的情况下还要乘上一个立体角微元】

渲染方程 

 如果除了光源,还有其它物体反射过来的光,怎么计算?

把这个物体当成光源

【为啥有个负号】

【因为这里的入射角度为了方便函数计算都是规定为从反射点朝外的,但是这里的入射角作为另一个点的出射角是从外射向当前点的,所以正好相反,这里加一个负号就可以直接递归了】

【因为-wi是物体到反射点向量】

 理解成递归,好处多多

当年的论文

化简 

 【BRDF如何定义 那就看他们怎么总结的了  多半也是 参数调来调去 调到最接近现实的情况  记录下来 发布出去 广泛应用】

【递归的终点就是光源吧】

用递归的话,可以数学化简到这个方程,中间省略了很多过程

简写的渲染方程,为了理解

 通过未知的化简等很多步骤,还可以简写成这样,写成算子……

中间的很长的过程,省略了

L:要算的东西

E:光源本身辐射的能量

K:反射操作符,反射能量

【式子越短。问题越大】

【总能量=自发光能量+总能量*各级衰减系数】

【微积分都可以写成线性代数形式】

【K其实可以跟之前讲光的K类比,衰减】

【前面的那个式子左侧项也可以改成一个l和单位算子的积分,就可以减了】 

【要理解算子,才能这么做,不然完全不理解的】

【陈文灯,微分算子解方程】

【考研在B站看了个 算子的解题技巧- -  算矩阵方程用的  就是把矩阵看成 x 应用高数的泰勒展开 或者其他公式  算出来再把x写成原矩阵即可】

【这就是普通的泰勒展开】

【L是封闭空间所有反射光能量,乘以K算子会减少,但是再加上E恰好不变。就像封闭盒子里面放一个光源,内部光稳定】

【这里是generating function,不是所谓的泰勒展开,只不过看起来形式一样】

 

【线性泛函,这个K是有界线性算子】 

【《具体数学》2.2节对几何级数做了详细推导】

【可怕,这竟然是人脑想出来的】

【这个其实和前面的积分没区别的,只是不同的表达形式】

 【其实第一个式子本来就是个递推式,直接展开也能得到这个结果】

【对,直接用递归推导,也能得到相同的式子】

好像是真的。。

然后就可以根据这个拆开的结果来理解了

按光线弹射次数分类,相当于,傅里叶变换的那种分类

【理解这个把一次一次叠加然后累计得到总的就能理解了】

【结果很符合直觉但是过程太高深】

【这个要求||K||严格小于一才能正确的。】

【结果很清晰,但我真没搞懂怎么来的】

【现实是瞬间完成无数次反射】

【过程很痛苦,结果很巧妙】

【重新定义自然而然】

【由于渲染方程是递归定义的,这个式子是递归展开的形式】

【这里的K要看成算子而不是矩阵】

【果然所有前沿研究的尽头本质是数学】

 然后,可以介绍一个新的概念——全局光照

光线弹射一次——直接光照

光线弹射两次——间接光照

弹射一次,两次,三次……——全局光照

光栅化的着色,大概就是这个。

光栅化只能描述光线弹射0次,1次的情况。再往后,光栅化就比较难做了。

【全局光照 = 直接光照 + 间接光照 + 两次弹射光照 + 三次弹射光照 + ....】

实际应用 

 然后,介绍一点直观的

【注意这张图上面的灯是亮的,后面要考】

直接光照,

 

 

为什么,弹射次数增加到4次,灯就亮了?因为次数少,只够光线从摄像机到灯,出不来;次数多,够出来了,追踪到光源了,就亮了。 

比如,光线至少弹射2次,才能出玻璃球。

光线穿过这个灯,得经过2层玻璃。

 

 

弹射次数继续增加,是全白,还是收敛?

自然界都是全局光照,所以,是收敛。

 【这需要BRDF满足能量守恒的约束】

后面再说。。

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

渲染方程的一点介绍 的相关文章

  • 数据结构与算法 基础概述 入门必备!

    一 数据的逻辑结构 1 集合结构 结构中的数据元素之间除了同属于一个集合的关系外 再无任何其它关系 2 线性结构 结构中的数据元素之间存在着一对一的线性关系 3 树形结构 结构中的数据元素之间存在着一对多的层次关系 4 图状结构 结构中的数
  • 使用Microsoft Visual Studio提供的DumpBin.exe工具查看DLL导出段

    以VS2008为例说明如何使用DumpBin exe工具 其他版本的使用方式应该一样 可能只是存放位置不同 o o Step1 打开Tools Visual Studio 2008 Command Prompt 打开命令行窗口 Step2
  • 论文阅读-位姿估计-SE3-Nets Learning Rigid Body Motion using Deep Neural Networks

    SE3 Nets Learning Rigid Body Motion using Deep Neural Networks 1 输入 三维点 系统输入 如推力 输出 三维点 该论文只针对三维点云输入 RGBD等 来求解每帧中目标物体的刚体
  • 关于前端动态调试解密签名校验的分享

    首先我们先来看一下 下面这张图是笔者近期测试遇到的问题 那就是程序每次生成请求都会生成signature的验签 该验签生成方式暂不可知 唯一知道的就是用一次就失效 这对测试的成本造成了很不好的影响 那么我们想要突破防护 最起码也要知道 这个
  • 类文件具有错误的版本 55.0, 应为 52.0 

    低版本的jre运行了高版本编译的class 解决办法 更换高版本的jdk即可
  • Python3中collections.OrderedDict介绍

    Python3中的collections模块实现了特定目标的容器 以提供Python标准内建容器dict list set和tuple的替代选择 包括namedtuple deque ChainMap Counter OrderedDict
  • js移除某个样式_以太坊 JavaScript 库:web3.js 与 ethers.js 比较(第一部分)

    Web3 js 和 ethers js 都是 JavaScript 库 其作用是使开发者可以与以太坊区块链交互 这两个库都很实用 都能满足大多数以太坊开发者的需求 本文将重点围绕 web3 js 和 ethers js 的相同点和不同点来对
  • Leetcode 189. 旋转数组(二次反转,环状替换(双临时变量))

    旋转数组 给定一个数组 将数组中的元素向右移动 k 个位置 其中 k 是非负数 示例 1 输入 1 2 3 4 5 6 7 和 k 3 输出 5 6 7 1 2 3 4 解释 向右旋转 1 步 7 1 2 3 4 5 6 向右旋转 2 步
  • 将代码保留原格式(高亮)复制到word

    有时需要保持美观将代码保持语法突出或高亮复制粘贴到word上 一些方法如下 法一 借助网站http www planetb ca syntax highlight word 代码有编号 整体排版精美令人舒适 但语言有限 例如无matlab
  • MySQL数据迁移--思路

    背景 不知道原来有一个A表是专门存储备注信息的 新建了B表 导致同一个存储功能的表分在了两个数据库 表名和字段名不一样 为了后续方便 现在想把B表的数据合并在A表中 因为有一些数据是在A表中已经存在了的 所以A表存在了的就要更新 不存在的就
  • 在Metasploit中使用PostgreSQL

    第一次运行msfconsole时 BT5中的Metasploit会创建名称为msf3dev的PostgreSQL数据库 并生成保存渗透测试数据所需的数据表 然后使用名称为msf3的用户 自动连接到msf3数据库 启动msfconsole后
  • 什么是oc门

    什么是oc门 oc门电路及符号 oc门电路应用 实际使用中 有时需要两个或两个以上与非门的输出端连接在同一条导线上 将这些与非门上的数据 状况 用同一条导线输送出去 因此 需要一种新的与非门 电路来实现线与逻辑 这种门 电路就是集电极开路与
  • FPGA时序约束分享03_input delay约束

    第一章 FPGA时序约束分享03 input delay约束 作者 潘文明 本文章探讨一下FPGA的时序input delay约束 本文章内容 来源于配置的明德扬时序约束专题课视频 FPGA时序约束分享01 约束四大步骤 概括性地介绍 了时
  • 【火炉炼AI】机器学习040-NLP性别判断分类器

    火炉炼AI 机器学习040 NLP性别判断分类器 本文所使用的Python库和版本号 Python 3 6 Numpy 1 14 scikit learn 0 19 matplotlib 2 2 NLTK 3 3 本文的目标是构建一个分类器
  • C++1949到2022的闰年

    include
  • 2012年CSDN高校俱乐部秋季巡讲结案报告

    2012年CSDN高校俱乐部巡讲已经结束 并且得到了来自各地专家的支持 在此对他们深表谢意 同时欢迎更多的讲师加入巡讲 参与到我们的大学生公益组织中 为大学生提供技术知识和人生经验 以下是2012年高校俱乐部秋季巡讲结案报告 巡讲数据及过程
  • SystemVerilog and Verilog X Optimism – Hardware-like X Propagation with Xprop

    原文链接 http www verilogpro com x propagation with vcs xprop August 30 2015 by Jason Yu In part 2 of this series SystemVeri
  • jquery 对象不支持此属性或方法

    本来调用 和jQuery没问题 控制台也可以打印出 和jQuery 但是调用了document write后 出错 对象不支持此属性或方法 控制台也打印不出 了 报同样的错 原因 document write把整个网页重写了 当然就消失了

随机推荐

  • 鸿蒙系统包括8x吗,华为荣耀8X可以升级鸿蒙系统吗?

    开发者大会上 余总表示会逐步在各种设备上部署鸿蒙包括pc 那么目前有没有具体的时间 EMUI 发展到EMUI10 0这一代的时候 基本上跟安卓没了关系 唯一算的上跟安卓有关的就是安卓的内核 除了安卓这个内核 其他的东西全是华为自己的 编译器
  • 计算a+b多组

    计算a b 很多的题目测试数据会有很多组的 一般我们的在线系统没写具体要求的时候 输入是以EOF为结束的 这题的基本框架如下 int main int a b while scanf d d a b EOF 特别注意这行的写法 求和 输出
  • 移动端调试工具vConsole

    安利一款好用的移动端调试工具vConsole vConsole 是腾讯推出的一个轻量 可拓展 针对手机网页的前端开发者调试面板 官网 https alloyteam github io AlloyLever 特性 查看 console 日志
  • 安装虚拟机提示未启动服务器,Hyper-V虚拟机未启动,并触发0x80070057错误

    Hyper V虚拟机未启动 并触发0x80070057错误 09 17 2020 本文内容 本文提供了一个解决方案0x80070057尝试启动虚拟机时发生的错误 适用于 Windows Server 2012R2 原始 KB 编号 3084
  • VSCode 与 WebStorm 横向对比

    https segmentfault com a 1190000020244810
  • Outlook定时/延时发送邮件

    打开邮件撰写界面 需要进入邮件全屏界面 点开Option 选择Delay Delivery 设置需要发送的时间点 该时间与系统时间一致 最后一定要点击发送 使邮件进入待发送箱 否则就delay了一个寂寞 将会在待发送列表里看到这封邮件 以上
  • scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“

    scp或者ssh报错 no matching host key type found Their offer ssh rsa ssh dss 原因 OpenSSH 7 0以后的版本不再支持ssh dss DSA 算法 查看ssh版本 ssh
  • 2022年CCCC天梯赛题解

    L1 1今天我要赢 原题链接 代码 include
  • Java中计时函数

    Java计时函数currentTimeMills System currentTimeMills 计时精确到毫秒级 跟计算机以1970年1月1日0时为计时起点一样 该函数方法统计的也是从1970年1月1日0时开始 到程序运行到该函数时刻的毫
  • Parameter 1 of constructor in xxx required a bean of type xxx‘ that could not be found.已经解决

    使用Mybatis Plus 时遇到问题Parameter 1 of constructor in xxx required a bean of type xxx that could not be found 已经解决 错误截图 错误原因
  • FPGA图像处理系列——乒乓球追踪设计实例

    注 本博文将讲解一个FPGA设计图像处理系统实例 此实例的功能为高速追踪乒乓球 读者可以参考本博文的算法思路 工程框架 但博主并不提供工程 当前 实用的图像处理系统都要求高速处理 目前广泛采用软件进行处理 但软件处理存在速度 成本的问题 近
  • MFC中CListCtrl改变选中行(选中列)的颜色实现选中高亮的效果

    在项目中遇到了这样的需求 需要对选中行进行高亮 查了一下相关的资料 记录一下自己采用的方法 先在List控件所在类中 这里是CListshow 继承于CListCtrl 添加两个变量SelectRow和SelectCol 用于保存鼠标点击的
  • QEMU虚拟机中如何安装Virtio驱动

    在计算机虚拟化中 Virtio是一种半虚拟化解决方案 即需要对Guest OS进行一定的修改 安装相应的驱动程序 能够对虚拟机的I O性能进行大幅的提升 在QEMU KVM的环境中 Virtio的后端驱动由QEMU程序提供 不需要额外的安装
  • 不要把领导当成客户

    以客户为中心的思想 几乎在所有公司都会被提及和执行 他的终极目标是和客户达成共赢 但是 并不是所有人都理解了以客户为中心 我今天想说的是来源于我们的一次工作讨论 几位新同事在分享服务案例的时候 提到自己的客户 经常把经理当成客户 他们是这样
  • python3 numpy安装 linux_Centos7安装python3、numpy、scipy、matplotlib、pandas等

    centos 7 已经自带 python 2 7 15 这里需要安装 python 3 root pwm python Python 2 7 15 Anaconda Inc default Dec 14 2018 19 04 19 GCC
  • 图(3)--拓扑排序与关键路径

    一 拓扑排序 1 定义 拓扑排序可以理解为在有向图无环图AOV 网 Activity On Vertex 用图的顶点表示活动 用弧表示活动之间的优先级 中排成一个具有前后次序的线性序列 2 实现方式 1 输入AOV网络 令 n 为顶点个数
  • 谷歌插件下载

    谷歌插件下载 在这个网站 https www extfans com 搜索下载 解压后得到xxx crx文件 将xxx crx后缀名改为xxx zip 解压xxx zip 得到xxx文件夹 在谷歌浏览器扩展程序中加载上面解压的文件夹
  • 面试题汇总(二)容器

    容器 18 java 容器都有哪些 常用容器的图录 19 Collection 和 Collections 有什么区别 java util Collection 是一个集合接口 集合类的一个顶级接口 它提供了对集合对象进行基本操作的通用接口
  • linux的相关知识

    本节内容我们主要介绍linux 的基本概念 shell的相关命令 一 Linux的基本知识 1 什么是Linux Linux是一套免费使用和自由传播的类Unix操作系统 是一个多用户 多任务 支持多线程和多CPU的操作系统 它能运行主要的U
  • 渲染方程的一点介绍

    来自 GAMES101 现代计算机图形学入门 闫令琪 哔哩哔哩 bilibili 反射方程 入射 反射 出射 没毛病 光线只弹射一次 入射光都来自光源 没毛病 但是 光线可能弹射的不止一次 这个入射 除了来自光源 还可能来自其它物体的反射