首页 > 其他分享 >图形学笔记 - 5. 光线追踪2 - 加速结构

图形学笔记 - 5. 光线追踪2 - 加速结构

时间:2024-12-21 16:28:20浏览次数:6  
标签:node 遍历 对象 网格 笔记 图形学 划分 节点 追踪

目录

使用AABB加速光线追踪

Uniform Spatial Partitions (Grids) 均匀空间划分

空间划分

KD树预处理

KD-Tree数据结构

遍历kd树

对象划分 & Bounding Volume Hierarchy 层次包围盒 BVH

BVH遍历

空间划分与物体划分呢


GTC news: DLSS、RTXGI 实时光线追踪

使用AABB加速光线追踪

  • Uniform grids 均匀网格

  • Spatial partitions 空间划分

Uniform Spatial Partitions (Grids) 均匀空间划分

预处理-构建加速网格

1.找出边界盒 2.创建网格 3.将每个对象存储在重叠的单元格中

Ray-Scene相交 以射线遍历顺序步进网格 ray traversal order 对于每个网格单元 -使用存储在该单元格中的所有对象测试交叉 光栅化一条线

Grid Resolution网格解析度,栅格分辨率 单个单元:没有加速

太多单元:由于不必要的网格遍历而导致的效率低下

Heuristic启发式 #cell = C * #objs C = 27 in 3D

表现好的情况: 网格在大小和空间均匀分布的大型对象集合上工作得很好

“Teapot in a stadium”问题

空间划分

Oct-Tree:八叉树 KD-Tree: 每次分一块

KD树预处理

KD-Tree数据结构

中间节点存储

  • 划分轴:x-, y-, or z-

  • 划分位置:分割平面沿轴的坐标

  • children:指向子节点的指针

  • 内部节点中不存储任何对象 叶节点存储

  • 对象列表

遍历kd树

内部节点:分裂

缺点: KDtree 物体与包围盒相交难以判断 一个物体可能存在多个节点

对象划分 & Bounding Volume Hierarchy 层次包围盒 BVH

分成两堆三角形

  • 寻找边界盒

  • 递归地将一组对象分成两个子集

  • 重新计算子集的边界框

  • 必要时停止

  • 在每个叶节点中存储对象 确保一个物体只可能出现在一个格子

如何细分节点?

  • 选择要分割的维度

  • 启发#1:始终选择节点中最长的轴

  • 启发#2:在中值对象的位置分割节点 终止条件

  • 启发式:当节点包含少量元素时停止(如5个) BVHs的数据结构 内部(internal)节点存储

  • 包围盒

  • children指向子节点的指针 叶子节点

  • 包围盒

  • 物体的列表 节点表示场景中原语的子集

  • 子树中的所有对象

BVH遍历


Intersect(Ray ray, BVH node) {
    if(ray misses node.bbox) return;
    if(node is a leaf node){
        test intersection with all objs;
        return closest intersection;
    }
​
    hit1 = Intersect(ray, node.child1);
    hit2 = Intersect(ray, node.child2);
​
    return the closer of hit1, hit2;
}
空间划分与物体划分

空间划分

  • 将空间划分为不重叠的区域

  • 一个对象可以包含在多个区域中 物体划分

  • 将一组对象划分为不相交的子集

  • 每个集合的边界框可能在空间上重叠

标签:node,遍历,对象,网格,笔记,图形学,划分,节点,追踪
From: https://blog.csdn.net/ffffflk/article/details/144632761

相关文章

  • 移动端笔记应用,markdown应用选用
    要求不能有广告。作为使用频率较高的软件,有广告就是恶心人。支持markdown,包括且不限于代码块、标题、图片等格式。支持同步,至少拥有WebDav云同步,或者本地导入导出。全局搜索功能。以上功能必须免费,至少我不明白导入导出有什么好付费的。云同步这种付费理所当然。背景早......
  • selenium+python学习笔记-1(未完待续)
    1.使用selenium前首先需要配置好版本一致的谷歌浏览器webdriver,下载地址旧版本:https://chromedriver.storage.googleapis.com/index.html;新版本:https://googlechromelabs.github.io/chrome-for-testing/;(1)首先win+r,打开cmd,输入chromedriver--version,查看当前chomedriver版本,检......
  • 【SI152笔记】part1:方程与优化
    SI152:NumericalOptimizationLec1.OptimizationThreeelementsofanoptimizationproblem:Objective(目标),Variables(变量),Constraints(约束条件).\[\textbf{Objective}:\min_{x\in\mathbb{R}^n}f(x)\\\textbf{Variables}:x\\\textbf{Constraints}......
  • 莫比乌斯反演学习笔记
    前置知识一、整除分块即按照\(\lfloor\frac{n}{i}\rfloor\)的值域进行分块,块数$\leq\lfloor2\sqrtn\rfloor$。分$i\leq\lfloor\sqrtn\rfloor$,$i>\lfloor\sqrtn\rfloor$讨论。\(i\)所在块的右端点为$\lfloor\frac{n}{\lfloor\frac{n}{i}\rfl......
  • VINS-Mono工程笔记(八):纯视觉SFM及视觉IMU对齐
    1.视觉SFM理论及流程1)理论及流程        假设滑窗中一共有11帧,首先需要选取一个枢纽帧,利用枢纽帧和最后一帧通过对极约束求出这两帧之间的相对位姿。对枢纽帧的要求是:一方面要求枢纽帧离最后一帧尽可能远,因为离最后一帧比较近时,二者之间的平移比较小,使得三角化精度......
  • 深度学习笔记——VQ-VAE和VQ-VAE-2
    本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。文章目录AE和VAEVQ-VAE传统VAE的问题VQ-VAE与VAE的对比VQ-VAE的主要改进VQ-VAE的核心思想VQ-VAE模型结构1.编码器(Encoder)2.向量量化层(VectorQuantization......
  • 你工作中有记笔记的习惯吗?是如何记的?
    是的,我在工作中有记笔记的习惯,特别是在进行前端开发时。笔记对我来说是一个重要的工具,帮助我整理思路、记录问题和解决方案,以及跟踪项目的进度。以下是我记笔记的一些方法和习惯:选择合适的工具:我通常会使用电子笔记工具,如Notion或OneNote,因为它们方便随时查看和编辑,也支持多平......
  • 读图数据库实战笔记09性能与反模式
    1. 熵1.1. 熵是物理学上的一个术语,本质上是一个系统“内在的混乱程度”​1.2. 是我们的敌人2. 执行缓慢的遍历2.1. 和关系数据库一样,图数据库对于执行缓慢的操作并不陌生2.2. 图也有帮助诊断问题的工具2.2.1. 解释一个遍历会做什么2.2.2. 分析一个遍历做了什......
  • 《计算机组成及汇编语言原理》阅读笔记:p1-p8
    《计算机组成及汇编语言原理》学习第1天,p1-p8总结,总计8页。一、技术总结1.Intel8088microprocessor(微处理器),1979-1988。2.MS-DOSMicrosoftDiskOperatingSystem的缩写,是一个操作系统(operatingsystem)。3.Moore'sLaw&Moore'ssecondlaw(1)Moore'slawThe......
  • 笛卡尔树笔记
    笛卡尔树笔记【模板】笛卡尔树题目描述给定一个\(1\simn\)的排列\(p\),构建其笛卡尔树。即构建一棵二叉树,满足:每个节点的编号满足二叉搜索树的性质。节点\(i\)的权值为\(p_i\),每个节点的权值满足小根堆的性质。输入格式第一行一个整数\(n\)。第二行一个排列\(......