三维渲染流程
输入装配
顶点缓存(位置,颜色,法线,纹理坐标)
顶点索引缓存
CPU传输到GPU 通过图形总线PCI Express
定义顶点拓扑结构
坐标系转换 Vertex Shader
网格的数据是局部坐标系
变换到世界坐标系 -- 通过矩阵的平移、旋转、缩放
变换到观查坐标系 -- 为了后续的投影变换及其他变换效率,进行取景变换(以摄像机为原点,光轴与Z轴一至的全体变换)
曲面细分 Shader Model 5.0
Hull Shader 细分控制着色器
Tessellation Stage(曲面细分)
Domain Shader 细分计算着色器
几何着色器 Shader Model 4.0
Geometry Shader(几何着色器)
顶点处理,与Vertex Shader不同的是一次一批顶点,可增加或减少几何数据
stream-output stage 输出流保存数据
屏幕映射:
这一步主要是调用硬件接口
裁剪 -- 视域体(视截体)外的去掉
透视投影 -- 为产生近大远小视觉效果,用视域体创建投影矩阵
视口变换 -- 将投影矩阵的顶点坐标转化为屏幕的视口坐标
背面消隐 -- 根据模型对摄像机朝向标记背面
光栅化
决定最终屏幕上的像素数量。
绘制每个三角形单元,计算构成三角形单元的每个像素的值。
像素着色阶段 Pixel Shader
它的输入是顶点间插值后的顶点属性(位置,法向量),还有纹理等,由此计算出一个颜色
利用冯氏光照计算模型,计算光照效果
多重纹理可将自定义光照贴图与目标混合实现自定义光照效果,多重纹理对应多重纹理坐标。
纹理可使用索引引用纹理坐标。
输出混合阶段 Output-Merger Stage
模板测试 -- 是否开启模板测试?比较模板缓冲区值,未通过的舍弃。
深度测试 -- 是滞开启深度测试?比较深度值,未通过的舍弃。
混合 -- 通过的以上测试的像素开始混合操作。
相关资料
Shader语言相关
渲染流程相关
着色器介绍
UE相关
虚幻4中SceneDepth , PixelDepth ,Customdepth,CustomDepth StencilValue的区别
https://blog.csdn.net/qq_16756235/article/details/78303695
2. 009 寻找UE4的D3D设备
3. 跨平台引擎Shader编译流程分析1
4. 跨平台引擎Shader编译流程分析2
书
DirectX9.0 3D游戏开发编程基础
UNITY SHADER入门精要