GAMES202 1&2 Overview & Recap of CG Basis
Lecture 1&2 Overview & Recap of CG Basis
Contents
- Shadows
 - Global Illum
 - Physically-based Shading
 - Real-time Ray Tracing
 
Graphics Pipeline 渲染管线 复习
OpenGL:
- 一系列通过CPU调用GPU的API
- 语言不重要
 - 跨平台
 - 替代品:DirectX,Vulkan
 
 - 缺点:
- 版本比较碎片化
 - C style, 使用不是很简单
 - (之前)不好Debug
 
 - 如何理解:
- 和101里面的光栅化一一对应
 
 - 放置/摆放物体,视图变换啥的,GL有矩阵相乘的API
 - VBO 存储模型的向量、坐标、纹理坐标
- 之前的obj文件
 
 - 使用一个画架easel(GL里面的framebuffer)可以渲染多张图
 - 还有一种是直接渲染到屏幕(垂直同步),但是容易造成画面撕裂。使用双/三重缓冲避免
 - 目前只需要用到vertex shader和fragment shader
 
大致渲染过程,每一次pass
- 指定物体、相机、MVP等等
 - 指定framebuffer、输入输出texture
 - 指定vertex/fragment shader
 - 开始Render
 
OpenGL实质上使用状态机模型实现
着色语言历史
- 最开始:GPU汇编
 - Cg in Nvidia
 - HLSL in DirectX
 - GLSL in OpenGL
 
Shader使用:
- Initializing
- Create shader
 - Compile shader
 - Attach shader to program
 - Link Program
 - Use program
 
 
Phong shader in Assignment 0 作业0中的代码解释
- Vertex Shader
- attribute 关键字,标注定义顶点属性
 - uniform 关键字,标注定义全局量,CPUGPU公用
 - varying 关键字,标注定义需要插值的量
 
 - fragment shader
- texture2D()用来查纹理颜色
 
 
Debugging Shader
- 之前有一个Nvidia出的Nsight
 - 现在
- Nsight Graphics,一个跨平台,但是只支持NVIDIA
 - RenderDoc,跨平台,无限制
 
 - 一些建议
- GPU不会cout printf到终端
 - 把需要追踪的值转换为颜色,“Print”出来
 
 
Gamma校正:相对于光的强度,人眼对光线的感知是非线性的。一般而言将人眼对光的感受作为一个指数为2.2的幂函数
Rendering Equation 渲染方程
渲染中最重要的方程: $L_o(p,\omega_o)=L_e(p,\omega_o)+\int_{H^2}f_r(p,\omega_i\rightarrow\omega_o)L_i(p,\omega_i)cos\theta_id\omega_i $
在实时渲染中(RTR)写Visibility项,而且考虑一次间接光照就可以了(变化没之前那么大)实时渲染中的渲染方程:
$ L_o(p,\omega_o)=\int_{\Omega^+}L_i(p,\omega_i)f_r(p,\omega_i\rightarrow\omega_o)cos\theta_i V(p,\omega_i)d\omega_i $
Calculus 微积分
需要用到微积分。没讲,并且也没必要写
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chuan 川 Charles!
 评论
Va



