目录
作业完整代码地址:
作业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
包含作业零、作业一、作业二、作业三、作业四、作业五、作业六、作业七、作业八、大作业
以下代码一个图截图截不完,就只粘贴关键代码,需要的可以前往文章开头的作业地址查看
以下代码一个图截图截不完,就只粘贴关键代码,需要的可以前往文章开头的作业地址查看
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:
bezier:
recursive_bezier:
Renderer.cpp 中的Render():
Triangle.hpp 中的rayTriangleIntersect():
Render() in Renderer.cpp:
Triangle::getIntersection in Triangle.hpp:
IntersectP(const Ray& ray, const Vector3f& invDir,
const std::array
getIntersection(BVHBuildNode* node, const Ray ray)in BVH.cpp:
BVHBuildNode* BVHAccel::recursiveBuild(std::vector
这里了一些简化
以下展示均限定了只允许最多弹射两次
castRay(const Ray ray, int depth)in Scene.cpp:
在linux下采用openmp,多一张图像进行按y轴分层然后每个线程渲染一层
因为我的虚拟机给了四核,大概速度提升可以看上面的图进行比较(大概3-4倍)
这里材质GGX直接用了LearnOpenGL里面的
(就只粘贴关键代码,完整代码需要的可以前往文章开头的作业地址查看)
作业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,光追降噪,毛发渲染等
写了这些作业发现自己的光追知识还是太少了,之后打算写个软光追渲染器。欢迎持续关注,哈哈哈,希望坑能填完。