GAMES101
文章平均质量分 76
玖er悠
这个作者很懒,什么都没留下…
展开
-
GAMES101——作业7 路径追踪 (含提高:多线程,微平面理论)
是法线分布函数,它解释了在观看者角度反射光的微平面的比例。需要注意的一点是,如果纯按照这里的伪代码来写,最后的结果光源的位置是纯黑的,需要再加一段判断射线是否击中光源的代码。以长方体和正方体的场景为例,设置spp为1,不采用多线程时,消耗了14秒的时间,当采用多线程时(这里采用24线程),所消耗的时间仅为3秒。:是菲涅尔函数,它解释了菲涅耳效应,该效应使得与表面成较高的入射角的光线会以更高的镜面反射率进行反射。菲涅尔函数的精确计算与近似,这里直接采用了作业框架自带的函数来求精确的菲涅尔函数的值。原创 2024-08-19 21:36:26 · 1268 阅读 · 0 评论 -
微平面理论cook-torrance BRDF的推导
写完发现自己的字怎么这么丑。原创 2024-08-18 22:21:35 · 380 阅读 · 0 评论 -
GAMES101——作业6 光线追踪加速(含提高:SAH方法)
实现原理是课上讲的方法,对每一个轴都计算一次tmin和tmax,tmin是光线进入包围盒某一个轴的时间,tmax是光线离开包围盒某一个轴的时间,计算完三个轴的时间后,对t_enter是max{tmin},t_exit是min(tmax),只有当t_enter<t_exit并且t_exit >=0时才算光线经过包围盒。可以很明显的看到,使用SAH方法构建树的时间开销很大,但是使用其划分出来的BVH树加速光线追踪会比默认的快,但是由于作业中给的场景不复杂,因此光线追踪所消耗的时间变化不太能感觉出来。原创 2024-08-18 16:40:45 · 756 阅读 · 0 评论 -
GAMES101——作业5 光线与三角形相交(菲涅尔反射率)
和相机的距离可以通过视角的大小的一半的正切值求出。像素坐标左上角为(0,0),范围是x∈[0,1],y∈[0,1],而图像坐标原点则为正中心,先转化成NDC坐标,坐标范围是x∈[-1,1],y∈[-1,1],再通过宽高比计算出图像的坐标,x∈[-width/2,width/2],y∈[-height/2,height/2],因此我们先计算出像素中心点的图像坐标。在这里我们要做的就是将像素的位置变换成像素在空间的坐标,然后根据像素在空间的坐标和相机的坐标,得到该像素对应的光线,从而实现光线追踪。原创 2024-08-17 16:54:26 · 1412 阅读 · 0 评论 -
GAMES101——作业4 Bézier 曲线(含提高:反走样)
这里考虑周围的3*3空间,每个像素点的中心点到该点的距离。可以很容易得出,最大距离为3√3/2,最短距离为0,因此可以按照这个比例,求出每个像素点到该点的距离后,再根据距离计算颜色的权重。(因为有一些像素会被重复计算,因此为了实现反走样,新的像素颜色要和老的像素颜色比较,取最大值。recursive_bezier:该函数使用一个控制点序列和一个浮点数。本次的任务相比上一次简单。最后,将返回的点绘制在 OpenCV。的范围内进行迭代,并在每次迭代中使 t。,然后该函数将返回在。曲线上对应点的坐标。原创 2024-08-16 15:13:59 · 405 阅读 · 0 评论 -
GAMES101——作业3 Pipeline and Shading(含提高:双线性插值、导入其他模型)
这里的N是三角形的法线,永远向上,T是切线,B是N叉乘T得到的副切线。比如当法向量N的x,y,z坐标都是正数时,算出来的切向量T的x,y,z也都是正的,和法向量不垂直。切向量T和副切向量B不仅仅只和法向量N有关,还和uv有关,如果只和N有关的话,那么切向量其实我们可以指定任意方向,这样算出来的结果法向量重新映射回坐标系就有无数种可能。修改main函数中对应的路径即可。根据相对高度的变化求导,得到法向量方向,将其归一化得到在TBN坐标下的方向,在根据上面的TBN矩阵,将其映射回原坐标就能得到最终结果。原创 2024-08-15 18:30:15 · 1303 阅读 · 0 评论 -
GAMES101——作业2 Triangles and Z-buffering(含提高:SSAA)
解决方法:在Rasterizer.h里根据原先定义好的frame_buffer和depth_buffer,自己定义一个四倍大小的SSAA_frame_buffer和SSAA_depth_buffer,对三角形光栅化的时候不对frame_buffer,全都采用SSA_frame_buffer和SSAA_depth_buffer,等到要马上要输出图像的时候,再将SSAA_frame_buffer里的像素分组求平均再赋给frame_buffer输出。将加工后的顶点组装成三角形,用于下一步的光栅化。原创 2024-08-14 21:28:37 · 1010 阅读 · 0 评论 -
GAMES101——作业1 旋转与投影(含提高:罗德里格斯旋转公式)
zNear是近平面到摄像机的距离,已知视角,可以根据正切函数求出一半的高度,最后乘2就可以得到近平面的高度,根据宽高比,求出近平面的宽度。再根据推导出的矩阵,代入数据即可求得所需的结果。所有的和数学有关的推导,这里不再说明,基本直接套用结果,不清楚可以重新看一遍games101的课程对应的知识。之后的文章亦是如此。修改后的模型矩阵函数,这里绕着指定的轴(0.5000,0.2000,0.8426)旋转。绕x,y,z轴的变换矩阵如下,算出两个三角函数值后直接代入即可。轴旋转的变换矩阵,而不用处理平移与缩放。原创 2024-08-13 23:48:47 · 540 阅读 · 0 评论