《学一辈子光线追踪》 三 光散射

2024-04-07 20:38
文章标签 一辈子 追踪 光线 散射

本文主要是介绍《学一辈子光线追踪》 三 光散射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蒙特卡洛光线追踪技术系列 见 蒙特卡洛光线追踪技术

这一小节全都是文字,但是比较重要。虽然之前在

三维渲染 光能辐射基础

三维渲染 BRDF双向反射分布函数

三维渲染 相位函数

三维渲染 体照明模型

这几个章节也都很详细的描述过光学了,这里从概率的方面再进行描述。

在这一章中,我们实际上不会实现任何东西。我们将在第四章中为我们的节目设置一个大的灯光变化。

我们上一本书中的程序已经散射了表面或体积的光线。这是光与表面相互作用的常用模型。一种自然的建模方法是概率。首先,光线被吸收了吗?

光散射概率:A

光被吸收的概率:1-A

这里A代表albedo(拉丁文代表白色)。反照率在某些学科中是一个精确的技术术语,但在所有用途中,它都意味着某种形式的分数反射率。当我们在玻璃上实现时,反照率可能会随着入射方向的变化而变化,并且会随着颜色的变化而变化。在大多数基于物理的渲染器中,我们将使用一组波长作为灯光颜色,而不是RGB。我们几乎总是可以利用我们的直觉,把R、G和B看作特定的长、中、短波长。

如果光确实散射,它将具有方向性分布,我们可以将其描述为立体角上的pdf。我将其称为散射pdf:s(direction)。散射pdf也可以随着入射方向的变化而变化,这一点你会注意到,当你观察道路上的反射时,它们会变得像镜子一样。

根据这些数量,表面的颜色为:

color = INTEGRAL A * s(direction) * color(direction)

即: color = \int A *s(direction)*color(direction)

请注意,A和s() 可能取决于视图方向,因此颜色当然可以随视图方向而变化。A和s() 也可能随表面或体内的位置而变化。

如果我们应用MC基本公式,我们得到以下统计估计:

Color = (A * s(direction) * color(direction)) / p(direction)

其中p(direction) 是我们随机生成的任意方向的pdf。对于Lambertian曲面,我们已经隐式地实现了这个公式,用于p() 是余弦密度的特殊情况。

注意该球产生的光线中很明显theta角越小,产生光线的可能性更大:注意下图,同样大小的立体角中很明显接近法线的立体角里产生的光线比重更大。

Lambertian曲面的 s() 与 cos(theta) 成正比,其中 theta 是相对于曲面法线的角度。记住,所有pdf都需要积分为1。对于cos(θ)<1,我们有s(direction)=0,cos在半球上的积分是π(可以自己算算):

因此对于朗伯曲面,散射pdf为:

s(direction) = cos(theta) / Pi

如果我们使用相同的pdf进行采样,那么p(direction) =cos(theta)/Pi,分子和分母会抵消,我们得到:

Color = A * color(direction)   (我强烈认为书中是写错了,所以我在这里写的是我认为的版本,当然也可能我的书版本比较老,所以错误比较多)

这正是我们在原始 color() 函数中得到的结果!但是我们现在需要概括一下,这样我们就可以在一些重要的方向上,比如朝着灯光发射额外的光线。

上面的处理方法有点不标准,因为我希望对曲面和体使用相同的数学方法。否则会生成一些难看的代码。如果您阅读文献,您将看到双向反射分布函数(BRDF)描述的反射。它与我们的条款非常简单:

BRDF = A * s(direction) / cos(theta)

例如,对于Lambertian曲面,BRDF=A/Pi。我们的术语和BRDF之间的转换很容易。

对于参与介质(体积),我们的反照率通常称为散射反照率,我们的散射pdf通常称为相位函数。

这篇关于《学一辈子光线追踪》 三 光散射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883614

相关文章

springCloudAlibaba之链路追踪组件---skywalking

skywalking skywalking skywalking 介绍 对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:如何串联整个调用链路、快速定位问题?如何明确各个微服务之间的依赖关系?如何进行各个微服务接口的性能分析?如何跟踪整个业务流程的通用处理程序?

番外篇 | YOLOv8算法解析和实战应用:车辆检测 + 车辆追踪 + 行驶速度计算

前言:Hello大家好,我是小哥谈。YOLOv8是ultralytics公司在2023年1月10号开源的,是YOLOv5的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,在还没有开源时就收到了用户的广泛关注。它是一个SOTA模型,建立在以前YOLO版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。本文就对YOLOv8算法进行解析并以车辆检测及速度计算为案例进行

SkyWalking 全链路追踪工具-使用入门

文章目录 前言SkyWalking简介架构入门使用1、下载2、配置探针3、配置参数到需要监控的应用4、配置skyWalking5、启动skyWalking6、查看服务7、sw-web界面不显示数据 探针技术1、javaAgent介绍2、javaAgent使用 前言 随着业务越来越复杂,企业应用也进入了分布式服务的阶段,传统的日志监控等方式无法很好达到跟踪调用,排查问题等需求。

【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上

【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上 1.下载SkyWalking APM https://skywalking.apache.org/downloads/ jdk8 不支持 SkyWalking APM 9.3.0以上版本,所以这里我们下载 9.3.0版本 2.下载 Java

分析线程池的构造过程,追踪核心成员变量

分析线程池的构造过程,追踪核心成员变量 1、背景2、核心参数3、这样设计的好处 1、背景 上图是对线程池原理的一个详细的表达,它体现了线程池的几个核心概念,具体是哪些概念呢,让我们一起来探索。 2、核心参数 首先通过对Executors创建线程池的方法签名的分析,我们会发现那几种创建线程池的方法,其实都是对ThreadPoolExecutor类的进行包装,提供定制化的能力

实战 | 基于YOLOv10的车辆追踪与测速实战【附源码+步骤详解】

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识

在 Stable Diffusion 中控制光线的三种方式

光线在摄影中扮演着至关重要的角色,并对图像的整体质量和意境产生重要影响。你可以利用光线来增强主题,创造深度和立体感,传达情感,并突出重要细节。 在本文中,你将了解通过以下方法来控制光线: 光线提示词区域光线控制ControlNet img2img 软件 我们将使用 AUTOMATIC1111 的 Stable Diffusion GUI 来进行图片生成。你可以在 Google Colab、

重庆思庄技术分享——启动Oracle下最小追踪日志

启动Oracle下最小追踪日志 11g默认是关闭的: SQL> select supplemental_log_data_min from v$database; SUPPLEME -------- NO 打开方式: SQL> alter database add supplemental log data; Database altered. SQL>  select supplemental

微服务链路追踪ELK

微服务链路追踪&ELK 链路追踪概述链路追踪sluth+zipkinelk日志管理平台 一 链路追踪 1 概述 1.1 为什么需要链路追踪 ​ 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所

btrace:binder_transaction+eBPF+Golang实现通用的Android APP动态行为追踪工具

一、简介:     在进行Android恶意APP检测时,需要进行自动化的行为分析,一般至少包括行为采集和行为分析两个模块。其中,行为分析有基于规则、基于机器学习、基于深度学习甚至基于大模型的方案,各有各的优缺点,不是本文关注的重点,本文主要关注Android APP的动态行为采集。在做Android APP逆向分析时经常需要通过hook系统调用观察APP的行为,也需要一个动态行为追踪工具。