女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種同時解決目標獨立光柵化和可變頻率的像素著色器的通用實現方法

集成電路應用雜志 ? 來源:集成電路應用雜志 ? 2020-07-14 11:00 ? 次閱讀

一種同時解決目標獨立光柵化和可變頻率的像素著色器的通用實現方法

0 引言

多點采樣抗鋸齒(MSAA),目標獨立光柵化(TIR),和可變頻率像素著色器(VRS)是三種不同的DirectX 特性。

多點采樣抗鋸齒是一個像素有多個采樣點,來達到抗鋸齒效果。

目標獨立光柵化是Direct11.3提出的新特性,旨在使Direct2D能夠將柵格化步驟從CPU移動到GPU,同時仍然保留Direct2D抗鋸齒需求。抗鋸齒路徑的渲染將在GPU上進行2次渲染。第一遍將把每個像素的覆蓋率寫入一個中間渲染目標紋理。路徑將被鑲嵌成不重疊的三角形。該GPU將編程使用目標獨立光柵化和添加劑混合在第一次通過。第一次使用的像素著色器將簡單地計算覆蓋掩碼中設置的比特數,并輸出規范化為[0.0,1.0]的結果。在第二次過程中,GPU將從中間紋理讀取數據并寫入應用程序的渲染目標。此遍歷將路徑顏色乘以第一次遍歷期間計算的覆蓋率。

可變頻率的像素著色器是Direct12提出的新特性,由于性能的限制,像素著色器不能總是在輸出圖像的每個部分都提供相同的質量水平。可變速率著色,或粗略像素著色,是一種機制,使分配渲染性能/功率在不同速率的渲染圖像。在視覺上,有些情況下陰影率可以降低,而在可感知的輸出質量上幾乎沒有降低,從而導致“自由”的性能。

一般來說在GPU上對這三種特性進行支持需要不同的邏輯門。多點采樣抗鋸齒特性提出時間比較早,在很多GPU的功能上已經涵蓋了,如何將目標獨立光柵化以及可變頻率像素著色器這兩個特性在已經支持多點采樣抗鋸齒特性的GPU上實現對架構設計師提出了新的挑戰。

1 現有方案存在的問題

在D3D管線中,OM(Output Merger)會收到經過光柵化(Rasterizer)的mask,用來確定哪些像素(Pixel)需要更新,哪些不需要更新;同時OM會收到經過PS(Pixel Shader)計算之后輸出的每個像素(Pixel)的顏色值,并將顏色值按照mask輸出到對應的內存空間中。

為了得到更好的圖形渲染效果,D3D運用了各種反走樣算法,其中最常見的就是MSAA(MultiSampling Anti-Aliasing)。簡單來說就是將1個像素(Pixel)用多個點去采樣,這些新的采樣點我們稱為Sample,目前1個pixel包含的sample個數可以是1,2,4,8,16. 因為像素被細化,所以可以有效降低圖形邊界的鋸齒現象。按照D3D Spec要求,MSAA 在3D管線中各個階段的sample個數如表1所示。

其中N的取值是1,2,4,8,16,Rasterizer和OM RT的Sample必須是一樣的。RT是指Render Target。

D3D11.3在MSAA的基礎上提出了TIR(Target Independent Rasterization)。這個新的特性可以幫助GPU處理2D的反走樣。TIR在3D管線中各個階段的sample個數要求如表2。

其中N的取值是1,2,4,8,16.TIR和MSAA 最大的區別有兩點:(1)TIR的時候不要求Rasterizer的sample數和OM RT相同;(2)PS 只能運行在Pixelfrequency模式下,即每個pixel不論包含了多少個sample只能調用一次PS。

D3D12為了兼顧圖像質量和硬件性能,對反走樣算法提出了更高的要求—VRS(Variable Rate Shading). 這個新的特性主要思想是節省PS的調用,不再是按照pixel或者sample的粒度去調用PS,而是按照coarse pixel的粒度去調用PS,即N個pixel調用一次PS(N可以是2,4,8,16),D3D12稱其為Subsampling.VRS在3D管線中各個階段sample個數要求如表3。

PS調用粒度我們用分數表示,比如1/2表示2個pixel調用一次PS。除了表中列出的組合,其他的情況D3D12不要求支持。

MSAA,TIR和VRS是三個不同的特性,都需要GPU hardware支持。MSAA,TIR和VRS是三個不同的特性,不會同時開啟,OM需要支持它們需要三塊不同的邏輯單元,如圖1所示。

