From f2cf4b537ffeba1ed78453fa7e368044da48929a Mon Sep 17 00:00:00 2001 From: zzz <1638644816@qq.com> Date: Tue, 18 Apr 2023 18:53:45 +0800 Subject: [PATCH] vault backup: 2023-04-18 18:53:44 --- .obsidian/workspace.json | 120 ++++++++++++++++++----------- GPU/GPU渲染流程.md | 52 +++++++++++++ Pasted image 20230413163234.png | Bin 0 -> 17591 bytes 并行计算/CPU/Brust.md | 2 + 并行计算/CPU/SIMD(单指令多数据).md | 11 +++ 并行计算/GPU/Compute Shader.md | 0 并行计算/GPU/SIMT.md | 8 ++ 手写渲染器/课程.md | 2 + 8 files changed, 150 insertions(+), 45 deletions(-) create mode 100644 GPU/GPU渲染流程.md create mode 100644 Pasted image 20230413163234.png create mode 100644 并行计算/CPU/Brust.md create mode 100644 并行计算/CPU/SIMD(单指令多数据).md create mode 100644 并行计算/GPU/Compute Shader.md create mode 100644 并行计算/GPU/SIMT.md create mode 100644 手写渲染器/课程.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index dfffc48..88ddef5 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -7,56 +7,68 @@ "id": "be09fd8b647f425d", "type": "tabs", "children": [ - { - "id": "7c26718ad1c1bcd1", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "程序集.md", - "mode": "source", - "source": false - } - } - }, - { - "id": "94da835d929cd68f", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "网络同步.md", - "mode": "source", - "source": false - } - } - }, - { - "id": "797b353e3b2a4938", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "Issue/超出ScrollView的特效渲染层级不对.md", - "mode": "source", - "source": false - } - } - }, { "id": "81fe1e09c99e234a", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "程序集.md", + "file": "并行计算/CPU/Brust.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "6aedfe92a5b29e2f", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "并行计算/GPU/Compute Shader.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "ea082afd946d50f4", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "GPU/GPU渲染流程.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "f8f8f48dfb17b2a6", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "网络同步.md", + "mode": "preview", + "source": false + } + } + }, + { + "id": "e87e6d863c89589f", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "手写渲染器/课程.md", "mode": "source", "source": false } } } ], - "currentTab": 2 + "currentTab": 4 } ], "direction": "vertical" @@ -70,7 +82,7 @@ "type": "tabs", "children": [ { - "id": "b736346aa28b495c", + "id": "f2ac97a7addb8678", "type": "leaf", "state": { "type": "file-explorer", @@ -98,7 +110,7 @@ } ], "direction": "horizontal", - "width": 249 + "width": 338.5 }, "right": { "id": "d809b577c235ae94", @@ -114,7 +126,7 @@ "state": { "type": "backlink", "state": { - "file": "Issue/超出ScrollView的特效渲染层级不对.md", + "file": "手写渲染器/课程.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -149,18 +161,36 @@ "markdown-importer:打开 Markdown 格式转换器": false } }, - "active": "797b353e3b2a4938", + "active": "e87e6d863c89589f", "lastOpenFiles": [ "网络同步.md", - "Issue/超出ScrollView的特效渲染层级不对.md", - "Issue", + "手写渲染器/课程.md", + "手写渲染器", "程序集.md", + "GPU/GPU渲染流程.md", + "并行计算/GPU/SIMT.md", + "并行计算/GPU/Compute Shader.md", "操作系统/多级缓存队列.md", + "Pasted image 20230413163234.png", + "GPU", + "并行计算/CPU/SIMD(单指令多数据).md", + "并行计算/CPU/Brust.md", + "并行计算/GPU", + "并行计算/GPU.canvas", + "并行计算/CPU", + "并行计算/CPU.canvas", + "并行计算/未命名看板.md", + "未命名 2.canvas", + "未命名 1.canvas", + "未命名.canvas", + "并行计算/未命名看板 1.md", + "Issue/超出ScrollView的特效渲染层级不对.md", + "并行计算", + "Issue", "待办事项/TODO.md", "FairyGui/工作流.md", "编辑器/图片/Pasted image 20221025121100.png", "编辑器/SerializedObject.md", - "未命名.canvas", "编辑器/SearchFilter UnityEditor筛选器.md", "().md", "Mesh/Mesh Baker.md", diff --git a/GPU/GPU渲染流程.md b/GPU/GPU渲染流程.md new file mode 100644 index 0000000..c976625 --- /dev/null +++ b/GPU/GPU渲染流程.md @@ -0,0 +1,52 @@ + +https://www.cnblogs.com/timlly/p/11471507.html +参考网站 + +# SM 流处理器 + 包括 + 运算核心 + load/store 加载与储存 + 特殊数学运算 sin、cos、log + 寄存器 + L1缓存 + 全局内存缓存 + 纹理读取单元 + 纹理缓存 + PolyMorph Engine:多边形引擎(负责属性装配、顶点拉取、曲面细分、栅格化 ~= 专门处理顶点相关) + 2个Wrap Schedulers:负责wrap调度 1一个warp由32个线程组成,warp调度器的指令通过Dispatch Units送到Core执行。 + 指令缓存 + 内部链接网络(?) + +# GPU渲染管线 + 通过图形api调用drawcall-> + 指令推送到驱动,驱动检查是否合法-> + 驱动把指令缓存到buffer里-> + 下次flush会把指令推送到GPU-> + ----------主机------- + + GPU通过主机接口Host Interface接受命令-> + 通过前端(Front End)处理这些命令(?)-> Front End是哪儿 + 图元分配开始工作(indexbuffer产生三角形形成批次, 分配给GPCs{ ? })-> + SM的多边形引擎(Poly Morph Engine)通过三角形索引获取三角形数据(Vertex Fetch)-> + SM的Wrap调度(SIMT)-> +![[Pasted image 20230413163234.png]] + + 等到wrap完成了vertex-shader的所有指令,三角形会被裁剪然后准备栅格化,GPU会把L1和L2缓存来进行vertex-shader和pixel-shader之间的数据通信 + SM上的Attribute Setup保证了从vertex-shader来的数据经过插值后是pixel-shade是可读的。 + 光栅化引擎开始接受三角形工作(裁剪、背面剔除、Early-Z剔除) + 32个线程分成8个2*2的像素块、如果没有三角形覆盖,线程会被遮掩 + 最后会颜色和深度输出到ROP(渲染输出单元),进行深度测试和framebuffer混合 + +# 深度测试 + +### 深度测试失效情况: + 开启透明测试 + 开启像素摒弃指令 - OpenGL的clip + 关闭深度测试 + 开启Multi-Sampling:多采样 + +### 深度测试会导致深度数据冲突 + +# CPU与GPU异构系统 + 分离 + 耦合 \ No newline at end of file diff --git a/Pasted image 20230413163234.png b/Pasted image 20230413163234.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb61a5691c9d55e832b54fd8bde108514662b74 GIT binary patch literal 17591 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%0D_fTEOczRlrMw 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 literal 0 HcmV?d00001 diff --git a/并行计算/CPU/Brust.md b/并行计算/CPU/Brust.md new file mode 100644 index 0000000..8d4c92b --- /dev/null +++ b/并行计算/CPU/Brust.md @@ -0,0 +1,2 @@ + +todo... \ No newline at end of file diff --git a/并行计算/CPU/SIMD(单指令多数据).md b/并行计算/CPU/SIMD(单指令多数据).md new file mode 100644 index 0000000..2bfb5b2 --- /dev/null +++ b/并行计算/CPU/SIMD(单指令多数据).md @@ -0,0 +1,11 @@ + + +- 一个普通加法指令,一次只能对两个数执行一个加法操作。 +- 一个 SIMD 加法指令,一次可以对两个数组(向量)执行加法操作。 + + 一个寄存器存多个数据同时批量处理 + + +## CSharp中的SIMD + 位于 System.Numerics 下的Vector即可开始进行硬件级别上的处理 + Vector.Count为寄存器能容纳的位数 \ No newline at end of file diff --git a/并行计算/GPU/Compute Shader.md b/并行计算/GPU/Compute Shader.md new file mode 100644 index 0000000..e69de29 diff --git a/并行计算/GPU/SIMT.md b/并行计算/GPU/SIMT.md new file mode 100644 index 0000000..ce5e621 --- /dev/null +++ b/并行计算/GPU/SIMT.md @@ -0,0 +1,8 @@ + + +单指令多线程 +一个指令 会有多条线程运行相同的指令 +英伟达会给出多个修饰符,例如:Bit Mask可以指定哪些线程干活 哪些空转,既可支持分支操作 +每个线程会进入锁步(lock-step) +线程会进入被遮掩(be masked out) +被遮掩的原因,例如:if(false) 或者循环次数不一致 \ No newline at end of file diff --git a/手写渲染器/课程.md b/手写渲染器/课程.md new file mode 100644 index 0000000..416eab1 --- /dev/null +++ b/手写渲染器/课程.md @@ -0,0 +1,2 @@ + +https://github.com/ssloy/tinyrenderer/wiki/Lesson-0:-getting-started \ No newline at end of file