现代计算机图形学Games101入门笔记(十五)

蒙特卡洛积分

为什么用蒙特卡洛积分,用来做什么?跟黎曼积分区别,黎曼积分是平均分成n等分,取每个小块中间的值取计算每个小块面积,再将n份集合加起来。蒙特卡洛积分就是随机取样,假设随机取样点xi,对应的f(x)就是长方形的高,宽就是b-a。那长方形面积就是f(x)*(b-a)。那重复多次取平均,就可以估算这块区域的面积。

假设ab之间均匀采样,那p(x)的值都是1/(b-a)

n越大,结果越准。

Whitted-Style Ray Tracing 是完全反射的,不能解决Glossy reflection

漫反射会均匀把光反射到不同方向上去。如果直接光照,灯往下打,那天花板肯定是黑的。光会反射很多次。

Whitted-Style Ray Tracing是错的,但是渲染公式是对的,需要要解决2个问题

换句话说它一个积分,我们要计算左半球方向的积分,那就是在不同方向采样,随机选一个方向,那就是随机变量。其实就是均匀的对半球采样。

全局光照

n等于多少,才不会爆炸? n=1,n的多少次方还是1.

简化 n=1,用蒙特卡洛积分就叫路径追踪。n要是不等于1,也有说法,叫分布式光线追踪。

穿过一个像素,可以有很多不同的光线,对这些路径求平均就是他们的radiance,是不是有足够多的path就可以保证准确了。这叫path,就是一个方向打入只会向一个方向打出,随机选一个方向,不再一下产生一束。最终会形成,一条从视点到光源的路径。

这样就可以 把Ray Generation和着色联系在一起

光追算法永远不会停的问题

真实的世界光线弹射次数也不会停

限制次数会损失能量。真实的就是无数次,但是计算机里没有办法模拟无数次,死循环了。怎么办?引入俄罗斯轮盘赌

通过概率考虑停止光线弹射次数。这里先确定一定概率

这里是不是弹射光线如果有P_RR的概率生成下来,那就能算出来,会弹射多少次停下来,就是求N次数。

打的光线取样越少,noisy越高。能表现,但不高效。

在不同情况下,能不能打到光线,是看运气的,光源越小越难打到。不高效!

在像素上采样改成换成在光源上采样。渲染方程需要写成光源上的渲染方程。

光的计算就拆成光源计算光源直接光采样计算,和间接光采样计算带俄罗斯轮盘赌概率算法计算。

以前说光追就是Whitted-style ray tracing 现在是所有光线传播方法的大集合。

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

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

相关文章

软件架构之-论高并发下的可用性技术

论高并发下的可用性技术 摘要正文摘要 ;2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船审图机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与了项目建设工作,并担任系统架…

Q-learning 算法学习

Q-learning是一种经典的无模型、基于价值的算法,它通过迭代更新状态-动作对的Q值,最终找到最优策略。 一 Q-learning的核心思想 1.1目标 学习一个状态-动作价值函数 ,表示在状态 s 下执行动作 a 并遵循最优策略后的最大累积奖励。 的核心…

鸿蒙生态崛起:开发者机遇与挑战并存

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 一、何为鸿蒙生态? 二、在鸿蒙生态下开发时遇到的挑战 三、对于鸿蒙生态未…

TCP/IP-——C++编程详解

1. TCP/IP 编程基本概念 TCP(传输控制协议):面向连接、可靠的传输层协议,保证数据顺序和完整性。IP(网际协议):负责将数据包路由到目标地址。Socket(套接字)&#xff1a…

Python图像处理基础(三)

Python图像处理基础(三) 文章目录 Python图像处理基础(三)2、计算机色彩(Computer Color)2.5 色彩分辨率2.6 灰度颜色模型2.7 CMYK 颜色模型2.7.1 K 部分2.8 HSL/HSB 颜色模型2、计算机色彩(Computer Color) 2.5 色彩分辨率 人眼可以看到许多不同的颜色,但我们的感知…

Vue路由深度解析:Vue Router与导航守卫

Vue路由深度解析:Vue Router与导航守卫 一、Vue Router基础与安装配置 1. Vue Router核心概念 Vue Router是Vue.js官方的路由管理器,主要功能包括: 嵌套路由映射模块化的路由配置路由参数、查询、通配符细粒度的导航控制自动激活的CSS类链…

前后端分离微服务架构

