Skip to content

Commit 7552987

Browse files
committed
add more to notes16
1 parent f092559 commit 7552987

File tree

10 files changed

+67
-16
lines changed

10 files changed

+67
-16
lines changed

Notes13.md

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ glossy 表示有点反光, 但是又有些粗糙的物体 (铜镜)
2121

2222
早期人类认为人能看见物体, 是因为眼睛发出光线, 看到物体之后再返回来. 这和现在的常识不符.
2323

24+
PS:所以光线追踪的思想是感知光线
25+
2426
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/emmision.png)
2527

2628

Notes14.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,13 @@ BVH 是对物体划分(更形象点说是分组) 但是空间上组与组之间
134134

135135
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance.png)
136136

137-
- Radiant flux 辐射通量 (又称为 power)
138-
- Radiant intensity 辐射强度 (和方向有关)
139-
- irrediance 辐照度 OR 辐射照度 (物理学: 单位面积接收到的辐射通量 图形学:一个物体表面单位面积接收到的光的能量)
137+
- Radiant flux 辐射通量 (又称为 power)
138+
- Radiant intensity 辐射强度 (和方向有关) power per solid angle 在单位立体角中的能量
139+
- irrediance 辐照度 OR 辐射照度 power per projected unit area (物理学: 单位面积接收到的辐射通量 图形学:一个物体表面单位面积接收到的光的能量)
140140
- radiance 辐射亮度 (物理学:单位投影面积, 单位立体角上的辐射通量 图形学:光线在传播过程中度量能量)
141141

142+
PS 图形学中所说到的能量一般都是单位时间内的能量 也就是power 功率 Joule 焦耳在图形学中很少使用
143+
142144

143145
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance2.png)
144146

Notes15.md

+34-7
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
## 微分立体角
44

5+
是一个极小的立体角
6+
57
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance6.png)
68

79
θ是和 Y轴的夹角, φ 是围绕 y 的旋转角度
810

9-
PS 微分立体角 和 θ 有关, 靠近赤道和极地变化率不一样
11+
PS 注意公式中的 sinθ 微分立体角 和 θ 有关, 靠近赤道和极地变化率不一样
1012

1113
## Irradiance
1214
一个物体表面单位面积接收到的光的能量
@@ -17,29 +19,41 @@ PS 微分立体角 和 θ 有关, 靠近赤道和极地变化率不一样
1719

1820
能量总和是固定的
1921

22+
### Irradiance vs. Intensity
23+
2024
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/irradiance2.png)
2125

2226
注意intensity 没有变 (Radiant Intensity 是单位立体角上的power 随着 r 变大, 立体角并没有改变 )
2327

24-
是 Irrediance 在随着 r 变大在衰减
28+
是 Irrediance 在随着 r 变大在衰减 (因为壳越来越大了 表面积也变大了 而Irrediance是单位面积上的能量)
29+
30+
2531

2632

2733
## Radiance
2834

35+
power per solid angle, per project unit area 其中 power per solid angle 就是辐射强度 Radiant intensity
36+
2937
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance6.png)
3038

39+
40+
### Radiance Irradiance Intensity
3141
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance7.png)
3242

43+
Irradiance 是四面八方各个能量的辐射
44+
3345
Radiance 其实是在 Irradiance 基础上增加了方向
3446

47+
Radiance 总体来说就是一个很小的面和一个很小的范围(单一方向)
48+
3549
## Irradiance VS Radiance
3650

3751
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/radiance8.png)
3852

3953
dA 的能量就是每一个从每个方向来的的能量做积分. 或者说 Irradiance 就是是四面八方的 Radiance 的积分(求和)
4054

4155
## BRDF 双向反射分布函数
42-
用于描述了光线和物体如何相互作用
56+
用于描述了光线和物体如何相互作用 或者说是BRDF 定义了材质
4357

4458
通俗的说, BRDF是在解决光从某个方向打到以个物体上, 光向反射到不同方向的能量分布. OR 对于一个物体的表面, 如何把收集到的能量反射的另外的方向上去.
4559

@@ -61,14 +75,13 @@ Li(p, ωi) 是入射光的 radiance
6175

6276
fr 对于每一个入射方向都会对应一个着色点和出射方向 这样的BRDF 函数
6377

78+
反射方程
6479

6580
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/brdf.png)
6681

67-
PS: Li(p, ωi)cos(θi)dωi 做积分就是图中那一个小块区域得到的 Irradiance
68-
69-
70-
82+
PS: Li(p, ωi)cos(θi)dωi 是图中那一个小块区域dA得到的 Irradiance 其中Li(p, ωi)是入射能量
7183

