vault backup: 2023-04-18 18:53:44

This commit is contained in:
zzz
2023-04-18 18:53:45 +08:00
parent cee32d7bf4
commit f2cf4b537f
8 changed files with 150 additions and 45 deletions

View File

@@ -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",

52
GPU/GPU渲染流程.md Normal file
View File

@@ -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异构系统
分离
耦合

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,2 @@
todo...

View File

@@ -0,0 +1,11 @@
- 一个普通加法指令,一次只能对两个数执行一个加法操作。
- 一个 SIMD 加法指令,一次可以对两个数组(向量)执行加法操作。
一个寄存器存多个数据同时批量处理
## CSharp中的SIMD
位于 System.Numerics 下的Vector即可开始进行硬件级别上的处理
Vector<T>.Count为寄存器能容纳的位数

View File

8
并行计算/GPU/SIMT.md Normal file
View File

@@ -0,0 +1,8 @@
单指令多线程
一个指令 会有多条线程运行相同的指令
英伟达会给出多个修饰符,例如:Bit Mask可以指定哪些线程干活 哪些空转,既可支持分支操作
每个线程会进入锁步(lock-step)
线程会进入被遮掩(be masked out)
被遮掩的原因例如if(false) 或者循环次数不一致

View File

@@ -0,0 +1,2 @@
https://github.com/ssloy/tinyrenderer/wiki/Lesson-0:-getting-started