- 博客(11)
- 收藏
- 关注
原创 Ray Tracing In A weekend
Ray Tracing In A weekend说明:本文是对学习完 Ray Tracing In A weekend之后的一个简单总结与分享同时感谢牛仔学长(Cowboy)对本文提出的宝贵建议。废话:其实在学习Ray Tracing In A weekend之前,学习了一段时间的OpenGL,相比之下,我还是觉得Ray Tracing In A weekend要来的有意思多了。源代码: 代码代码放在了github上,需要自取,当然就我自己看来代码质量堪忧www同时这个代码有一点小问题,最后
2022-05-18 20:26:10
189
原创 使用PPM学习RayTracingInAWeekend
使用PPM学习Ray Tracing In a Weekend写在前面其实只是想要水一篇,但是也有一点用,这就作为学习ray tracing in a weekend 的开头吧正文ppm是一种图片文件格式,比较有意思的点在于可以直接通过指定rgb数组来让它输出想要的格式Ray Tracing In a Weekend中使用的就是这样的一种格式,同时使用这样的图片格式让我们跳过了学习OpenGL的繁琐过程,可以专注于实现图形学的算法。(顺带一提OpenGL学起来真的不太友好)本文要讨论的问题和解决
2022-04-23 11:28:07
353
1
原创 games101(渲染管线-光栅化-三角形光栅化)
三角形光栅化是十分基本的光栅化方法,而在几何中三角形也是十分重要且基础的图形。三角形有如下的好的性质,首先它是最基本的多边形,且其他的多边形都可以拆成三角形。同时一个三角形一定是一个平面,边界清晰,同时使用重心坐标进行插值也很方便。对于三角形光栅化来说,重点在于三角形的边界,内部的点处理起来相对于边界会简单很多。现在问题转换成了如何判断像素的中心点是否在三角形内。通过叉乘可以判断q点在不在三角形内P1P2(向量)×P1Q(向量)可以判断Q在p1p2的左侧还是右侧.
2022-03-01 09:43:35
418
原创 games101(渲染管线,光栅化-光栅化-直线光栅化&三角形光栅化再琢磨一下)
这是渲染管线中vertex-processing的下一步,主要包含两个部分,第一个部分是enumerate,第二个部分是interpolate,当然这只是截取了虎书中对于这个两个步骤的描述中的两个词来代表它们。"For each primitive that comes in,the rasterizer has tow jobs:it enumerates the pixels that are covered by the primitive andit interpolates valuse.
2022-02-26 22:01:54
693
原创 games101(渲染管线,光栅化-vertex processing)
vertex-processing是渲染管线中rasterization中前面的一步。在这一步中我们主要是将输入的三维的左边转化为我们所需要的屏幕的坐标。我们在之前的视角变换中提到了两种投影,一种是正交投影,另外一种是透视投影,我们在本篇和之后的内容中都探讨的是透视投影。一开始物体的坐标是通过三维空间中的坐标表示出来的,...
2022-02-23 16:27:34
3504
原创 games101(渲染管线,光栅化-总览)
渲染管线(graphics pipeline )是按照物体的顺序渲染(object-order graphics)的重要部分,和光线追踪不同的思路不同。在对于渲染管线的整体表述方面,我认为虎书的表述相较于games101的表述更为清楚。虎书中这样定义渲染管线和光栅化:找到图片中所有被...
2022-02-22 20:21:05
1300
原创 光线追踪(whitted-style)2-加速结构的加速结构(笑)
1中我们最后提到了对显示几何形体和光线求交的加速结构:bounding box接下来我们将谈到关于该加速结构的加速结构这是在bounding box之后但是在光线追踪之前的一步将bounding box划分成多个相同的小格子(前提假设是判断光线是否和格子相交要比判断光线是否和物体相交简单)同时每个格子中都存贮着该格子是否和当光线穿过一个格子时,先判定是否与格子相交如果相交,再判断该格子内是否有物体,如果有物体,说明光线有可能和物体相交接着对光线和物体求交,得到结果通.
2022-02-19 20:21:23
312
原创 光线追踪1(whitted-style)
按照why-what-how的组织结构来整理这一部分。首先,为什么在有了光栅化的情况下还要研究光线追踪?有以下几点原因:1.光栅化不能很好的解决全局光照的效果问题,包括软阴影以及光线多次弹射的情况,光栅化解决的只有光源直接照射和第一次弹射的情况2.光栅化虽然快但是质量不够高当然,与光栅化相对的,光线追踪虽然效果很好但是计算很慢,需要大量的时间,哪怕是现在的实时光线追踪实际上帧数也不是很高。由于这样的特性,光线追踪一般是离线运用,例如电影中。在我们whitted-style的光线追踪中
2022-02-19 20:07:14
1624
原创 games101笔记整理(视角变换2)
这部分是关于透视投影的。透视投影的做法是建立在正交投影的基础之上的。我们将透视投影先转换为正交投影,接着运用正交投影的结论即可完成投影过程。在开始讨论视角透视投影之前,有一点需要补充的。我们在之前的变换中提到,用齐次式表示的向量的最后一个数是0,而点的最后一个数是1,对于最后一个数不为1的点(x,y,z,w)(w!=1),我们认为这个点与(x/w,y/w,z/w,1)是等效的。如同我们一开始就提到的那个想法,我们希望能够将透视投影转换为正交投影左边的Frustum是我们初始.
2022-02-16 11:01:04
252
原创 games101笔记整理(视角变换1)
在上一部分(变换)中,关于3维空间中的物体位置的变换我们已经了解了。一般而言,我们拥有的数据是空间中的物体的数据,而我们要做的是将三维的物体展示在一个二维的平面上,在这个过程中,我们如何在平面上表现出三维的效果,是我们要在接下来的内容中解决的。让我们考虑一下我们在生活中使用的相机,它的功能刚好就和我们所需要的相同。对于拍摄一张招牌你,我们将相机拍摄照片的过程拆成三块,首先是相机的放置,接着是我们要拍摄的物体(或者人)的位置,接最后是相机如何成像。或者我们按照如图的...
2022-02-15 20:57:03
452
1
原创 games101笔记整理(变换)
在平面上表示图形,或者说图形的边界,我们使用的是点。那么如果我们想要对一个图形进行变换,实际上我们就可以对点进行变换。在空间中同样如此。我们知道,平面中的一个点可以用一组由两个数组成的坐标来表示,而三维空间中的坐标则是用三个分别代表x,y,z的数构成的一个坐标来表示。我们可以简单的用一个列向量来表达一个点的坐标,区别只在于列向量的行数的多少。同时我们可以从上述的第一段中得到这样一个结论,事实上我们只需要对点进行变换就能够对图形进行变换,那么在点由向量表示的情况下,我们只需要对向量进行...
2022-02-13 19:34:46
309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人