面试问答汇总

图形学相关

渲染管线

顶点数据 => 顶点着色器 => 曲面细分 => 几何着色器 => 图元装配 => 裁剪剔除 => 光栅化 => 片元着色器 => 测试混合

Unity轻量级渲染管线

又称通用渲染管线,区别于Unity内置渲染管线,仅保留很小的C++内核,暴露出更多的接口来支持C#脚本自定义渲染管线。特点为注重性能,单通道前向渲染,Shader Graph支持。而Unity内置渲染管线则更加通用而功能强大。

人物阴影渲染
两个立方体之间的阴影渲染
PBR主要参数

以Unity标准材质为例:

  • Albedo 反射率(漫反射)
  • Metallic 金属度
  • specular 高光度(镜面反射)
  • Smoothness 光滑度
  • Occlusion 环境光遮蔽贴图
  • Normal 法线贴图
  • Emission 自发光贴图

扩展链接:https://zhuanlan.zhihu.com/p/53086060

光栅化的几种方法

线段扫描转换:

  • 数字微分画线算法DDA
  • Bresenham光栅化算法

多边形填充:

  • 扫描线填充算法

引擎相关

游戏引擎主要模块

C#相关

C#拆装箱

装箱:值类型变量转变为引用类型Object存储在堆内存中

拆箱:引用类型Object转变为值类型存储在线程栈中

ArrayList(每个元素为Object类型)中存取Vector3(值类型)时分别用到装拆箱操作。

C#结构体与类的区别
  1. 结构体是值类型,类是引用类型
  2. 结构体不能被继承,但是结构体能够继承接口
  3. 结构体不能包含显式默认构造函数,没有析构函数;类有默认构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。

C++相关

数据结构相关

算法相关

项目相关