本专栏收集一下个人面试经历中回答不好的问题,不一定对,仅供参考= =
A:引擎/渲染/TA
- 怎么判断一个材质是PBR的?
没答好,当时没Get到面试官的要点,乱答了一顿渲染方程+BRDF的原理。现在想想面试官的意思应该是让我答直接光(漫反射+镜面反射)+ 间接光照(漫反射+镜面反射),并且分析各个部分的意义。
- Unity URP后处理Ubershader是怎么实现的,用了什么技术?整个流程的各个RT过程?
这里确实没看自己又强答了,答的不好。回去后乖乖看了一下源码,实际上应该答Ubershader中通过muti_compile,shader中通过Keyword来控制不同后处理的情况。
话说自己在写线性空间方案的时候还看过,过了一两周就忘了。
至于RT流程,应该是考察自己有没有深入看过源码,PostProcessPass实际上是通过UseSwapBuffer来切换渲染目标(没sourceRT或者是sourceRT又开了MSAA则另外判断),所以一般两个RT就够了(Bloom是输出到_Mipup0),自己当时只答出来了_CameraColorAttachmentA+B。
- 怎么在UI上实现局部模糊?
最简单就是贴张半透明的模糊的UI背景图上去,做alpha blend。
- 怎么Debug shader?如何评判单个shader的性能?着色器中最大采样器数是多少?
当时抽风了只答出来了输出颜色。事实上Unity的frame debug,renderdoc这些我都经常用,当时想了一会没想起来,还乱答了一个Profiler。
这里也没答好,评判单个shader性能一般是借助工具,比如Xcode (https://www.bilibili.com/video/av216191591),自己只答了ALU。
一般是16个,最大采样器数量实际上和硬件有关的,所以并不一定。https://docs.unity.cn/cn/2021.1/Manual/SL-ShaderCompileTargets.html
- computer shader 做过什么,还能做什么,讲讲思路?
这个确实是写的不够多。只答了写了一个离线LUT生成器(还是提前想到会被问cs临时写的= =,毕竟现代的引擎/工程里cs太常用了),Hi-z没讲明白,后续有机会亲自写一写Hi-z。
- RayMarch实现原理
这个有时间单独写一写吧,总之当时答的不怎么样。
- 河流流动方向
本来是个很简单的问题,自己当时没想出来= = 实际上通过UV就可以了,一般来说河流的UV1/2有一套是平展的。
- 谈谈Gbuffer压缩
这里知识盲区了,也没写过,只能贴个别人的文章后续看看 https://zhuanlan.zhihu.com/p/126345392。还有不帅佬的压缩方案。
- 知道哪些GI方案,谈一谈
只说了Unity的,其他引擎的只是了解过= =有机会要写一写。
- 会houdini/绑定吗
没点这几个技能点 = = ,摆烂了
后记:感觉凉了,超常负发挥,可能是好久没面试过,第一次面试又太紧张,准备不太足= =
B : TA
- 怎么提升一个人物的渲染效果?
美术:模型、贴图;渲染:shader,光照(场景光+环境光),这里应该再答后处理
- 解释下颜色空间?RGB、HSV、HSL这些呢?
没答好。颜色空间是用来量化光谱颜色的。这些都是用来描述颜色空间的数值模型。
- 会绑定吗?有没有了解过骨骼动画这些?
不会。直接摆烂 = =
后记:TA问的相对简单,也比上次表现好了不少。不过被HR和面试官说是表现的很害羞233,可能是昨天喝了两杯美式结果一晚上没睡着困得。为什么最近面试几次问绑定的问题好多呀,看来要和K神和萌芽佬学习学习绑定了233。
C:图程(待整理)
- HDR有哪些好处?
只答了色彩方面的,被面试官问还有没有其他的,没想起来,忘了还有亮度。
- 场景模糊和后处理的关系?
当时自己答的很混乱,这里贴个GPT的回答(逃):
- Dither实现思路。
- 有没有了解过Cbuffer的支持程度?
D:引擎开发
- IBL原理
- 景深如何实现
- 骨骼动画原理
- 半透明物体阴影
- 水渲染思路(相机距离的差值)