INFO
该题来自海尔智家,非常的有深度的一篇面试题总结
光栅化是在做什么?
drawcall 是指什么过程?
都用过什么类型的贴图?
管线中都用过什么测试?α测试 深度测试 模板测试
mvp 矩阵是什么,做什么用?M:Model(模型矩阵)V:View(观察矩阵)P:Projection(投影矩阵)
旋转、平移是齐次矩阵中哪个值在变?举个例子
半透物体渲染顺序
透明物体太多导致什么问题?=> overdraw 是怎么回事?
延迟渲染是什么回事,可以用在哪,为什么要用延迟渲染,发生在管线哪一步,正向渲染在多光源的情况下有什么浪费?
延迟渲染将渲染过程分为两个主要阶段:
- 几何阶段:不直接输出颜色到屏幕,每个像素的几何信息,如位置、法线、反射率、材质属性等 存到多缓冲区Gbuffer
- 光照阶段:将所有的光照计算集中在屏幕空间,一次性高效地处理大量光源
projection 矩阵除了投影还可以用来做什么?(视椎体剔除)
Gbuffer 是什么
MSAA 在管线的哪个阶段介入?为什么会失效?本质上是硬件能力还是软件能力?=> Framebuffer 无法更细致的采样
光栅化阶段,硬件能力。所以发生在片元着色器阶段的延迟渲染会造成MSAA失效。
Shader 中为了避免使用 if 会用什么替代?step、smoothstep,为什么要替代?
AO 本质是处理什么?直接光还是间接光?(间接光)
物体都受空间中哪些光的影响?
SSAO 中的屏幕空间指的是什么?
shadowMap 生成原理(硬阴影),软阴影是什么
兰伯特和 Phong 的光照公式
兰伯特模型用于描述漫反射
:漫反射的光强 :漫反射系数(物体表面的颜色或反射率) :入射光强 :表面法线向量 :指向光源的单位向量 :两向量点积,表示光照与法线的夹角 特点: 只与入射角度有关,物体表面看起来“柔和”,没有高光。
Phong 模型在兰伯特基础上,增加了镜面高光
:最终像素光照强度 :环境光系数 :环境光强 :漫反射系数 :镜面反射系数 :法线向量 :指向光源的单位向量 :指向观察者的单位向量 :反射向量,计算公式 :高光指数(控制高光的锐利程度) 特点: 除了漫反射,还有镜面高光,能表现出光滑或有光泽的表面。
PBR 完整公式,Lo 和 Li 是什么,有什么关系?(递归关系)这个在 threejs 里估计被删掉了,预先渲染会递归处理,实时渲染不会
光线追踪是什么,在光照公式中哪一步改进
不同物体 F0
毛发渲染怎么做
BRDF 都是什么参数
SDF 是什么
InstancedMesh 是怎么减少开销的,本质上是软件的能力还是硬件的能力? (其实是显卡的优化)
噪声和随机数有什么区别?
各种抗锯齿算法,哪个效率最低,哪个速度最快,哪个效果最好?
骨骼绑定是什么原理?
unity 和 threejs 在除了跨平台能力之外还有什么区别?
webpack 和 vite 区别,为什么 vite 更快
vue 解决了 jquery 的什么问题?
后续补充其他相关问题
https://zhuanlan.zhihu.com/p/620436609
discard 会导致 early-z 失效。那么为了解决这个问题用全透明代替 discard 又会有什么问题?-> 影响到GPU拾取