【面试】【知识点总结】图形学

图形学

  • 渲染管线
    顶点数据输入 (Vertices)
    顶点着色器 (Vertex Shader)
    曲面细分着色器 (Tessellation Shader)
    几何着色器 (Geometry Shader)
    图元装配 (Primitive Setup)
    裁剪剔除 (Culling and Clipping)
    屏幕映射 (Screen Mapping)
    光栅化 (Rasterization)
    片段着色器 (Fragment Shader)
    混合测试 (Blending and Testing)
    【面试】【知识点总结】图形学_第1张图片

  • 顶点数据
    顶点坐标,顶点纹理,顶点法线,顶点颜色等
    顶点缓存(Vertex Buffer),索引缓存 (Index Buffer)

  • 顶点着色器
    输入顶点数据

    • 坐标变换:(*为顶点着色器中)
      局部坐标 (Local Coor)
      | 模型矩阵 Model *
      世界坐标 (World Coor)
      | 观察矩阵View *
      观察坐标 (View Coor)
      | 投影矩阵Projection *
      裁剪坐标 (Clip Coor)
      | 透视除法
      标准设备空间 NDC (Normalized Device Coor)
      | 视口变换
      窗口坐标【面试】【知识点总结】图形学_第2张图片
    • 法线变换
      • 平移不变,旋转乘渲染矩阵,非均匀缩放 (矩阵逆变换)
    • 投影
      • 透视投影 (Projective Projection) : 视锥体 (Frustum): znear,zfar,视角FOV(Field of View),屏幕纵横比(Aspect Ratio)
      • 正交投影 (Orthographic Projection) : 正方体
    • 着色
      • 平面着色 (Flat Shading) : 三角形第一个点标识颜色
      • 高洛德着色 (Gouraud Shader) : 顶点着色器中计算顶点颜色,光栅化插值颜色
      • 冯氏着色 (Phong Shading) : 光栅化插值法线,片元着色器中计算颜色
  • 曲面细分着色器 (Tessellation Shader)

  • 几何着色器 (Geometry Shader)

  • 图元装配
    向顶点装入DrawCall指定的图元

  • 裁剪【面试】【知识点总结】图形学_第3张图片

  • 背面剔除
    删除背对摄像机的图元,法向量判断,三点顺时针剔除,逆时针保留(右手定则)
    可以设置剔除方向back/front

  • 屏幕映射 (Screen Mapping)

    • 透视除法:点坐标为齐次坐标,经过透视矩阵变换后w值不为1,将xyz除以w以达到近大远小
    • 视口变换:将NDC坐标转换为窗口坐标,将z坐标映射到[-1,1](OpenGL), glViewport() 设定视口坐标&宽高
  • 拾取

  • 光栅化

    • 线段光栅化:
      • 数字微分画线 DDA(Digital Differential Analyzer) : 取增量x判断y,有浮点运算
      • Bresenham :没有浮点数运算,d = Δx(b-a) 判断d
        【面试】【知识点总结】图形学_第4张图片
  • 片段着色器 (Fragment Shader)

    • 光照模型
      • Phong : 计算高光:光源向量关于法线反射向量计算(不连续,大于90度为负)
      • Blinn-Phone:计算高光:光源向量+视角向量计算 (连续)
  • 纹理

    • 法线贴图
  • 锯齿和抗锯齿 (Aliasing and Anti-aliasing)

  • 阴影

    • 阴影贴图
  • 测试

    • 裁切测试
    • Alpha测试
    • 深度测试
    • 模板测试
  • 混合

    • Alpha混合
  • 场景管理

    • BSP树
    • 四叉树八叉树
    • k-d树
  • 延迟渲染 前向渲染 (defer / forward)

    • 延迟渲染优点:对于多光源场景效率更优
    • 延迟渲染缺点:不能用硬件抗锯齿,不能渲染透明体,GPU带宽占用高(手游不常用)
    • 实现方法:前向渲染中光照在fragment shader中计算,延迟渲染将光照只在最后显示出的像素上计算,将原来计算光照的数据如法线,颜色,坐标,高光等存入G-buffer,在进行z-test后另行渲染光照,对每个最终显示的像素计算光照信息。
    • OpenGL实现
  • 纹理

    • 纹理环绕
      • GL_REPEAT :重复
      • GL_MIRRORED_REPEAT :镜像重复
      • GL_CLAMP_TO_EDGE :边缘拉伸
      • GL_CLAMP_TO_BORDER :边缘指定颜色
        【面试】【知识点总结】图形学_第5张图片
    • 纹理过滤:将纹理坐标浮点值映射到像素
      • GL_NEAREST :取最近邻的像素颜色
      • GL_LINEAR :根据相邻像素颜色插值
        【面试】【知识点总结】图形学_第6张图片
    • MipMap

你可能感兴趣的:(面试,图形学)