Games101学习笔记 Lecture 14: Ray Tracing 2 (Acceleration Radiometry)

Lecture 14: Ray Tracing 2 (Acceleration & Radiometry

  • 一、加速光线追踪 AABB
    • 1.均匀网格 Uniform Spatial Partitions (Grids)
      • ①前处理-构建加速网格
      • ②射线与场景相交
      • ③网格分辨率
      • ④适用情况
    • 2.空间划分
      • KD-Tree
        • ①预处理
        • ②数据结构
        • ③遍历
        • ④问题
    • 3.对象划分 & 包围盒层次结构(BVH)
      • ①步骤
      • ②数据结构
      • ③遍历
  • 二、辐射度量学
    • 1.Radiant Energy 辐射能量
    • 2.Radiant Flux 辐射(光)通量
    • 3.Radiant Intensity 辐射强度
      • 立体角求法
        • ①球面面积法
        • ②微分立体角法
    • 4. 辐照度 Irradiance
    • 5.辐射亮度 Radiance

一、加速光线追踪 AABB

1.均匀网格 Uniform Spatial Partitions (Grids)

①前处理-构建加速网格

  • 找到包围盒
  • 创建网格
  • 判断与物体表面相交的格子(图中右上角少画了一个)
    在这里插入图片描述

②射线与场景相交

  • 按照射线顺序遍历网格
  • 对每个网格单元
    • 测试与存储在该单元中所有对象相交的情况

③网格分辨率

  • 分辨率低,单元格太少 —— 没有加速效果
    在这里插入图片描述
  • 分辨率太高,单元格太多 —— 效率低
    在这里插入图片描述
  • 格子划分要适中,cells = C * objs(物体数),C ≈ 27 in 3D
    在这里插入图片描述

④适用情况

  • 在大量均匀分布的对象集合上表现良好
  • 大规模空气不适合

2.空间划分

  • Oct-Tree(八叉树)、KD-Tree(每次只砍一刀,沿轴方向划分)、BSP-Tree

KD-Tree

①预处理
  • 找到场景中所有的包围盒(AABB)
    • 找到这些包围盒的最小外包围盒,作为KD-Tree的根节点
  • 递归划分节点
    • 对每个节点选择一个轴进行划分(两种)
      • 最长轴:选择对象分布范围最大的轴
      • 中位数
②数据结构
  • 内部节点:(不存储物体)
    • 划分的轴
    • 划分的位置
    • 子结点
  • 叶节点
    • 物体的包围盒
③遍历
  • 判断射线是否与节点的包围盒相交
  • 如果是叶节点,则遍历叶节点中的对象,并测试射线与对象相交情况
  • 如果是内部节点,按顺序判断射线穿过的子节点
    在这里插入图片描述
④问题
  • 物体可能在多个格子里
  • KD-Tree构造太麻烦

3.对象划分 & 包围盒层次结构(BVH)

  • 每个物体只在一个包围盒中,包围盒可能重叠

①步骤

  • 找到包围盒
  • 递归地将包围盒分成两个
    • 最长轴:选择对象分布范围最大的轴
    • 中位数
  • 在每个叶节点存储物体
    在这里插入图片描述

②数据结构

  • 内部节点:
    • 包围盒
    • 子结点
  • 叶节点
    • 物体的包围盒
    • 物体

③遍历

  • 判断射线是否与节点的包围盒相交
  • 如果是叶节点,则遍历叶节点中的对象,返回最近的那个
  • 如果是内部节点,按顺序判断射线穿过的子节点

二、辐射度量学

1.Radiant Energy 辐射能量

  • 指电磁辐射的能量,单位为 J(焦耳)

2.Radiant Flux 辐射(光)通量

  • 单位时间内发射、反射或投射接收的能量,单位为 W(瓦特)

3.Radiant Intensity 辐射强度

  • 光源单位立体角内 发射的 功率,单位为 瓦特每球面度 (W/sr)
    在这里插入图片描述

立体角求法

①球面面积法
  • Ω = A/ r 2 r^{2} r2 ,A 是球面上被截取的面积,r 是球面半径
    在这里插入图片描述
②微分立体角法
  • dΩ = sinθ dθ dϕ,其中 θ 是极角,ϕ 是方位角
    在这里插入图片描述

4. 辐照度 Irradiance

  • 单位面积上 接收到 的辐射通量,单位为 W/ m 2 m^{2} m2(瓦特每平方米)
    在这里插入图片描述

5.辐射亮度 Radiance

  • 单位面积、单位立体角内沿特定方向传播的辐射通量,W/ m 2 m^{2} m2/sr(瓦特每平方米每球面度)
    在这里插入图片描述

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

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

相关文章

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言,具备强大的扩展性和灵活性,广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初,…

【微代码】Linux同步机制complete基本用法,以及如何封装一个内核态sleep的工具函数ksleep?

文章目录 背景基本代码和用法内核态sleep效果其他 背景 Linux提供了多种同步机制,其中complete就是一种。complete能够阻塞等待状态同步,并且等待对方释放中会调用schedule让出CPU。如果想在内核中等待一个固定时长继续执行他是一个非常不错的选择。有点…

为什么明明引入依赖了却总是爆红说不认识?

把maven中的依赖部分dependencies删掉,重新刷新一遍,再粘贴回去,重新刷新一遍就可以了

Spark SQL----分布式SQL引擎

Spark SQL----分布式SQL引擎 一、运行Thrift JDBC/ODBC服务器二、运行Spark SQL CLI2.1 Spark SQL命令行选项2.2 hiverc文件2.3 路径的说明2.4 支持的注释类型2.5 Spark SQL CLI交互式Shell命令2.6 例子 Spark SQL还可以使用JDBC/ODBC或命令行接口充当分布式查询引擎。在这种模…

mysql8一键安装脚本(linux) 拿走即用

创建一个shell文件,将下面的代码放里面去,然后放到linux服务器上运行就可以了 #!/bin/bash#---------------------* # * # 2021-10-08 * # install mysql-8 * # * #---------------------*route=/usr #包存放路径 mys…

掌握 Vue 组件通信:打造高效、灵活的前端应用

一、引言 Vue.js,作为现代前端开发的热门框架,以其组件化架构引领了开发效率与代码维护性的新标准。组件通信,作为这一架构中的关键环节,对于构建响应式、可扩展的应用至关重要。本文将探讨 Vue 组件通信的多种策略,旨…

c++习题04-忙碌的工人

目录 一,问题 二,思路 1,图形 2,分析 3,伪代码 三,代码 一,问题 二,思路 1,图形 根据题目,绘制出来的图形如下👇 之后再绘制甲经过楼梯…

【数据结构】--栈

👌个人主页: 起名字真南 🤣个人专栏:【数据结构初阶】 【C语言】 目录 1 栈1.1 栈的概念和结构1.2 栈的实现1.2.1 头文件1.2.2 初始化1.2.3 销毁1.2.4 打印所有元素1.2.5 入栈1.2.6 出栈1.2.7 获取栈顶数据1.2.8 判空1.2.9 获取元素个数 1 栈 1.1 栈的概…

spring mvc实现一个自定义Formatter请求参数格式化

使用场景 在Spring Boot应用中,Formatter接口用于自定义数据的格式化,比如将日期对象格式化为字符串,或者将字符串解析回日期对象。这在处理HTTP请求和响应时特别有用,尤其是在展示给用户或从用户接收特定格式的数据时。下面通过…

四、golang基础之defer

文章目录 一、定义二、作用三、结果四、recover错误拦截 一、定义 defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。 二、作用 释放占用的资源捕捉处理异常输出日志 三、结果 如果一个函数中有多个defer语句,它们会以LIFO…

昇思MindSpore学习入门-函数式自动微分

函数式自动微分 神经网络的训练主要使用反向传播算法,模型预测值(logits)与正确标签(label)送入损失函数(loss function)获得loss,然后进行反向传播计算,求得梯度&#…

[单机版]新天龙八部之14门派绝情谷版|Win一键端+GM工具

前言 今天给大家带来一款单机游戏的架设:新天龙八部之14门派绝情谷版一键端紫色穿刺 无字谱,金陵天外。 如今市面上的资源参差不齐,大部分的都不能运行,本人亲自测试,运行视频如下: [单机版]新天龙八部之…

数据结构-分析期末选择题考点(广义表)

莫道桑榆晚 为霞尚满天 数据结构-图期末选择题 数据结构-串、数组选择题 数据结构-排序选择题 数据结构-线性表、栈、队列、二叉树合集 契子✨ 广义表&#xff1a; <1>考点一&#xff1a;基本概念 广义表的基础概念 &#xff08;1&#xff09;什么是广义表 广义表&#…

google编码规范

7. 命名约定 — Google 开源项目风格指南

分词算法的基本原理及应用

分词算法的基本原理及应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨分词算法&#xff0c;这是自然语言处理领域中非常重要的技术之一&…

Hadoop 部署

1 准备工作 准备好集群环境 详情参考博客&#xff1a;集群初始配置。安装 Java 输入javac可查看安装提示信息。使用命令sudo apt install openjdk-8-jdk-headless安装JDK配置环境变量。使用sudo vim /etc/profile打开profile文件&#xff0c;输入以下内容&#xff0c;保存并退…

53、基于竞争层的竞争学习(matlab)

1、基于竞争层的竞争学习简介及原理 竞争学习是一种无监督学习方法&#xff0c;其中的竞争层神经元之间互相竞争以学习输入模式的表示。竞争学习的一个经典模型是竞争神经网络&#xff08;Competitive Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;其核心部分是…

Docker使用daocloud镜像加速

之前给大家分享的阿里云的镜像加速&#xff0c;今天再给大家分享一个还可以使用的镜像加速地址daocloud。 经过测试速度还是比较快的。 [rootbogon ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io"] }[rootbogon…

运营商、银行、国企等单位开发岗24届Offer薪资与福利汇总

本文介绍24届校园招聘中&#xff0c;地理信息科学&#xff08;GIS&#xff09;专业硕士研究生所得Offer的整体薪资情况、福利待遇等。 在2024届秋招与春招中&#xff0c;我累计投递了170余个单位&#xff0c;获得17个Offer&#xff1b;平均每投递10个简历才能获得1个Offer。说句…

flink-触发器Trigger和移除器Evictor

窗口原理与机制 图片链接&#xff1a;https://blog.csdn.net/qq_35590459/article/details/132177154 数据流进入算子前&#xff0c;被提交给WindowAssigner&#xff0c;决定元素被放到哪个或哪些窗口&#xff0c;同时可能会创建新窗口或者合并旧的窗口。每一个窗口都拥有一个…