Games101作业补全--所有作业含提高项

目录

作业完整代码地址:

作业0:

作业1:

展示:

普通要求:

提高项:

作业2

展示:

未抗锯齿:

抗锯齿:

普通要求:

提高项:

作业3:

展示:

normal:

BlinnPhone:

texture:

bump:

displacement:

textureBilinear:

普通要求:

提高项:

作业4:

展示:

未抗锯齿:

抗锯齿:

普通要求:

提高项:

作业5:

展示:

要求:

作业6:

展示:

普通要求:

提高项:

作业7:

展示:

spp=16:

spp=1 Without MutiThread:

spp=1 With MutiThread:

spp=1 With MutiThread And Microfacet:

普通要求:

提高项:

多线程加速:

Microfacet:

作业8:

要求:

大作业:

新坑:


作业完整代码地址:

https://github.com/1393650770/Games101-Homework

包含作业零、作业一、作业二、作业三、作业四、作业五、作业六、作业七、作业八、大作业

作业0:

作业1:

展示:

普通要求:

提高项:

作业2

展示:

未抗锯齿:

抗锯齿:

以下代码一个图截图截不完,就只粘贴关键代码,需要的可以前往文章开头的作业地址查看

普通要求:

提高项:

作业3:

展示:

normal:

BlinnPhone:

texture:

bump:

displacement:

textureBilinear:

以下代码一个图截图截不完,就只粘贴关键代码,需要的可以前往文章开头的作业地址查看

普通要求:

rasterize_triangle(const Triangle& t) in rasterizer.cpp:

get_projection_matrix() in main.cpp:

phong_fragment_shader() in main.cpp:

texture_fragment_shader() in main.cpp:

bump_fragment_shader() in main.cpp:

displacement_fragment_shader() in main.cpp:

提高项:

作业4:

展示:

未抗锯齿:

抗锯齿:

普通要求:

bezier:

recursive_bezier:

提高项:

作业5:

展示:

要求:

Renderer.cpp 中的Render():

Triangle.hpp 中的rayTriangleIntersect():

作业6:

展示:

普通要求:

Render() in Renderer.cpp:

Triangle::getIntersection in Triangle.hpp:

IntersectP(const Ray& ray, const Vector3f& invDir,

const std::array<int, 3>& dirIsNeg) in the Bounds3.hpp:

getIntersection(BVHBuildNode* node, const Ray ray)in BVH.cpp:

提高项:

BVHBuildNode* BVHAccel::recursiveBuild(std::vector<Object*>objects):

这里了一些简化

作业7:

展示:

spp=16:

以下展示均限定了只允许最多弹射两次

spp=1 Without MutiThread:

spp=1 With MutiThread:

spp=1 With MutiThread And Microfacet:

普通要求:

castRay(const Ray ray, int depth)in Scene.cpp:

提高项:

多线程加速:

在linux下采用openmp,多一张图像进行按y轴分层然后每个线程渲染一层

因为我的虚拟机给了四核,大概速度提升可以看上面的图进行比较(大概3-4倍)

Microfacet:

这里材质GGX直接用了LearnOpenGL里面的

(就只粘贴关键代码,完整代码需要的可以前往文章开头的作业地址查看)

作业8:

作业8兴趣不大,而且有一些网址连接不上下不了库,所以这里只展示代码了。

要求:

rope.cpp 中的Rope::rope(...):

rope.cpp 中的void Rope::simulateEuler(...):

rope.cpp 中的void Rope::simulateVerlet(...) :

大作业:

鉴于大作业是开放选题,分享几个自己做了或者正在做的小玩意儿。

Sph 水模拟:

UE Niagara---SPH流体模拟_This is MX的博客-CSDN博客

这个的后续可以关注本博客,不久之后就会进行分享

CSM(Cascaded Shadow Maps):

算法复现:OpenGL-ShadowMap/PCSS/CSM_This is MX的博客-CSDN博客

后续还有兴趣的选题:SSAO,SSGI,SSR,光追降噪,毛发渲染等

新坑:

写了这些作业发现自己的光追知识还是太少了,之后打算写个软光追渲染器。欢迎持续关注,哈哈哈,希望坑能填完。

  • 26
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中 最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就 可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的 生成和光线与三角的相交。本次代码框架的工作流程为: 1. 从 main 函数开始。我们定义场景的参数,添加物体(球体或三角形)到场景 中,并设置其材质,然后将光源添加到场景中。 2. 调用 Render(scene) 函数。在遍历所有像素的循环里,生成对应的光线并将 返回的颜色保存在帧缓冲区(framebuffer)中。在渲染过程结束后,帧缓冲 区中的信息将被保存为图像。 3. 在生成像素对应的光线后,我们调用 CastRay 函数,该函数调用 trace 来 查询光线与场景中最近的对象的交点。 4. 然后,我们在此交点执行着色。我们设置了三种不同的着色情况,并且已经 为你提供了代码。 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 castRay() 来得到颜色,最后将颜色存储在帧缓冲区的相 应像素中。 • Triangle.hpp 中的 rayTriangleIntersect(): v0, v1, v2 是三角形的三个 顶点, orig 是光线的起点, dir 是光线单位化的方向向量。 tnear, u, v 是你需 要使用我们课上推导的 Moller-Trumbore 算法来更新的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值