FirstWeekend理论点整理

1. Starter

Untitled

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 and endregion pragma
  • auto与类型转换
  • 标准输入输出流
  • std::sqrt
  • 类,构造方法,方法const,操作符重载,inline方法,
  • using别名
  • 引用 &

图形学

  • 向量,点,颜色 (vec.h color.h

2. RayCameraAndBackGround

图形学

  • 光线,射线
  • 线性插值(ray.h)
  • 视口的创建(原始的相机系统
  • 光线与球相交的算法

3. SurfaceNormalAndCleanCode

Untitled

图形学

  • 如何可视化法线(一种调试方法
  • 简化一元二次方程的求解公式(没看出来区别

4. MultipleObjectAndCodeClean

Untitled

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

Untitled

待解决问题:

  • 太慢