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:

Games101作业补全--所有作业含提高项_第1张图片

作业1:

展示:

Games101作业补全--所有作业含提高项_第2张图片

普通要求:

Games101作业补全--所有作业含提高项_第3张图片

Games101作业补全--所有作业含提高项_第4张图片

提高项:

Games101作业补全--所有作业含提高项_第5张图片

作业2

展示:

未抗锯齿:

Games101作业补全--所有作业含提高项_第6张图片

抗锯齿:

Games101作业补全--所有作业含提高项_第7张图片

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

普通要求:

Games101作业补全--所有作业含提高项_第8张图片

提高项:

Games101作业补全--所有作业含提高项_第9张图片

作业3:

展示:

normal:

Games101作业补全--所有作业含提高项_第10张图片

BlinnPhone:

Games101作业补全--所有作业含提高项_第11张图片

texture:

Games101作业补全--所有作业含提高项_第12张图片

bump:

Games101作业补全--所有作业含提高项_第13张图片

displacement:

Games101作业补全--所有作业含提高项_第14张图片

textureBilinear:

Games101作业补全--所有作业含提高项_第15张图片

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

普通要求:

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

Games101作业补全--所有作业含提高项_第16张图片

get_projection_matrix() in main.cpp:

Games101作业补全--所有作业含提高项_第17张图片

phong_fragment_shader() in main.cpp:

Games101作业补全--所有作业含提高项_第18张图片

texture_fragment_shader() in main.cpp:

Games101作业补全--所有作业含提高项_第19张图片

bump_fragment_shader() in main.cpp:

Games101作业补全--所有作业含提高项_第20张图片

displacement_fragment_shader() in main.cpp:

Games101作业补全--所有作业含提高项_第21张图片

提高项:

Games101作业补全--所有作业含提高项_第22张图片

作业4:

展示:

未抗锯齿:

Games101作业补全--所有作业含提高项_第23张图片

抗锯齿:

Games101作业补全--所有作业含提高项_第24张图片

普通要求:

bezier:

Games101作业补全--所有作业含提高项_第25张图片

recursive_bezier:

Games101作业补全--所有作业含提高项_第26张图片

提高项:

Games101作业补全--所有作业含提高项_第27张图片

作业5:

展示:

Games101作业补全--所有作业含提高项_第28张图片

要求:

Renderer.cpp 中的Render():

Games101作业补全--所有作业含提高项_第29张图片

Triangle.hpp 中的rayTriangleIntersect():

Games101作业补全--所有作业含提高项_第30张图片

作业6:

展示:

Games101作业补全--所有作业含提高项_第31张图片

普通要求:

Render() in Renderer.cpp:

Games101作业补全--所有作业含提高项_第32张图片

Triangle::getIntersection in Triangle.hpp:

Games101作业补全--所有作业含提高项_第33张图片

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

const std::array& dirIsNeg) in the Bounds3.hpp:

Games101作业补全--所有作业含提高项_第34张图片

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

Games101作业补全--所有作业含提高项_第35张图片

提高项:

BVHBuildNode* BVHAccel::recursiveBuild(std::vectorobjects):

这里了一些简化

Games101作业补全--所有作业含提高项_第36张图片

作业7:

展示:

spp=16:

Games101作业补全--所有作业含提高项_第37张图片

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

spp=1 Without MutiThread:

Games101作业补全--所有作业含提高项_第38张图片

spp=1 With MutiThread:

Games101作业补全--所有作业含提高项_第39张图片

spp=1 With MutiThread And Microfacet:

Games101作业补全--所有作业含提高项_第40张图片

普通要求:

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

Games101作业补全--所有作业含提高项_第41张图片

提高项:

多线程加速:

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

Games101作业补全--所有作业含提高项_第42张图片

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

Microfacet:

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

Games101作业补全--所有作业含提高项_第43张图片

Games101作业补全--所有作业含提高项_第44张图片

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

作业8:

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

要求:

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

Games101作业补全--所有作业含提高项_第45张图片

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

Games101作业补全--所有作业含提高项_第46张图片

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

Games101作业补全--所有作业含提高项_第47张图片

大作业:

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

Sph 水模拟:

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

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

CSM(Cascaded Shadow Maps):

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

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

新坑:

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

你可能感兴趣的:(图形学学习笔记,3d渲染,图形学,渲染管线,图形渲染,算法)