跳转至

⭐⭐⭐技术栈

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是什么?为什么? 什么是色调映射?了解哪些色调映射算法?写一下伪代码

MIPMAP原理、作用,如何确定使用哪一层?