腾讯游戏学院:实时图形渲染管道
发布日期:2021-09-14 15:33:22 浏览次数:3 分类:技术文章

本文共 1163 字,大约阅读时间需要 3 分钟。

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

时间:2019年11月23日

地点:清华大学深圳研究生院C1

目录

宏观渲染系统

图形渲染

从而为/三维模型生成图像,数学上可以用渲染方程表示

两种方法:
离线渲染(光线跟踪、路径跟踪、辐射度算法)
实时渲染(光栅化)

画家算法

深度缓冲(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》
《腾讯游戏开发精粹》

腾讯-魔方工作室群

转载地址:https://blog.csdn.net/weixin_42490152/article/details/103210381 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PyMacroParser 宏解析工具
下一篇:Leetcode: 206.Reverse List 反转链表

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月08日 17时32分58秒