三维空间全局光照 | 及各种扫盲

news2025/4/24 14:25:27

Lecture 6

SH for diffuse transport

Lecture 7关于

SH for glossy transport

三维空间全局光照

diffuse case和glossy case的区别

在Lambertian模型中,BRDF是一个常数

diffuse case 跟outgoing point无关

glossy case  跟outgoing point有关 (Glossy就是介于Specular和Diffuse中间的)

“Wavelet” 小波函数

小波变换原理:一次讲透小波变换原理,全新角度切入,20分钟时长警告!_哔哩哔哩_bilibili

dot product<->Similarity

基函数(Basis Functions)

  • 球谐函数(Spherical Harmonics, SH)低频光照(如环境光、漫反射)。

  • 小波(Wavelets):适合表示高频细节(如硬阴影、镜面反射)。

“Interreflections” 指的是相互反射,通常用于描述光线在多个表面之间的多次反射现象

光照探针和反射探针

成组的光照探针,动态物体靠近探针时,把周围几个探针记录的数据插值。

「实战系统课」:Unity光照探针快速上手_哔哩哔哩_bilibili

Recap: PRT

Lo​(p,ωo​)=∫Ω+​Li​(p,ωi​)fr​(p,ωi​,ωo​)cosθi​V(p,ωi​)dωi​

Li​(p,ωi​):Lighting(光源):从方向 ωi进入点 p 的光的亮度

fr​(p,ωi​,ωo​)cosθi​V(p,ωi​)dωi​:通俗点说,Light Transport(光传输) 就是描述 光线如何从一个地方到达另一个地方的过程,但不包括光的源头(光源)。

可以把它想象成:
💡 光源 就像太阳、灯泡,它们是光的起点。
🪞 光传输 就是光线在物体表面上如何被 反射、折射、吸收,以及是否被 遮挡(投影阴影)

Recap:反射方程

总结

这个公式的作用是:

  1. 收集所有入射光 Li
  2. 考虑材质的反射方式 fr
  3. 考虑光照角度 cos⁡θi
  4. 检查是否有遮挡 V(p,ωi)
  5. 对所有可能的入射方向进行求和,得到最终的出射光 Lo(p,ωo)

通俗比喻

  • Li → 有哪些光源在照亮这个点?
  • fr → 这个表面是镜子、墙壁,还是金属?
  • cos⁡θi→ 光是正着照还是斜着照?
  • V(p,ωi) → 这个方向的光有没有被挡住?
  • 积分 ∫Ω+(...)dωi​ → 计算所有方向上的光照贡献,得到最终的颜色。

这个公式在 全局光照预计算辐射传输(PRT) 中非常重要,因为它描述了光线如何在场景中传播,并且决定了每个点的最终颜色。

Recap:球谐投影(Spherical Harmonics Projection)

f(x) = ∑ᵢ cᵢ ⋅ Bᵢ(x)

公式解释

  1. f(x):原始的2D函数,可以是光照信息、颜色分布、阴影等。
  2. Bᵢ(x):一组基函数(Basis Functions),这些基函数是球谐函数(Spherical Harmonics,SH)。
  3. cᵢ:投影系数(Coefficients),代表了函数 f(x)f(x)f(x) 在每个基函数 Bi(x)B_i(x)Bi​(x) 上的权重。

三维空间全局光照

realtime rendering中实现比直接光照多弹射一次的间接光照

次级光源secondary light source

真正光源primary light source

one-bounce global illumination (dir+indir)

得到p的间接光照

how

1)哪些算次级光源=which surface patches are directly lit (shadow mapping可以得到这个信息)

2)这些patches如何贡献给点p

假设:所有反射直接光照的reflector是diffuse的(不用管最后接收到的表面是不是)


这篇破笔记从2.3号写到2.5号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2293794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Polardb三节点集群部署安装--附虚拟机

1. 架构 PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计&#xff0c;系统由4个核心组件组成。 计算节点&#xff08;CN, Compute Node&#xff09; 计算节点是系统的入口&#xff0c;采用无状态设计&#xff0c;包括 SQL 解析器、优化器、执行器等模块。负责数据…

java s7接收Byte字节,接收word转16位二进制

1图&#xff1a; 2.图&#xff1a; try {List list getNameList();//接收base64S7Connector s7Connector S7ConnectorFactory.buildTCPConnector().withHost("192.168.46.52").withPort(102).withTimeout(1000) //连接超时时间.withRack(0).withSlot(3).build()…

挑战项目 --- 微服务编程测评系统(在线OJ系统)

一、前言 1.为什么要做项目 面试官要问项目&#xff0c;考察你到底是理论派还是实战派&#xff1f; 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题&#xff0c;或扩展需求…

基于springboot的体质测试数据分析及可视化设计

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

java-重载与重写

介绍 在 Java 中&#xff0c;重载&#xff08;Overloading&#xff09; 和 重写&#xff08;Overriding&#xff09; 是两个重要的概念&#xff0c;它们都与方法有关&#xff0c;但它们的应用场景和行为完全不同。 通过理解重载和重写的区别&#xff0c;可以更好地设计类的继承…

