GPU程式設計入門(8) GPU ASM 頂點渲染初步
看這個題目應該跟彙編有一定的關係吧。。。。嘮叨句,可能有人覺得學遊戲的,特別是現在高階語言那麼多的情況下彙編的重要性已經很低了。。。錯。。。為什麼錯,自己找書看去吧。。咔咔。。。看這篇文章多少要有點彙編的基礎,自己掂量吧
在GPU可程式設計實時渲染初期,HLSL和CG語言出現以前,使用GPU進行渲染是藉助 一種類似於彙編的ASM的語言來進行的 ,這種語言難入門更難掌握,不過和組合語言一樣,他的效率也比高階的渲染語言要高,理由也是相同,因為高階語言要編譯。我們花兩次的時間簡要的介紹一下頂點和畫素ASM語言的基本語法和函式什麼的。
如果你問為什麼要學,那我先用一句多學點總沒什麼壞處壓死你,然後我告訴你,因為以前是用這種語言的,而且有部分人多這種方式的語言有偏好,所以導致市場上很多寫GPU程式設計的書都是用ASM寫的,瞭解一下花不了多少時間,如果你學過彙編的話就更是掃一掃就好,不看的話可能真的要錯過很多精彩的東西。正題(我居然發現每次說正題前說通廢話會讓我有快感。。。。汗一個):
首先是頂點著色器的輸入和輸出,也就是整體架構,如圖:
下面稍做解釋,頂點著色器對每個頂點要執行一次,主要的輸入是頂點,暫存器包括輸入暫存器和輸出暫存器,輸入暫存器包括
一個地址暫存器a0,是能夠對常量進行索引訪問的特殊暫存器,具體說就是處理每個頂點的時候,將地址暫存器設定為索引值,就可以使用適當的常量了。這麼說大概很多人不明白,可實際上很簡單,等用例項的時候一看就明白了
12個可讀寫的臨時暫存器r0~r11,就是用來儲存在複雜計算過程中的資料的暫存器。注意,暫存器和頂點找色器不保持為連續的
常量暫存器c(n),至少256個,為浮點型別,儲存四維向量,可讀,用外部程式寫入,最常見的用途是設定變換矩陣和影響頂點的其他資料。
頂點元素暫存器v0~v16,浮點型別,是一個四維向量,可讀,用於輸入頂點資料。
接下來是輸出暫存器,如下:oPos:輸出變換後的最終頂點位置,也就是螢幕座標
oD1~2,兩個顏色輸出,漫反射和鏡面反射宿處,四維向量
oT1~8,紋理輸出暫存器,四維向量
oFog,輸出霧化值,float型別
oPts,頂點大小,浮點型別
然後是常用頂點著色器指令,不寫了,給張圖:
切。。。怎麼都傳不上來了,好爛的blog,還有就是儲存成草稿的文章怎麼都在也發表不了了,難道是我太SB不會弄?!切。。。。。。BS。。
PS:文中的圖來至《real time rendering tricks and techniques in Directx 》網上有電子書,可以考慮下來看看,這本書全部用ASM寫的,很精彩,入門,提高都不錯。。。自己看著辦吧。。。。
相關文章
- GPU程式設計--CPU和GPU的設計區別GPU程式設計
- GPU精粹與Shader程式設計(四):真實感渲染GPU程式設計
- GPU精粹與Shader程式設計(一):關於基礎物理渲染GPU程式設計
- OpenGL實現GPU體渲染GPU
- cuda程式設計與gpu平行計算(六):圖稀疏矩陣轉為CSR結構並傳入gpu程式設計GPU矩陣
- GPU程式設計(五):利用好sharedmemoryGPU程式設計
- GPU程式設計--OpenCL四大模型GPU程式設計大模型
- CPU GPU設計工作原理GPU
- 淺談GPU 及 “App渲染流程”GPUAPP
- cuda程式設計與gpu平行計算(四):cuda程式設計模型程式設計GPU模型
- GPU程式設計(五): 利用好shared memoryGPU程式設計
- 淺談GPU虛擬化技術:GPU圖形渲染虛擬化GPU
- win10系統如何開啟gpu渲染_win10開啟gpu渲染的步驟Win10GPU
- TensorFlow.NET機器學習入門【8】採用GPU進行學習機器學習GPU
- iOS 淺談GPU及“App渲染流程”iOSGPUAPP
- GPU高效能程式設計CUDA實戰(二)GPU程式設計
- GPU程式設計(四):並行規約優化GPU程式設計並行優化
- GPU程式設計(零):老黃和他的核彈們GPU程式設計
- Java中神經網路Triton GPU程式設計Java神經網路GPU程式設計
- win10系統怎麼開啟gpu渲染?win10系統開啟gpu渲染技巧方法Win10GPU
- Python程式設計入門(8) (轉)Python程式設計
- k8s 排程 GPUK8SGPU
- Unity效能最佳化GPU渲染最佳化UnityGPU
- GPU:平行計算利器GPU
- PostgreSQLGPU加速(HeteroDBpg_strom)(GPU計算,GPU-DIO-NvmeSSD,列存,GPU記憶體快取)SQLGPU記憶體快取
- 從零開始入門 K8s | GPU 管理和 Device Plugin 工作機制K8SGPUdevPlugin
- GPU程式設計(一):Ubuntu下的CUDA8.0環境搭建GPU程式設計Ubuntu
- Metal:對 iOS 中 GPU 程式設計的高度優化的框架iOSGPU程式設計優化框架
- GPU 環境搭建指南:使用 GPU Operator 加速 Kubernetes GPU 環境搭建GPU
- 第三篇:GPU 並行程式設計的運算架構GPU並行行程程式設計架構
- DoraCloud搭建8卡GPU雲桌面環境CloudGPU
- Android硬體加速(二)-RenderThread與OpenGL GPU渲染AndroidthreadGPU
- NVDIA CUDA ---------GPU計算的革命GPU
- 使用 Elastic GPU 管理 Kubernetes GPU 資源ASTGPU
- PowerShell中呼叫GPU命令通常涉及到與GPU相關的任務,如檢視GPU資訊、管理GPU驅動、執行GPU加速的計算任務等。以下是一些常見的PowerShell中呼叫GPU命令GPU
- 第五篇:淺談CPU 並行程式設計和 GPU 並行程式設計的區別並行行程程式設計GPU
- C++入門程式設計----C++運算子(8)C++程式設計
- WPF test GPUGPU