三维渲染流程

  • 输入装配

    顶点缓存(位置,颜色,法线,纹理坐标)
    顶点索引缓存
    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 输出流保存数据
  • 屏幕映射:

    裁剪 -- 视域体(视截体)外的去掉
    透视投影 -- 为产生近大远小视觉效果,用视域体建立投影矩阵
    视口变换 -- 将投影矩阵的顶点坐标转化为屏幕的视口坐标html

    背面消隐 -- 根据模型对摄像机朝向标记背面git

  • 光栅化

    决定最终屏幕上的像素数量。
    绘制每一个三角形单元,计算构成三角形单元的每一个像素的值。
  • 像素着色阶段 Pixel Shader

    多重纹理可将自定义光照贴图与目标混合实现自定义光照效果。
    多重纹理对应多重纹理坐标。
    纹理可以使用索引引用纹理坐标。
  • 输出混合阶段 Output-Merger Stage

    模板测试 -- 是否开启模板测试?比较模板缓冲区值,未经过的舍弃。
    深度测试 -- 是滞开启深度测试?比较深度值,未经过的舍弃。
    混合 -- 经过的以上测试的像素开始混合操做。github

相关资料

Shader语言相关

GLSL语言基础:http://www.javashuo.com/article/p-hclzfrwg-gs.html
GLSL使用:https://learnopengl-cn.github.io/01%20Getting%20started/05%20Shaders/
HLSL官方文档:https://docs.microsoft.com/zh-cn/windows/desktop/direct3dhlsl/dx-graphics-hlsl
高级着色语言Wk(日语版的更详细): https://ja.wikipedia.org/wiki/High_Level_Shading_Language编程

渲染流程相关

概览:https://blog.csdn.net/azhou_hui/article/details/48808469
DX11渲染管线:https://blog.csdn.net/xueyedie1234/article/details/51326005
WK渲染管线:https://en.m.wikipedia.org/wiki/Graphics_pipeline
MS DX渲染管线:https://docs.microsoft.com/zh-cn/windows/desktop/direct3d11/overviews-direct3d-11-graphics-pipelinewindows

着色器介绍

像素着色器:https://blog.csdn.net/DY_1024/article/details/87695844
曲面细分着色器:https://blog.csdn.net/liu_if_else/article/details/75039895
几何着色器:https://blog.csdn.net/pizi0475/article/details/7795429缓存

UE相关

虚幻4中SceneDepth , PixelDepth ,Customdepth,CustomDepth StencilValue的区别
009 寻找UE4的D3D设备
跨平台引擎Shader编译流程分析1
跨平台引擎Shader编译流程分析2测试

DirectX9.0 3D游戏开发编程基础
UNITY SHADER入门精要ui

实例代码

opengGL:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/
DirectX:https://zhuanlan.zhihu.com/p/28719057.net

其余

cgToolkit:https://developer.nvidia.com/cg-toolkit-download
Dx3D历史:https://www.cnblogs.com/lancidie/archive/2011/01/21/1941124.html
DX9自带光源: 点光源,方向光,聚光源3d