前后端分离微服务架构 介绍: 前端通过Vue和ElementUI构建界面,使用axios调用后端API。Nginx作为反向代理,将请求路由到Zuul网关。Zuul进行权限验证(JWT)后,将请求分发到微服务。(身份验证,安全防护(sql注入,xxs跨网站…

iOS 工厂模式

iOS 工厂模式 文章目录 iOS 工厂模式前言工厂模式简单工厂案例场景分析苹果类优点缺点 小结 工厂模式客户端调用**优点****缺点** 抽象工厂模式三个模式对比 前言 笔者之前学习了有关于设计模式的六大原则,之前简单了解过这个工厂模式,今天主要是重新学习一下这个模式,正式系统…

【机器学习】工具入门:飞牛启动Dify Ollama Deepseek

很久没有更新文章了,最近正好需要研究一些机器学习的东西,打算研究一下 difyOllama 以下是基于FN 的dify本地化部署,当然这也可能是全网唯一的飞牛部署dify手册 部署 官方手册:https://docs.dify.ai/en/getting-started/install-self-hos…

安卓A15系统实现修改锁屏界面默认壁纸功能

最近遇到一个A15系统项目,客户要求修改锁屏界面的默认壁纸,客户提供了一张壁纸图片,但是从A15系统的源代码查看时才知道谷歌已经去掉了相关的代码,已经不支持了,A13和A14系统好像是支持的,A15系统的Wallpap…

从理论到实战:模糊逻辑算法的深度解析与应用实践

从理论到实战:模糊逻辑算法的深度解析与应用实践 一、模糊逻辑的核心概念与数学基础 模糊逻辑(Fuzzy Logic)是一种处理不确定性的数学工具,其核心思想是将传统布尔逻辑的“非黑即白”扩展为连续的隶属度函数。例如,在…

正向代理与反向代理区别及应用

正向代理和反向代理是两种常见的代理服务器类型,它们在网络架构中扮演不同角色,核心区别在于代理对象和使用场景。 1. 正向代理(Forward Proxy) 定义:正向代理是客户端(如浏览器)主动配置的代理…

OpenCV CUDA模块中逐元素操作------逻辑运算

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 比较、AND、OR、NOT等。这类操作可用于创建基于条件的掩码,这对于图像分割或特征选择非常有用。 主要函数 1. 按位与 (cv::cuda::b…

一台入网的电脑有6要素, 机器名,mac,ip,俺码,网关,dns,分别有什么作用

一台入网的电脑需要配置的 六大网络要素(机器名、MAC地址、IP地址、子网掩码、网关、DNS)各自承担不同的关键作用,共同确保设备能正确通信和访问网络资源。以下是它们的详细功能解析: 1. 机器名(主机名) 作…

MySQL之储存引擎和视图

一、储存引擎 基本介绍: 1、MySQL的表类型由储存引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…

【Spring Boot后端组件】mybatis-plus使用

文章目录 mybatis-plus使用一、依赖引入二、添加相关配置项三、功能详解1.自增主键2.逻辑删除3.操作时间自动填充4.其他字段自动填充5.分页查询6.自定义动态查询7.代码生成器8.代码生成器(自定义模板) mybatis-plus使用 一、依赖引入 pom.xml文件 <?xml version"1.…

docker compose 启动指定的 service

使用 Docker Compose 启动指定服务 要在 Docker Compose 中启动特定的服务而不是所有服务&#xff0c;可以使用以下命令&#xff1a; docker compose up [服务名] 基本用法 启动单个服务&#xff1a; docker compose up service_name 启动多个指定服务&#xff1a; docker …

wordcount程序

### 在 IntelliJ IDEA 中编写和运行 Spark WordCount 程序 要使用 IntelliJ IDEA 编写并运行 Spark 的 WordCount 程序&#xff0c;需按照以下流程逐步完成环境配置、代码编写以及任务提交。 --- #### 1. **安装与配置 IntelliJ IDEA** 确保已正确安装 IntelliJ IDEA&#x…

SmartETL函数式组件的设计与应用

SmartETL框架主要采用了面向对象的设计思想&#xff0c;将ETL过程中的处理逻辑抽象为Loader和Processor&#xff08;对应loader模块和iterator模块&#xff09;&#xff0c;所有流程组件需要继承或实现DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…

鸿蒙AI开发:10-多模态大模型与原子化服务的集成

鸿蒙AI开发&#xff1a;10-多模态大模型与原子化服务的集成 在鸿蒙生态中&#xff0c;多模态大模型与原子化服务的集成是一个重要课题。本文将介绍如何在鸿蒙平台上进行多模态大模型与原子化服务的集成&#xff0c;以及相关的技术细节和实际案例。 鸿蒙AI开发概述 什么是鸿蒙AI…