导图社区 图形引擎
图形引擎的基础架构知识梳理,包括引擎层、资源层、核心系统层、独立平台层、第三方插件SDK(API)等等。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
游戏引擎
引擎层
游戏专用子系统
图形
动画
物理及碰撞
音效
脚本
人体学接口设备
多人/网络
性能剖析调试
功能组件
渲染管线
光照
法线:反正光的方向
光源:平行光、点光源、聚光灯、
镜面着色
能量守恒
PBS PBR:基于物理着色
网格
三维空间中,构成这些三角面的点以及三角形的边的集合就是Mesh 建模就是建网格。
网格过滤器
网格渲染器
文本渲染器
蒙皮网格渲染器
着色器
粒子系统
使用大量小物体的组合来模拟一些伪3D视觉效果的系统
图形API支持
DirectX
OpenGL-OpenGL ES-WebGL
Vulkan
Metal
摄像机
就是人的眼睛,即显示器显示出来的内容。包括位置、指向、
模型导入
重点可能在于兼容性。将已有模型导入渲染引擎
纹理
材质
环境与天空
预制环境
其他
动画导入
应该是说从DCC工具导入
重定向
方便美术把一个动作文件复用到其他骨架上,动捕也是这个逻辑
骨骼动画
就是蒙皮(应用最多),与之相对还有刚性动画、逐顶点(暴力,无法用于实时)
布娃娃物理
在蒙皮骨骼中加入了物理引擎,优化骨骼动画(学了十年动画的朋友那种情况)
刚体
碰撞体
连续碰撞检测
关节
多人在线、网络
性能剖析测试
录像及回放
内存及性能管理
资源层
三维模型
纹理资源
材质资源
字体资源
骨骼资源
碰撞资源
物理参数
地图资源
核心系统层
数学库
I/O ?
内存分配
随机数生成
语法分析器
影片播放器
断言
模块启动与终止
独立平台层
平台检测
文件系统
集合及迭代器
网络传输层
高分辨率时钟
线程库
图形包裹类
物理、碰撞包裹类
第三方插件SDK(API)
DirectX;OpenGL;Metal;Vulkan
PhysX;Havok;bullet
Boost++
Kynapse
动画相关SDK
Euphoria
Wwise;Fmod
操作系统
Windows;XBOXONE;MacOS;Linux;IOS;Andriod;WebGL;......
关键点在于跨硬件平台数量、开发难度、调用硬件的效率、耦合等
大多数着色器是针对GPU开发的,可以使用着色器语言对其编程。构成最终图像的像素、顶点、纹理,它们的位置、色相、饱和度、亮度、对比度也都可以利用着色器中定义的算法进行动态调整。调用着色器的外部程序,也可以利用它向着色器提供的外部变量、纹理来修改这些着色器中的参数。在电影后期处理、计算机成像、电子游戏等领域,着色器常被用来制作各种特效。
渲染管线高度依赖所使用的软件和硬件,不存在所谓的通用渲染管线
这是一个由CPU主要负责的阶段,且完全由开发人员掌控。在这个阶段,CPU将决定递给GPU什么样的数据(譬如渲染目标场景中的灯光、场景的模型、摄像机的位置),有时候还会对这些数据进行处理(譬如只递给GPU可以被摄像机看见的元素,其他不可见的元素被剔除(culling)出去),并且告诉GPU这些数据的渲染状态(譬如纹理、材质、着色器等)。
光栅化阶段
图元组装(三角形设置):顶点连线
三角形遍历 T Traversal 检验像素是否被三角形覆盖,被覆盖区域生成片元 Fragment。这一阶段需要给出判定(完全覆盖、中心点、沾到)另外需要抗锯齿(如多重采样)
片元着色器(fragment shader):或称像素着色器(pixel shader) :为么一个片元计算颜色,这是可编程阶段,可以自己计算,也可以用纹理采样、法线贴图、高度糙度图等。本过程仅影响单个片元
逐片元操作(per-fragment operations) DX中叫Output-merge;对每个片元以某种形式合并,得到屏幕上像素显示的颜色。
测试Test:OpenGL中有裁剪测试、透明度测、模板测试、深度测试 (本阶段高度可配置)
合并 Merge
几何阶段
(CPU)放入内存
内存转入显存GPU
Draw Call-通常Batching提高效率
顶点着色器Vertex Shaders
GPU执行模型转化与相机转换
相机转换:指确定摄像机位置以得出GPU输出呈现结果
模型转化:空间转换 为了便于计算,将原点合并,便于GPU加速
坐标变换:修改顶点坐标(动画常用)
逐顶点色彩信息处理:计算每个顶点的光照信息、阴影信息,为着色提供信息
曲面细分着色器
曲面细分可以在原有图元内加入更多顶点,可以让曲面圆润or为后面贴图置换展现细节更丰富的模型
几何着色器
开发者可以对GPU对顶点进行增删改操作
投影
GPU将前述三维空间投射在2维平面来让人查看
透视投影
正交投影
裁剪
主要是GPU把摄像机看不到的点剔除
屏幕映射
把裁剪后的xyz坐标投射到1920*1080的屏幕上
应用阶段
剔除
视锥体剔除
层级剔除
遮挡剔除
设置渲染顺序
打包数据
调用SetPass Call\Draw Call
渲染管线 Render Pipeline
渲染管线主要流程为CPU将数据导入GPU,GPU批处理batching最后导出渲染后的图像
应用阶段 由CPU负责处理
几何阶段 GPU控制