# Conflicts:
#	.obsidian/workspace.json
This commit is contained in:
zzz
2023-04-21 00:35:41 +08:00
13 changed files with 569 additions and 112 deletions

View File

@@ -1 +0,0 @@
[]

View File

@@ -0,0 +1,5 @@
{
"diffStyle": "word",
"matchWordsThreshold": 0.25,
"colorBlind": true
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-version-history-diff",
"name": "Version History Diff",
"version": "2.1.0",
"minAppVersion": "1.1.7",
"description": "Diff the version history of the core Sync and File Recovery plugins and Git. Adds a command to open the core Sync version history as well.",
"author": "kometenstaub",
"authorUrl": "https://github.com/kometenstaub",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

111
.obsidian/workspace vendored
View File

@@ -1,111 +0,0 @@
{
"main": {
"id": "c01acc1e0c3642a1",
"type": "split",
"children": [
{
"id": "458b5417a938cfb3",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "SerializedObject.md",
"mode": "source",
"source": false
}
}
}
],
"direction": "vertical"
},
"left": {
"id": "b3f2fe956c600b2b",
"type": "split",
"children": [
{
"id": "b892947aee3a10a9",
"type": "tabs",
"children": [
{
"id": "b736346aa28b495c",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {}
}
},
{
"id": "bd33cd6e5600118d",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
}
}
}
]
}
],
"direction": "horizontal",
"width": 249
},
"right": {
"id": "d809b577c235ae94",
"type": "split",
"children": [
{
"id": "7cbbb049622f8875",
"type": "tabs",
"children": [
{
"id": "fc04db1c3d5f37f2",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "SerializedObject.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "d9c52b59dc19017c",
"type": "leaf",
"state": {
"type": "calendar",
"state": {}
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"active": "b736346aa28b495c",
"lastOpenFiles": [
"SearchFilter UnityEditor筛选器.md",
"Pasted image 20221021171104.png",
"Mesh Baker.md",
"conflict-files-obsidian-git.md",
"图集处理.md",
"待办事项/TODO.md",
"本地化流程.md",
"待办事项/Work.md",
"待办事项/Learn.md",
"未命名.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