FirstWeekend理论点整理
1. Starter
PPM格式
- 格式如下:
P3
3 2
255
0 255 63
127 255 63
255 255 63
0 0 63
127 0 63
255 0 63
- 实验陷阱:windows下重定向输出的ppm格式为utf16,会导致honeyviewer等软件无法显示图片
VS C++语言特性
region
andendregion
pragma- auto与类型转换
- 标准输入输出流
- std::sqrt
- 类,构造方法,方法const,操作符重载,inline方法,
- using别名
- 引用 &
图形学
- 向量,点,颜色 (vec.h color.h
2. RayCameraAndBackGround
图形学
- 光线,射线
- 线性插值(ray.h)
- 视口的创建(原始的相机系统
- 光线与球相交的算法
3. SurfaceNormalAndCleanCode
图形学
- 如何可视化法线(一种调试方法
- 简化一元二次方程的求解公式(没看出来区别
4. MultipleObjectAndCodeClean
VS C++ 特性
- 智能指针
- vector
- number_limits
- 类:public继承,虚方法,override (hittable.h hitlist.h
图形学
- 向量:点积判断朝向一致
- 在一定的t范围内才计算光线相交(一种近似方式
- 球与光线相交的抽象 (sphere.h hittable.h hitlist.h
5. Antialiasing
VS C++ 特性
- random库,c的random函数
图形学
- 相机逻辑的抽象 (camera.h
- 反走样(使用多个样本生成像素
6. Diffuse Material
图形学
-
光线的反射与吸收理论
-
漫反射的理论
-
漫反射的随机采样实现方法(见纸质资料图 vec3.h
-
实际问题:光线反射次数与递归
-
gamma矫正 与gamma2
-
实际问题:Shadow Acne的修复(浮点数精度问题
-
朗伯反射与随机方式的区别(概率角度
-
半球反射的实现方法
7. Metal Material
VS C++ 特性
- 引用循环与#pragma once
图形学
-
关于材质的抽象(光的衰减,光的散射反射方向 material.h hit_record.h sphere.h
-
光的衰减,光的散射,反射理论
-
实际问题:漫反射中,随机散射产生0向量的情况与负值的处理
-
镜面反射理论与实现 (图11 (vec3.h material.h
-
模糊反射理论与实现(图12 (material.h
-
总结:随机产生偏差的方法(总结模糊反射与随机漫反射的共同点
- tips:产生单位圆中的偏移向量
8. Dielectrics 折射介质
图形学
- 斯内尔Snell折射理论与实现 vec3.h
- 实际问题:Snell的解是否一定存在
- 全内反射的理论与实现 material.h
- Schlick Approximation 与菲涅尔方程的理论与实现
- 实际问题:创造空心玻璃球的方法
9. PositionableCamera 1 And 2
图形学
- 相机的视角概念和实现(图14
- 相机坐标系的构建和实现(camera.h
10. DefocusBlurAndNewCamera
图形学
- 不明白:景深的概念与实现(vec3.h camera.h
- 焦距
11. Final Render
待解决问题:
- 太慢