84+
PS: 然后乘以BRDF 函数fr(p, ωi -> wr) 就得到出射的Radiace, 最后整体做积分
7285

7386

7487

@@ -95,9 +108,12 @@ Le(p, ωo) 表示自发光
95108

96109
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/rendering.jpg)
97110

111+
PS : 这里的积分是因为面光源 面光源就是点光源的积分
98112

99113
PS: 注意和 BlinnPhong 一样, 虽然我们知道光是从外部射入, 但是规定上入射光的方向 ωi 是从内向外
100114

115+
PS: 渲染方程是定义在立体角上的
116+
101117
### Reflection Equation 反射方程
102118

103119
单一点光源的简单情况
@@ -120,10 +136,21 @@ PS: 注意和 BlinnPhong 一样, 虽然我们知道光是从外部射入, 但是
120136
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/rendering3.jpg)
121137

122138

139+
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/rendering9.jpg)
140+
PS: 把渲染方程简写为 L = E + KL 是为了后面解方程方便 (这里 L 是一个矩阵)
141+
142+
123143
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/rendering4.jpg)
144+
E 是光源本身的光 KE是直接光照 K2E一次反射之后的光
145+
146+
全局光照是直接光照和间接光照的集合
124147

125148
PS: 光线追踪特别适合处理间接光照
126149

150+
根据之前的公式, 光栅化只能做自发光和直接光照 (当然实际上光栅化也可以做多次光照 只是比较难)
151+
152+
153+
127154
## Brief Review of probability theory 概率论回顾
128155

129156
随机变量分布: 通俗的说随机变量根据不同的概率取不同的值. 取某些值概率大, 某些值概率小.

Notes16.md

+24-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66

77
之前大学数学中学的求定积分的方法, 是先求出原函数再带入值. 对于一些复杂的函数是没有办法求到原函数的, 怎么办呢?
88

9-
## 黎曼积分
9+
## Riemann Integral 黎曼积分
1010
Riemann Integral,黎曼积分的核心思想就是试图通过无限逼近来确定这个积分值. 把积分区域分割为无数个细长的条.
1111

12-
## 蒙特卡罗积分
13-
目的: 求定积分 蒙特卡洛则是在积分区域内不断的采样, 采样很多次, 最后求平均值, 也就是面积.
12+
## Monte Carlo Integration 蒙特卡罗积分
13+
目的: 求定积分
14+
15+
蒙特卡洛则是在积分区域内不断的采样, 采样很多次, 最后求平均值, 也就是面积.
1416

1517
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/monte.jpg)
1618

@@ -51,7 +53,25 @@ PS: 蒙特卡罗适合任何形式的积分.
5153

5254
满发射和漫反射之间的情况就没有考虑到.
5355

56+
## Path tracing
57+
N = 1时就是路径追踪, N !=1 分布式路径追踪, 存在指数爆炸问题
58+
59+
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/tracing.jpg)
60+
61+
62+
### 浪费
63+
在着色点均匀的向外采样
64+
65+
当光源大的时候 在这个像素点可能取5个射线就能打到光源
66+
当光源小的时候 在一个像素点可能取5万个射线才能打到光源
5467

68+
蒙特卡洛积分要求是在X上面采样 最后就在X 上面积分 (这里的X是积分域)
69+
70+
71+
![image](https://raw.githubusercontent.com/lumixraku/NotesForGraphics/master/images/tracing9.jpg)
72+
73+
来自于光源的部分, 可以使用对光源采样。其他非光源的贡献,继续使用RR
5574

5675
# Read More
57-
关于蒙特卡罗积分的详细介绍 [Wyman的博客](https://www.qiujiawei.com/monte-carlo/)
76+
关于蒙特卡罗积分的详细介绍 [Wyman的博客](https://www.qiujiawei.com/monte-carlo/)
77+

images/rendering9.jpg

208 KB
Loading

images/tracing.jpg

315 KB
Loading

images/tracing9.jpg

310 KB
Loading

irradiance3.jpg

398 KB
Loading

task3/MyTask3/task3/rasterizer.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,9 @@ void rst::rasterizer::draw(std::vector<Triangle *> &TriangleList) {
178178
float f2 = (50 + 0.1) / 2.0;
179179

180180
Eigen::Matrix4f mvp = projection * view * model;
181-
// model 是旋转j矩阵
181+
// model 是旋转矩阵
182182
// projection 是透视投影矩阵
183-
// view 是一个平移矩阵
183+
// view 是一个平移矩阵(view-model transform)
184184

185185
for (const auto& t:TriangleList)
186186
{

0 commit comments

Comments
 (0)