3d渲染-光线追踪-包围盒

author author     2023-05-12     223

关键词:

参考技术A

上节通过光栅化和光线追踪的对比,引入光线追踪。

在光栅化中,其实就是构建网格,然后在像素网格中放入物体。对于每个物体,通常会观察该物体所覆盖的每个像素。

在光线追踪中,则颠倒此循环过程,首先确定每个像素,然后去查看每个物体,判断物体能否覆盖相应像素。换言之,将相机(起点)与一个像素点连线,发出射线,然后观察每个物体被光源照亮情况,将每个交点的着色值加权和写入像素值。

解释了Whitted-Style Ray Tracing的原理,并讲解了如何进行光线和场景中物体求交问题。

之前每一个像素都需要与场景中所有三角形求交。
即:algorithm = pixels ✖️ traingles
可以向想象:一个成像平面上有很多个像素,一个场景中由很多三角形构成。每一个像素都要与场景中全部三角形求交,非常慢。

使用包围盒进行加速。

一般使用的包围盒是长方体。
对长方体的理解:由三个不同的对面形成的交集。如下图

使用包围盒计算更方便。使用轴对齐包围盒,计算更方便。如下图:

先以2D的为例。
1、光线先与x轴上两对面,求交点。
2、光线再与y轴上两对面,求交点。
3、将1和2求交集,即光线在2D包围盒里的区域。
如下图:

扩展到3D:
1、当光线进入了全部的对面时,则光线进入包围盒。
2、当光线只要离开任意一个对面时,则光线离开包围盒。
即:T enter = max t min T exit = min t max
当T enter < T exit 时,说明光线在包围盒内一段时间。

由于光线是一条射线。
当 T exit < 0 时,说明光线在包围盒的背后,不会有交点。
当 T enter < 0 且 T exit > 0 时,说明光线在包围盒里,有交点。
总结:光线与包围盒(AABB)有交点,当且仅当 T enter < T exit && T exit > 0

光线追踪、光线投射、光线行进和路径追踪有啥区别?

...据我所知,标题中提到的所有技术都是看起来非常相似的渲染算法。所有基于光线的技术似乎都围绕着通过图像的每个像素投射光 查看详情

raytracinginoneweekend超详解光线追踪1-10(代码片段)

...p;《RayTracinginOneWeekend》完结篇最近课程上机实验,封面图渲染时间也超长,所以写东西就落下了,见谅这篇之后,我会继续《RayTracingTheNextWeek》,还请多多关注 这几天我在渲染这本书的封面图,封面图还没出,不算结束,刚... 查看详情

ogre3d 集成(快速但非实时)光线追踪

】ogre3d集成(快速但非实时)光线追踪【英文标题】:ogre3dintegrate(fastbutnotrealtime)raytracing【发布时间】:2013-03-0108:28:19【问题描述】:我在实时应用程序(C++)中使用Ogre3D。应用程序必须在尽可能多的平台上运行:没有强大显卡的... 查看详情

dxr实时光线追踪技术概览

...久以来“光栅化(rasterization)”一直统治着实时渲染领域,其实并不是说这种渲染方式有多么的好,主要是因为它更便于实现硬件加速。光栅化渲染的基本算法很简单,但是要想达到好的渲染效果,就需... 查看详情

减少光线追踪时的计算

】减少光线追踪时的计算【英文标题】:ReducecalculationswhileRaytracing【发布时间】:2017-08-1807:45:11【问题描述】:我已经编写了自己的3D游戏引擎(我花了一年时间),我想创建一个在我的CPU(而不是GPU)上运行的光线追踪器!目... 查看详情

3d计算机图形学的目录

...积101.3.4法向量和点积111.3.5与法向量反射相关的向量121.4光线和计算机图形学131.4.1光线几何—相交141.4.2相交—光线与球141.4.3相交—光线与凸多边形151.4.4相交—光线与包围盒161.4.5相交—光线与二次形181.4.6光线跟踪几何—反射和... 查看详情

光线追踪框相交

