⭐⭐⭐技术栈¶
1.前向渲染管线流程¶
- 应用阶段:CPU准备提交到GPU
- 几何阶段:顶点、曲面细分、几何、裁剪、屏幕映射
- 光栅化阶段:三角形设定(图元装配)和三角形遍历阶段
- 像素处理阶段:片元着色器,透明、模板、深度、抖动(色彩混合)阶段,帧缓冲 其他的还有
- 视口变换的作用是什么,空间的维度是如何变化的
- 视口变换时深度值如何处理?(存入深度缓冲
- NDC是什么?
- 光栅化的定义与作用
- 法线矩阵有什么用
- 如果对一个模型仅沿X轴缩放,如何利用M矩阵计算光照?法线乘逆转置矩阵
2.光照模型¶
- Lambert
- half-Lambert
- Gourand
- phong
- Blinn-Phong
- Cook-Torrance
- bsdf和brdf的区别?各自的应用场景?
3.图形API(如OpenGL)¶
- VAO
- VBO
- EBO
- FBO
- GLFW的作用?
5. 其他比较特殊的管线处理方式¶
- Early-Z
- Z-Prepass
6.阴影处理¶
- ShadowMap:
- 原理
- 采样方法
- Shadow Acen
- PeterPanning
- 软阴影
- PCF
- PCSS
- E
- EV
- VSSM:额外存储?漏光?
- SDF
- CSM:
- 分割视锥体
- 球型优化
- 阴影过渡问题:深度,抖动,线性插值,球距
7.批处理¶
- 原理
- SRP Batching
- GPU Instancing
8.PBR与IBL¶
- 渲染方程及其意义
- lambertion
- cook-torrance的BRDF:DGF项,菲涅尔的F0,F99
- 金属度,粗糙度的实现
- IBL
- 卷积的假设?
- 图形存储:CubeMap,等距柱状投影图,各个角度六张图合一张大图
- 如何让卷积加速、更高效
9. 路径追踪¶
- whitted-style光追停止反射的问题
- 蒙特卡洛
- 单像素多射线
- 俄罗斯轮盘赌(RR)
- 重要性采样
10.IK¶
- 分析可达(骨链总长)
- 终止条件(迭代,终止条件)
- 解析法
- 数值法:
- CCD:循环坐标下降
- FABRIK:前向和后向到达
- Forward:末端关节移动到目标点,其余节点以此平移
- Backward:前端移动回去,和子关节做连线,取长度的位置
- 多次迭代
- Untiy创建足部ik
- 权重:抬起的脚为0,放下的脚为1,中间时ik的过渡混合
- 射线记录y值,计算法线加角
- 盆骨(根节点)偏移,不然ik可能达不到对应位置
11.数学¶
- 给定点集求凸包
- 如何判断点在三角形内?重心坐标 内角和 射线法
- 点在矩形内?
- 如何判断一个多边形是凸多边形
- 已知法线向量和入射向量求反射向量
- 叉乘求多边形面积
- 空间两直线求距离
- 空间点到空间三角形的最近距离
- 行列式为0的意义
- 什么是齐次坐标?
- 齐次坐标能做什么?
- 它是怎么去区分是一个位置,还是一个方向?
- 为什么使用齐次坐标,它有什么好处?
- 如何判断射线与球体相交? 如何优化
- 法线矩阵是什么
- 裁剪空间做了什么
- 视锥体如何定义
- 一般使用的向量是几维的?矩阵呢?为什么向量是三维,矩阵是四维的呢?
- M矩阵是怎么来的?
- 各矩阵的结合顺序怎么确定?
- 写出一个旋转矩阵和一个平移矩阵,怎么叠加?
- 给定M矩阵,能否分解为几种变换矩阵
- 正交矩阵的定义、特点?
- 我们的变换矩阵中哪些是正交矩阵?
- 如何理解特征值和特征向量?写一下相关式子?
- 旋转矩阵的特征值是?
- 如果A是二阶矩阵,如何理解特征向量呢?
- 切变矩阵的特征 如何表示一个平面?
- 最小二乘法了解吗? 知道欧拉角吗?有什么用?它的优点和缺点是什么?
- 万向锁遇到过吗?为什么会有万向锁?如何解决?
- 对四元数有了解吗?作用?如何进行插值?
- 各空间中,哪些是左手系,哪些是右手系,为什么会有变化
- V矩阵的功能?如何推导?
- 正交投影和透视投影有什么区别?
- 视口变换的作用是什么,空间的维度是如何变化的
- 绕世界坐标中某一物体自身的y轴旋转一定角度,旋转矩阵怎么求
- 两条线段相交判断
- 如何判断射线与三角形相交
- 如何判断射线与(光追)AABB相交?
- 给定一个极坐标表示的球面,给定两点,求两点间弧长。
- 圆和矩阵相交性判断?
- 凸多边形相交性判断?
- 射线与1w面片求交?如何加速?
- 矩阵SVD分解?
- 数学上如何把一个非线性问题表示成线性问题?比如把一个函数值表示成多项式的和?
- 多元函数全微分
- 函数如何求极值?极值的充分、必要条件?
其他重要的面经知识¶
1.抗锯齿¶
- SSAA,光栅化阶段
- MSAA,光栅化阶段
- FXAA,滤波器实现
- TAA,多帧加权混合
- DLSS,机器学习
2.延迟渲染管线流程¶
- 法线贴图是怎么存储的?为什么?优点缺点?
- G-Buffer的构成:位置、法线、颜色和镜面值(对应三张纹理),PBR再加金属度和粗糙度
- 延迟管线中需要处理复杂材质和光照模型怎么办?比如这一部分物体是某种shading model而另一部分物体是另一种model?
- 半透物体如何在延迟管线中渲染(此题有坑)?
- 遮挡剔除的实现算法介绍一些?
3.体积渲染¶
4.移动端渲染管线¶
5. forward+¶
6.¶
7.蒙特卡洛原理¶
8.MVP推导¶
HDR¶
HDR是什么?为什么? 什么是色调映射?了解哪些色调映射算法?写一下伪代码