Games101 Final Project 效果图 1024spp: Specular + Glass(0.08 roughness) + Sliver(0.4 roughness) 1024spp: Specular + Glass(0.28 roughness) 1024spp: Diffuse + Glass(0.08 roughness) 不得不说,这镜面和透明材质一但引入,噪声就会变得非常大,本质上还是 2023-09-30 Games101
Games202 Hw5 JBF and SVGF 最终效果图 为了降低图片存储空间,只能控制一下FPS以及分辨率了,看起来像ppt别介意👀。 这是降噪前的截图 Pinkroom-SVGF Pinkroom-JBF-Atrous 作业要求总览 实现单帧降噪。 实现两帧间的投影。 实现两帧间的累积。 Bouns 1:实现A-Trous Wavelet加速单帧降噪。 个人扩展部分:Spatiotemp 2023-07-21 Games202
Games202 Hw4 IBL and Kulla Conty 最终效果图 每组下面一排球是没用Kulla Conty的对照组,所有球的金属度都为1,粗糙度最小0.05,最大0.95,可以明显看到对照组随着粗糙度增大,会越来越暗,而使用了Kulla Conty的实验组,亮度不会随着粗糙度的增加而衰减,为了使现象更明显这里吧HDR tonemapping功能禁用了! 下面是金材质的Kulla-Conty Approximation效果: 作业总览 2023-07-01 Games202
Games202 Hw3 Screen Space Ray Tracing 效果图 由于测试时我电脑的GPU是办公本的核显(GPU AMD Radeon(TM) 530),帧率很低,我就在比较简单的环境(cube1)下比较它们的纯镜面反射差异。 World Space SSR Efficient GPU SSR Hierarchical-Z SSR 可以看到Hierarchical-Z SSR的帧率最高,是World Space SSR帧率的4倍, 2023-06-10 Games202
Games202 Hw2 Precomputed Radiance Transfer 效果图 GI是两次Bounce的效果,DI是直接光照的效果。 作业总览 预计算环境光照。 预计算Diffuse Unshadowed LT(本文不讲)。 预计算Diffuse Shadowed LT。 使用预计算的数据。 Bonus 1:正确实现预计算Diffuse Inter-reflection。 Bonus 2:正确实现SH旋转(未实现)。 2023-05-29 Games202
Games202 Hw1 Percentage Closer Soft Shadow 效果图 光源大小:10 光源大小:50 光源大小:100 作业总览 实现Shadow Map。 实现Percentage Closer Filtering。 实现Percentage Closer Soft Shadow。 实现多光源和动态物体。(Bonus) 源码 GAMES202 实现 Shadow Map 我们知道在进行物体的光照渲染时,Visi 2023-05-15 Games202
C++11通用观察者模式 C++11通用观察者模式 观察者模式是用来解决观察者和被观察者紧耦合的问题,我们需要实现一个观察者管理类,来避免耦合。但同时引入了新问题。管理类在注册以及移除观察者时,在多线程下是不安全的,所以我们需要用mutex来保证管理类是线程安全的。 另外观察者管理类只负责广播注册过的观察者,它不对观察者的生命周期负责,如果观察者已经被销毁,管理类还继续调用该观察者的接口,core dump就是迟早的事 2022-03-23 C++
C++11单例模式 c++11的三种单例模式 饿汉模式:在程序进入main函数之前就创建出了对象,不存在多线程的竞态关系,内存需要手动释放。优点是比较简单,容易实现,缺点是不能传入参数,占内存,不管用不用都创建出该对象。 懒汉模式:在程序需要的时候才会创建出对象,存在多线程竞态关系,需要用C++11中std::call_once和std::once_flag来避免竞态关系,内存需要手动释放。优点是不浪费内存,可以 2022-03-22 C++
C++11-ThreadPool c++11实现线程池 包含了以下技术:std::mutex,std::condition_variable,std::function,std::bind,可变参模板,std::packaged_task,std::future,lambda表达式,std::shared_ptr,decltype,auto等。 原理全在注释中。 实现 123456789101112131415161718 2022-03-21 C++
C++简易版shared_ptr C++简易版shared_ptr 实现了shared_ptr的计数器,普通构造,拷贝构造,移动构造,析构,拷贝赋值运算符,移动赋值运算符,*运算符,->运算符,reset函数。 smartPtr 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525 2022-03-20 C++