...以我又带着另一个光线追踪问题回来了。我的代码将球体渲染得很好,很漂亮,但立方体并没有真正起作用。我正在使用此代码来测试交叉点:http://pastebin.com/qgm6vpdx(这是一个递归函数,t是到交叉点的距离)边界框定义为:Cube... 查看详情

整合多个光线追踪样本

...2014-05-2616:54:43【问题描述】:假设我正在使用raymarching来渲染场函数。(这是在CPU上,而不是在GPU上。)我有一个类似这样粗略编写的伪代码的算法:pixelColour=arbitrary;pixelTransmittance=1.0;t=0;while(t<max_view_ 查看详情

如何正确处理光线追踪中的折射

...器的代码源可以找到onGithub编辑:代码迁移toGitlab。这是渲染的图像:右侧球体的折射率设置为1.5(玻璃)。在折射之上,我想处理一个定义为这样的“透明度 查看详情

光线追踪(raytracing)算法理论与实践入门(代码片段)

...要本文先介绍光线追踪的理论,然后着重一步一步来搭建渲染场景,从最基本的向量类开始.采用的语言是c++,利用面向对象的思想,一些基础的线性代数和空间几何的知识也会用到,编程的框架用的是GLFW,渲染用到的是... 查看详情

为啥我们使用 CPU 而不是 GPU 进行光线追踪?

...线追踪的信息。我遇到了关于Pixar以及他们如何在CPU上预渲染Cars2的文章。这需要他们每帧11.5小时 查看详情

显卡光线追踪是什么?怎么判断性能高低?

...“光线追踪”这个词。简单来说,这是一种在场景中渲染光线和阴影的先进而逼真的方法,在三维图形工作中早已经运用,也常用于电影后期特效,CG动画制作。由于光线跟踪是通过模拟和跟踪光源产生的每一束... 查看详情

games202笔记-实时光线追踪

...噪方法对RTRT降噪不可能。G-bufferG-buffer:几何缓冲区:在渲染的过程中获得的免费的屏幕空间信息,比如逐像素深度、法线、世界坐标、直接光照结果、反照率kd等等。是屏幕空间的信息。也可以都各自保存进gbuffer中,方便后续... 查看详情

在光线追踪中为对象着色

...【发布时间】:2018-10-3107:50:55【问题描述】:我正在尝试渲染屏幕。到目前为止,我已经将我的光线与场景中的对象相交,如果有交叉点,我会为该交叉点设置一个随机颜色。接下来我需要根据像素值对像素进行着色。我看过10... 查看详情

没有递归光线追踪就不可能实现反射和折射?

...:我正在使用GLSL计算着色器编写基于GPU的实时光线追踪渲染器。到目前为止,它工作得非常好,但是当涉及同时具有反射和折射时,我偶然发现了一个看似无法解决的问题。我的逻辑告诉我,为了在物体(例如玻璃)上 查看详情

全局光照:光线追踪路径追踪与gi技术进化编年史

...照,又考虑经过场景中其他物体反射后的间接光照的一种渲染技术。大家常听到的光线追踪,路径追踪等同样很酷的概念,都是全局光照中人气较高的算法流派。 而这篇文章将围绕全局光照技术,介绍的要点有: 全局光... 查看详情

鲁大师光线追踪测试上线:你的显卡可以给“光追”跑分了!

...戏领域能预见的最重要的图形升级之一,代表着图形渲染技术的巅峰。RTX20系列显卡在Turing图灵架构的GPU内加入了“实时光线追踪”功能,将光追正式铺开到市场中。NVIDIA光线追踪技术发展了两代产品,AMDRX6000系列也... 查看详情

从鼠标位置和深度图计算 3D 点

...【发布时间】:2017-10-2214:34:24【问题描述】:我需要使用渲染的深度图从屏幕空间位置计算3D坐标。不幸的是,使用常规光线追踪对我来说不是一个选项,因为我正在处理包含大约5M面的单个几何体。所以我想我会做以下事情:... 查看详情