MSAA, TIR 和VRS是三個不同的特性,不會同時開啟,OM如果用三個不同的邏輯單元去處理會增加硬件設計的邏輯門。

2 算法設計

本文希望實現一種統一的算法能處理這三個不同的特性,達到簡化邏輯節省gatecount的目的。

在OM入口處增加兩個簡單的處理單元,一個處理單元根據Rasterizer的samplemode調整coveragemask和坐標;另一個處理單元根據PS的samplemode調整輸出的data。然后將經過調整的coveragemask和color輸入到一個統一的邏輯單元,這個邏輯單元可以用一套邏輯處理所有MSAA,TIR, VRS情況。具體設計如圖2。

Unitive Unit只用處理MSAA的所有Case。Rasterizer到OM的帶寬是固定的,也就是說Rasterizer輸出的maskbit位是不變的,在這種情況下Unitive Unit需要能處理各種sample mode的情形。我們約定Rasterizer送出門的mask代表的第一個pixel為左上點,那么這個左上點的坐標(x,y)必須根據Rasterizer到OM的帶寬滿足對齊(aligned)的規則。

假設Rasterizer到OM帶寬是maskWidth, 一般來說maskWidth大于等于16并且是2的冪,否則就沒辦法在16x的情況下一次性表示一個完整的pixel。N是Rasterizer的samplenum.

Raster mask能表示的RT pixel個數:

rasterPixelNum=(maskWidth>>log2N)

x對齊規則:

1<<(((log2rasterPixelNum)>>1)+

((log2 rasterPixelNum)&1))

y對齊規則:

1<<(((log2rasterPixelNum)>>1))(1)

以Rasterizer到OM的帶寬是16bits為例,那么在不同MSAA模式下收到的pixel左上點坐標和PS的color筆數如表4。

為了能讓TIR和VRS共用可以處理MSAA 的Unitive Unit,我們需要調整Rasterizer輸出的mask和左上點pixel的坐標,以及PS輸出的color,使它們能滿足Unitive Unit的輸入要求,以16bits帶寬為例,即滿足表4。

2.1 Processmask Unit

首先看Processmask Unit,這個模塊需要根據Rasterizer Samplenum.和OM RT Samplenum.來調整mask和pixel坐標。綜合前文里關于TIR和VRS的內容,Rasterizer Sample num.和OM RT Samplenum.只有表5所示的三種組合。

Unitive Unit能處理MSAA特性,MSAA要求Rasterizer Samplenum.和OM RT Samplenum.是一樣的,所以對于TIR和VRS,在進入Unitive Unit之前需要Processmask Unit將Rasterizer輸出的mask和pixel左上點坐標按照OM RT標準進行調整。也就是需要支持兩種調整:Nx Rasterizer mask進行down-sample調整到1x OM RT的mask,或者1x Rasterizer mask進行up-sample調整到Nx OM RT的mask.

2.2 Down-sample

Rasterizer Sample num.是N,OM RT Samplenum.是1。假設Rasterizer輸出的mask為rasterMask,pixel左上點坐標是(x,y)。

經過Process mask Unit調整后輸出的mask為finalMask,其寬度和rasterMask相同,調整后的pixel左上點坐標是(finalX, finalY)。

調整的方法用偽代碼表示如下。

index_size_x=(log2N>>1)+(log2N&1);

index_size_y=(log2N>>1);

aligned_size_x=((log2rasterPixelNum)>>1)+((log2rasterPixelNum)&1);

aligned_size_y=(log2rasterPixelNum)>>1;

block_index=0;

finalX=(~((1<<(index_size_x+aligned_size_x))-1))&x;

finalY=(~((1<<(index_size_y+aligned_size_y))-1)) & y;

for(i=0;i<=index_size_x;i++)

block_index|=((((x>>aligned_size_x)>>i)&1)<<(i*2));

for(j=0;j <=index_size_y;j++)

block_index|=((((y>>aligned_size_y)>>j)&1)<<(j*2+1));

pixel_mask=0;

