GAMES102 Lecture 17 Materials and Appearances
这里回顾GAMES101 Lecture 17,材质与外观。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容
什么是计算机图形学中的材质?
材质就是BRDF;
什么是材质Diffuse / Lambertian material光在每个输出方向均等地反射:
假设入射光是均匀的,根据能量守恒(假设不吸收能量),入射光和出射光的Irradiance相同:
\begin{aligned}
L_o\left(\omega_o\right)&=\int_{\Omega^{+}} L_i\left(\omega_i\right) f_r\left(\omega_i, \omega_o\right)\left(n \ ...
GAMES102 Lecture 16 Ray Tracing 4
这里回顾GAMES101 Lecture 16,蒙特卡洛积分与路径追踪。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容
简要回顾
蒙特卡洛积分
路径追踪
蒙特卡洛积分蒙特卡洛法是求解定积分的一种方法,即对于定积分:
\int_a^b f(x) d x考虑随机变量:
X_i \sim g(x)那么有蒙特卡洛估计器:
F_N=\frac{1}{N} \sum_{i=1}^N \frac{f\left(X_i\right)}{g\left(X_i\right)}我们来计算$F_N$的数学期望:
\begin{aligned}
E[F_N]&=\frac 1 N \sum_{i=1}^N E\left[ \f ...
GAMES102 Lecture 15 Ray Tracing 3
这里回顾GAMES101 Lecture 15,这一讲介绍了光线追踪和全局光照。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容
辐射度量学
光线传输
反射方程
渲染方程
全局光照
概念回顾
Radiant energy
$Q[\mathrm{J}=\mathrm {Joule}]$
在计算机图形学中几乎不使用;
电磁辐射的能量;
Radiant flux (power)
$\Phi \equiv \frac{\mathrm{d} Q}{\mathrm{~d} t}$
单位时间能量;
Radiant intensity
$I(\omega) \equiv \frac{\mathrm{d} \Phi ...
GAMES102 Lecture 14 Ray Tracing 2
这里回顾GAMES101 Lecture 14,这一讲完成了加速结构,介绍了辐射度量学。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容
如何使用AABB加速光线追踪的计算过程,即如何加速和物体求交;
均匀格子;
空间划分;
辐射度量学;
基本思路
对于光线和物体求交的过程;
我们先考虑光线和物体包围盒求交;
如果和包围盒有交点,即和物体求交;
均匀空间划分(格子)预处理对于空间中的物体,首先找到包围盒:
其次将盒子划分为格子:
最后判定哪些格子中有物体表面(下图中标记为灰色):
光线场景相交有了之前的准备工作,可以介绍光线和场景的相交:
光线穿按顺序穿过网;
对于每个格子:
测试与在该格子内所 ...
Deep Learning Systems HW2
这里回顾HW2,主要是实现一个基本的自动微分框架。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
参考资料:
https://forum.dlsyscourse.org/t/q3-tensor-dtype-mismatch/2297/3
https://forum.dlsyscourse.org/t/q3-sgd-weight-decay/2262/9
https://forum.dlsyscourse.org/t/q3-memory-check-with-adam-failed/2373
https://forum.dlsyscourse.org/t/q3-can-not-pass-any-test-of-adam-fixed/2398/7
https://forum.dlsyscourse.org/t/q3-numerical-issue-in-sgd-and-adam/2279/16
https://forum.dls ...
GAMES101 HW6
这里回顾GAMES101 HW6,这次作业的内容是加速结构。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://www.cnblogs.com/lookof/p/3546320.html
https://segmentfault.com/a/1190000041774408
Render微调之前的代码即可:
for (uint32_t j = 0; j < scene.height; ++j) {
for (uint32_t i = 0; i < scene.width; ++i) {
// generate primary ray dir ...
GAMES101 HW5
这里回顾GAMES101 HW5,这次作业的内容是光线与三角形相交。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://zhuanlan.zhihu.com/p/431092843
Render首先要将屏幕上的像素点恢复成对应的物体坐标,而从物体坐标变成像素点即Lecture 4和Lecture5介绍的方法。
第一步,从物体坐标变成标准立方体:
第二步,从标准立方体投影到屏幕:
像素的索引采用$(x, y)$的形式,其中$x$和$y$都是整数;
像素的索引从$(0, 0)$到$(width - 1, height - 1)$;
像素$(x, y)$以$(x + 0.5, y + 0.5)$为 ...
GAMES101 HW4
这里回顾GAMES101 HW4,这次作业的内容是贝塞尔曲线。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
recursive_bezierrecursive_bezier使用讲义中介绍的递归算法实现即可:
cv::Point2f recursive_bezier(const std::vector<cv::Point2f> &control_points, float t)
{
// TODO: Implement de Casteljau's algorithm
int n = control_points.size();
if (n == 1) {
...
GAMES102 Lecture 13 Ray Tracing 1
(Whitted-Style Ray Tracing)
这里回顾GAMES101 Lecture 13,这一讲介绍了光线追踪(基本原理)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
为什么需要光线追踪?
光栅化无法很好地处理全局效果:
(软)阴影;
光线反射多次;
光栅化速度很快,但质量相对较低;
光线追踪很准确,但速度很慢;
光栅化:实时;
光线追踪:离线;
大约10K CPU核心小时在产品中渲染一帧;
基本光线追踪算法光线关于光线的三个想法(图形学中的基本假设):
光以直线传播(虽然这是错误的);
光线交叉时不会相互“碰撞”(虽然这仍然是错误的);
光线从光源传播到眼睛(可逆性,也可以理解为光线从眼角传播到光源);
光线投射基本流程:
对每像素投射一条射 ...
GAMES102 Lecture 12 Geometry 3
这里回顾GAMES101 Lecture 12,这一讲会继续介绍曲面。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容网格操作中的几何处理部分:
网格细分;
网格简化;
网格正则化;
网格细分是指上采样,即增加分辨率:
网格简化是指下采样,即降低分别率,并且尽量保持形状:
网格正则化(使用相同的三角形,修改样本分布以提高质量):
后续会介绍这些操作的细节。
网格细分Loop细分Loop细分是三角形网格的常用细分规则:
创建更多的三角形(顶点);
调整位置;
例子:
来看下具体细节。
将每个三角形一分为四;
根据权重分配新的顶点位置;
新/旧顶点更新方式不同;
更新对于新顶点:
更 ...
GAMES102 Lecture 11 Geometry 2 (Curves and Surfaces)
这里回顾GAMES101 Lecture 11,这一讲介绍了曲线与曲面。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容这一讲介绍的内容:
显式表示
曲线
贝塞尔曲线
De Casteljau算法
B样条等
曲面
贝塞尔曲面
三角形和四边形
细分、简化、正则化
计算机图形学中的显式表示点云
点云是最简单的表示方法:点列表$(x,y,z)$;
轻松表示任何类型的几何图形;
适用于大型数据集(>>1 点/像素);
经常转换成多边形网格;
难以在采样不足的区域中绘制;
多边形网格
存储顶点和多边形(通常是三角形或四边形);
更容易进行处理/模拟,自适应采样;
更复杂的数据结构;
也许是图形学中 ...
Deep Learning Systems HW1
这里回顾HW1,主要是实现一个基本的自动微分框架。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
参考资料:
https://forum.dlsyscourse.org/t/q3-topologic-sort-inputs-is-not-a-node-list-solved/1995
https://blog.csdn.net/qq_34384524/article/details/86892864
https://en.wikipedia.org/wiki/Topological_sorting#Depth-first_search
https://forum.dlsyscourse.org/t/q4-how-to-multiply-the-partial-derivative/2131
https://forum.dlsyscourse.org/t/q4-reverse-mode-ad-test-throws-grad- ...