腾讯游戏学院:实时图形渲染管道

腾讯游戏学院课程1:实时图形渲染管道

时间:2019年11月23日
地点:清华大学深圳研究生院C1

目录

    • 腾讯游戏学院课程1:实时图形渲染管道
      • 宏观渲染系统
          • 图形渲染
          • 管线与管道
      • 应用阶段
          • 查找
          • 可见性检测
          • 分组和排序(按什么顺序绘制)
          • 提交图元
      • 几何阶段
      • 光栅化阶段
      • 总结&参考
      • 参考网站及书籍推荐

宏观渲染系统

图形渲染

从而为/三维模型生成图像,数学上可以用渲染方程表示
两种方法:
离线渲染(光线跟踪、路径跟踪、辐射度算法)
实时渲染(光栅化)

画家算法
深度缓冲(z-buffer)无需排序,分辨率与图像(颜色缓冲)相同。

管线与管道

宏观渲染管道
输入场景-应用阶段(cpu)-几何阶段(gpu)-光栅阶段(gpu)-输出图像

应用阶段

输入场景-可见性检测–分组和排序-提交图元-输出图元
场景图Sence Graph需要组织场景中的物体(摄像机、光源、网格 、骨骼)

查找

使用空间分割技术加速场景查询,包括:二元空间分割BST Tree、八叉树BVH Tree(现在用的比较多)、入口(Protal)

可见性检测

平截头体剔除、遮挡剔除、细节LOT

分组和排序(按什么顺序绘制)

通常按渲染层layer分组
半透明物体不能用z-buffer排序
所以需要半透明物体运用与渲染无关的技术OIT(Order Independant)

提交图元

drawcall
图元:顶点数据(存放在顶点缓冲区,vertex buffer)与索引数据(存放在索引缓冲区,index buffer)

几何阶段

渲染图元-顶点着色-裁剪-屏幕映射-变换后顶点
输入装配,读取vb ib,生成三角形的顶点数据
顶点着色,执行顶点着色器,输入顶点属性,输出
包括:空间变换(模型空间-世界空间-观察空间(透视投影or正交投影)-齐次坐标空间-屏幕空间)几何图元的顶点定义在模型空间,需要变换到屏幕空间
三个矩阵:Oject2World,View,Projection,
投影变换(观察空间-齐次坐标空间)

几何着色器
朝向剔除:渲染时只渲染正面/背面
三角形裁剪:裁剪超出裁切平面的部分
透视除法及

光栅化阶段

变换后的顶点-扫描转换-像素着色-输出合并-渲染目标
扫描转换:把三角形数据转换为像素的位置。需要对颜色、纹理坐标进行插值(须透视正确)会出现锯齿
像素着色:执行像素着色器,比如对问题采样、光照计算、阴影计算,最后输出颜色的修正

总结&参考

前向管线与延迟管线 Geometry-VS-OS-FS-Render Target
前向 O(M*N)
延迟 O(M+N) more buffer

参考网站及书籍推荐

《游戏引擎装配》
http://www.realtimerendering.com/portal.html
http://jcgt.orge
http://github.com/miloyip/game-programmer
《Real-time Rendering》
《腾讯游戏开发精粹》

腾讯-魔方工作室群

你可能感兴趣的:(游戏程序设计)