for(n0;n

{

temp_mask=0;

for(m=0;m

{

temp_mask|=((rasterMask>> (m+n))&1);

}

pixel_mask|=(temp_mask<<(n/N));

}

finalMask=pixel_mask<<(block_index*(maskWidth/N));

以Rasterizer到OM的帶寬是16bits為例。

從N個sampledown-sample到1個samplemask。把Nbit的samplemask全部用或運算最后得到1bit的pixelmask。再根據pixel左上點坐標對pixelmask進行移位。

調整pixel左上點的坐標,OM RT Samplenum.為1時,16bit的mask是(4,4)對齊的,所以需要將表5-1???中Rasterizersamplenum.等于N對齊的坐標調整成(4, 4)對齊的pixel坐標。

以N=4為例,假設Rasterizer輸出的mask是b’0100 1011 0000 1111, pixel 坐標(6,12), Pixel坐標要從(2,2)對齊調整到(4,4)對齊,那么兩個坐標分別在低兩位與上b'00,調整為(4,12)。mask每4bit調整成1bit,變成b'1101,然后根據坐標確定這個2×2是4×4里的第幾個2×2,將mask移位,最后得到b'0000 0000 1101 0000。如圖3。

2.3 Up-sample

Rasterizer Sample num.是1,OM RT Samplenum.是N。一筆Rasterizer的輸出會被Processmask Unit拆成N筆送進Unitive Unit。

假設Rasterizer輸出的mask為rasterMask,pixel左上點坐標是(x,y)。

經過Process mask Unit調整后輸出N筆mask分別為finalMask_i,i∈[0,N-1],其寬度均和rasterMask相同,調整后的N筆pixel左上點坐標分別是(finalX_i, finalY_i),i∈[0,N-1]。

調整的方法用下面偽代碼來表示。

sample_mask_per_pixel=(1<

aligned_size_x=((log2rasterPixelNum)>>1)+((log2rasterPixelNum)&1);

aligned_size_y=(log2rasterPixelNum)>>1;

x_stride=1<

y_stride=1<

for(i=0;i

{

for(j=0;j

{

if((rasterMask>>(i*N+j))==1)

finalMask_i=sample_mask_per_pixel<<(j*N);

}

x_offset=((i&1)|(((i>>2)&1)<<1));

y_offset=(((i>>1)&1)| (((i>>3)&1)<<1));

finalX_i=x+x_offset*x_stride;

finalY_i=y+y_offset*y_stride;

}

以Rasterizer到OM的帶寬是16bits,N=4為例,假設Rasterizer輸出的mask是b'0100 1011 0000 1111, pixel 坐標(24,12).這一筆數據會被拆分成4筆數據送進Unitive Uint,如圖4所示。

2.4 Processcolor Unit

Process color Unit需要根據PS sample mode和OM RT samplemode將PS 輸出的color進行復制,匹配Unitive Unitdataentry的輸入。綜合表1、表2、表3,只需要對VRS的color進行展開,將PS 輸出的coarse pixel的color轉成pixel的color。

PS是1/2samplemode,一個color復制成兩份轉成1samplemode。

PS是1/4samplemode,一個color復制成四份轉成1samplemode。

PS是1/8samplemode,一個color復制成八份轉成1samplemode。

PS是1/16samplemode,一個color復制成十六份轉成1samplemode。

經過上述的轉化Unitive Unit會認為PS 是MSAA 的Pixel frequency,然后進行相應的處理。設計的時候也可以根據Unitive Unit的具體實現將color復制更多份(和OM RT sample mode相對應),使Unitive Unit認為PS是MSAA的Samplec frequency。

3 結語:算法優點

對于已經支持MSAA 特性的GPU,如果想升級支持D3D11.3的TIR和D3D12的VRS,在OM模塊部分不需要設計全新的邏輯,可以對這兩種新的特性進行巧妙的轉化,然后共用MSAA的邏輯處理單元。這樣既省去了復雜的邏輯設計和驗證,也節省了gatecount。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 光柵
    +關注

    關注

    0

    文章

    296

    瀏覽量

    27882
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4910

    瀏覽量

    130658
  • 圖像
    +關注

    關注

    2

    文章

    1092

    瀏覽量

    41026

原文標題:一種同時解決目標獨立光柵化和可變頻率的像素著色器的通用實現方法

文章出處:【微信號:appic-cn,微信公眾號:集成電路應用雜志】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    PMP40988:可變頻率、ZVS、5kW、基于 GaN 的兩相圖騰柱PFC參考設計

    此參考設計是一種高密度、高效率的 5kW 圖騰柱功率因數校正 (PFC) 設計。該設計使用兩相圖騰柱 PFC,以可變頻率和零電壓開關 (ZVS) 運行。該控制采用新的拓撲和改進的三角電流模式
    的頭像 發表于 02-24 14:53 ?525次閱讀
    PMP40988:<b class='flag-5'>可變頻率</b>、ZVS、5kW、基于 GaN 的兩相圖騰柱PFC參考設計

    匯川變頻器輸出頻率設置

    在現代工業生產中,變頻器已經成為電機驅動系統不可或缺的部分。匯川變頻器以其高效、穩定和易于操作的特點,被廣泛應用于各種工業場合。 變頻器
    的頭像 發表于 12-11 09:28 ?2404次閱讀

    《算力芯片 高性能 CPUGPUNPU 微架構分析》第3篇閱讀心得:GPU革命:從圖形引擎到AI加速的蛻變

    場景精確投射到2D平面;最后在像素著色階段完成材質渲染和光照明細處理。DirectX API的迭代推動了可編程著色器的發展,解放了GPU的通用計算潛能。特別是
    發表于 11-24 17:12

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】--了解算力芯片GPU

    不同的線程束以執行不同的指令。指令調度單元負責從指令緩存中取出著色器程序中的操作指令,并將其分配給每個CUDA核心執行。 線程塊的設計為 GPU編程提供了一種高效、靈活和易用的方式來組織和管理并行線程
    發表于 11-03 12:55

    abb變頻器遠程模式頻率怎么設置

    介紹ABB變頻器遠程模式下頻率的設置方法。 了解ABB變頻器的基本概念 在進行遠程模式頻率設置之前,我們需要先了解
    的頭像 發表于 08-25 10:28 ?5487次閱讀

    變頻器帶兩個電機怎么接

    在工業自動領域,變頻器(Variable Frequency Drive, VFD)是一種廣泛應用于電機調速的設備。它通過改變輸入電機的電源頻率,從而
    的頭像 發表于 08-25 10:21 ?4230次閱讀

    變頻器怎么改變頻率

    變頻器變頻率的過程是個復雜但至關重要的操作,它涉及到對電動機轉速的精確控制。以下是對變頻器如何改變頻率的詳細探討。
    的頭像 發表于 08-10 11:31 ?4026次閱讀

    變頻器頻率怎么調整?變頻器的使用條件有哪些?

    變頻器頻率怎么調整 變頻器要能正常運行,必須具備兩個基本上條件,就是頻率信號和運行信號,我們先來講第個條件,就是
    的頭像 發表于 07-25 08:46 ?4426次閱讀

    AB變頻器啟動頻率怎么調

    AB變頻器一種廣泛應用于工業自動領域的設備,它能夠實現對電機的調速、節能和保護等功能。在實際應用中,啟動頻率的調整是
    的頭像 發表于 07-19 14:28 ?1826次閱讀

    AB變頻器啟動有電流沒有頻率正常嗎

    不正常。AB變頻器一種廣泛應用于工業自動領域的設備,它通過改變電機的供電頻率來控制電機的轉速。在啟動過程中,電流和頻率的變化是衡量
    的頭像 發表于 07-19 14:06 ?2312次閱讀

    變頻器的參數調試方法有哪些?

    ? ? ? 變頻器一種將工頻電源轉換為頻率和電壓可調的電能控制裝置,廣泛應用于工業自動、電力系統、交通等領域。變頻器參數的調試是確保其正
    的頭像 發表于 06-23 15:29 ?3919次閱讀
    <b class='flag-5'>變頻器</b>的參數調試<b class='flag-5'>方法</b>有哪些?

    變頻器自鎖實現方法介紹

    在工業自動和電機控制領域,變頻器作為一種重要的電力控制設備,廣泛應用于各種設備的轉速和電機輸出功率的調節。在特定情況下,如緊急停機或故障發生時,確保設備和人員的安全,實現
    的頭像 發表于 06-20 11:35 ?1981次閱讀

    變頻器的參數調試方法有哪些

    變頻器一種將工頻電源轉換為頻率和電壓可調的電能控制裝置,廣泛應用于工業自動、電力系統、交通等領域。變頻器參數的調試是確保其正常運行和滿足
    的頭像 發表于 06-17 15:20 ?2587次閱讀

    PLC與變頻器的Modbus通訊方法

    在現代工業自動系統中,PLC(可編程邏輯控制)與變頻器之間的通信是至關重要的。這種通信使得PLC能夠實時監控和控制變頻器的運行狀態,實現
    的頭像 發表于 06-14 15:59 ?2282次閱讀

    變頻器如何同時控制多臺電機

    在現代工業自動領域中,變頻器因其能夠精確控制電機轉速和負載而成為不可或缺的電力調節設備。隨著生產規模的擴大和自動水平的提高,如何使變頻器高效、穩定地
    的頭像 發表于 06-11 15:03 ?3580次閱讀