TBR架构的一些理解
a. 一個(gè)shader-core可以執(zhí)行1024個(gè)threads (注:thread可以理解為streaming processor(sp): 最基本的處理單元),但它們不是同時(shí)執(zhí)行的,而是將其分成64個(gè)warp, 每個(gè)warp有16個(gè)threads(16-wide warps),shader-core同時(shí)只能執(zhí)行2個(gè)warp,如果某個(gè)warp在執(zhí)行時(shí)阻塞了,調(diào)度單元就會(huì)先去執(zhí)行其它warp,類似于CPU中線程調(diào)度的概念;
b. 每個(gè)warp中的threads它們才是并發(fā)執(zhí)行的,所以每個(gè)shader-core真正能并發(fā)執(zhí)行的thread是32個(gè),(一個(gè)job可能被拆分執(zhí)行,因?yàn)槊總€(gè)thread的寄存器數(shù)量有限32個(gè),如果是過于復(fù)雜的vs可能要占用很多寄存器所以只能拆開執(zhí)行);
其它補(bǔ)充:(源自針對(duì)移動(dòng)端TBDR架構(gòu)GPU特性的渲染優(yōu)化,https://www.likecs.com/show-203322391.html)
7. TBR架構(gòu)下什么時(shí)候真正對(duì)Tile進(jìn)行渲染?
TBR一般的實(shí)現(xiàn)策略是對(duì)于cpu過來的commandbuffer,只對(duì)他們做vetex process,然后對(duì)vs產(chǎn)生的結(jié)果暫時(shí)保存(對(duì)當(dāng)前Tile渲染有關(guān)的三角形保存至Tiling list或者Framedata),等待非得刷新整個(gè)FrameBuffer的時(shí)候,才真正的隨這批繪制做光柵化,做tile-based-rendering。什么是非得刷新整個(gè)FrameBuffer的時(shí)候?比如Swap Back and Front Buffer,glflush,glfinish,glreadpixels,glcopytexiamge,glbitframebuffer,queryingocclusion,unbind the framebuffer。
不使用Framebuffer的時(shí)候clear或者discard
glclear操作是可以把當(dāng)前的framedata清空的;比如你一直往一個(gè)Rendertexture上繪制,過了一會(huì)當(dāng)你不再使用這張rendertexture的時(shí)候(即unbind)也會(huì)觸發(fā)這些framedata的繪制,如果在你不再使用這張圖之前能夠調(diào)用一次clear,那么unbind的時(shí)候framedata就是清空的,可以減少很多不必要的繪制;因?yàn)槿绻籧lear,那么每個(gè)tile在初始化的時(shí)候都要從dram上的framebuffer把那一塊的內(nèi)容完整拷貝過來,而clear后這個(gè)初始化就變得非常簡(jiǎn)單了,
不要在一幀里面頻繁的切換framebuffer
須知每次切換都意味著一次全量的Tile Rending;
避免大量的drawcall和頂點(diǎn)量
若頂點(diǎn)數(shù)量太大,可能會(huì)導(dǎo)致framedata爆炸,framedata暫時(shí)被移到其它地方存儲(chǔ),嚴(yán)重影響效率,一般百萬(wàn)以上的頂點(diǎn)量不管drawcall多少,無(wú)論shader多簡(jiǎn)單,大部分機(jī)器都肯定會(huì)觸發(fā)這個(gè)瓶頸。
Alpha Test 和 Alpha Blending區(qū)別
Alpha Test就是在執(zhí)行FS的時(shí)候,需要從一個(gè)類似Alpha Texture上讀當(dāng)前像素做采樣對(duì)比,如果比較不過則直接discard,不會(huì)寫Depth;因此如果存在AlphaTest會(huì)導(dǎo)致FrameData失效(無(wú)法提前緩存準(zhǔn)確的z值),最終AlphaTest之前保存的FrameData無(wú)法進(jìn)行early-z,整個(gè)early-z失效;
AlphaBlending不會(huì)修改深度值,所以不影響early-z,但是它會(huì)增加對(duì)FB的讀操作。
總結(jié)
以上是生活随笔為你收集整理的TBR架构的一些理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结下花了大约半年的时间从零开始的uni
- 下一篇: 用画中画剪辑技巧,给每个视频添加背景图片