DeepSeek各版本说明与优缺点分析

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列&#xff0c;其在不同版本的发布过程中&#xff0c;逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本&#xff0c;从版本的发布时间、特点、优势以及不足之处&#xff0…

2024年12月 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化&#xff08;三级&#xff09;真题解析 中国电子学会全国青少年软件编程等级考试 一、选择题(共18题&#xff0c;共50分) 第 1 题 气温和对应的穿衣建议如下表所示&#xff0c;下列选项能正确给出穿衣建议的是&#xff1f;&#xff08; &#xff09; A. …

C# 中记录(Record)详解

从C#9.0开始&#xff0c;我们有了一个有趣的语法糖&#xff1a;记录(record)   为什么提供记录&#xff1f; 开发过程中&#xff0c;我们往往会创建一些简单的实体&#xff0c;它们仅仅拥有一些简单的属性&#xff0c;可能还有几个简单的方法&#xff0c;比如DTO等等&#xf…

【MQTT协议 03】 抓包分析

一、MQTT测试工具 1、mqtt服务器 emqx 2、mqtt 客户端 mqttx 3、抓包工具 wireshark 搭建参考 【MQTT 协议 01】MQTT 服务器搭建_mqtt服务器搭建-CSDN博客 二、报文测试 2.1、CONNECT &#xff08;客户端连接&#xff09; 2.1.1、抓包 2.1.2、解析 #16进制表示 10300…

手机上运行AI大模型(Deepseek等)

最近deepseek的大火&#xff0c;让大家掀起新一波的本地部署运行大模型的热潮&#xff0c;特别是deepseek有蒸馏的小参数量版本&#xff0c;电脑上就相当方便了&#xff0c;直接ollamaopen-webui这种类似的组合就可以轻松地实现&#xff0c;只要硬件&#xff0c;如显存&#xf…

电商项目-分布式事务(四)基于消息队列实现分布式事务

基于消息队列实现分布式事务&#xff0c;实现消息最终一致性 如何基于消息队列实现分布式事务&#xff1f; 通过消息队列实现分布式事务的话&#xff0c;可以保证当前数据的最终一致性。实现思路&#xff1a;将大的分布式事务&#xff0c;进行拆分&#xff0c;拆分成若干个小…

leetcode_双指针 160.相交链表

160.相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 思路: 本题中&#xff0c;交点不是数值相等&#xff0c;而是指针相等 双指针遍历两遍后必定相遇&#xff0c…

深入理解浮点数:单精度、双精度、半精度和BFloat16详解

文章目录 深入理解浮点数&#xff1a;单精度、双精度、半精度和BFloat16详解 &#x1f522;简介 &#x1f31f;1. 单精度&#xff08;Single Precision&#xff09;&#x1f3af;应用场景 &#x1f680; 2. 双精度&#xff08;Double Precision&#xff09;&#x1f4aa;应用场…

Verilog基础(三):过程

过程(Procedures) - Always块 – 组合逻辑 (Always blocks – Combinational) 由于数字电路是由电线相连的逻辑门组成的,所以任何电路都可以表示为模块和赋值语句的某种组合. 然而,有时这不是描述电路最方便的方法. 两种always block是十分有用的: 组合逻辑: always @(…

拍照对比,X70 PRO与X90 PRO+的细节差异

以下是局部截图&#xff08;上X70P下X90PP&#xff09; 对比1 这里看不出差异。 对比2 X90PP的字明显更清楚。 对比3 中下的字&#xff0c;X90PP显然更清楚。

Node.js与嵌入式开发:打破界限的创新结合

文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架构3.3 核心代码片段四、…

使用java调用deepseek,调用大模型,处理问题。ollama

废话不多&#xff0c;直接上代码 Testpublic void test7171111231233(){// url:放请求地址String url "http://localhost:11434/api/generate";HttpRequest request HttpUtil.createPost(url);Map<String, String> headers new HashMap<>();String a…

Linux驱动---字符设备

目录 一、基础简介 1.1、Linux设备驱动分类 1.2、字符设备驱动概念 二、驱动基本构成 2.1、驱动模块的加载和卸载 2.2、添加LICENNSE以及其他信息 三、字符设备驱动开发步骤 3.1、分配主次设备号 3.1.1 主次设备号 3.1.2静态注册设备号 3.1.3动态注册设备号 3.1.4释…

php7.3安装php7.3-gmp扩展踩坑总结

环境&#xff1a; 容器里面为php7.3.3版本 服务器也为php7.3.3-14版本&#xff0c;但是因为业务量太大需要在服务器里面跑脚本 容器里面为 alpine 系统&#xff0c;安装各种扩展 服务器里面开发服为 ubuntu 16.04.7 LTS (Xenial Xerus) 系统 服务器线上为 ubuntu 20.04.6 LTS (…

javaEE-8.JVM(八股文系列)

目录 一.简介 二.JVM中的内存划分 JVM的内存划分图: 堆区:​编辑 栈区:​编辑 程序计数器&#xff1a;​编辑 元数据区&#xff1a;​编辑 经典笔试题&#xff1a; 三,JVM的类加载机制 1.加载: 2.验证: 3.准备: 4.解析: 5.初始化: 双亲委派模型 概念: JVM的类加…