一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種同時(shí)解決目標(biāo)獨(dú)立光柵化和可變頻率的像素著色器的通用實(shí)現(xiàn)方法

集成電路應(yīng)用雜志 ? 來源:集成電路應(yīng)用雜志 ? 2020-07-14 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一種同時(shí)解決目標(biāo)獨(dú)立光柵化和可變頻率的像素著色器的通用實(shí)現(xiàn)方法

0 引言

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

多點(diǎn)采樣抗鋸齒是一個(gè)像素有多個(gè)采樣點(diǎn),來達(dá)到抗鋸齒效果。

目標(biāo)獨(dú)立光柵化是Direct11.3提出的新特性,旨在使Direct2D能夠?qū)鸥窕襟E從CPU移動(dòng)到GPU,同時(shí)仍然保留Direct2D抗鋸齒需求。抗鋸齒路徑的渲染將在GPU上進(jìn)行2次渲染。第一遍將把每個(gè)像素的覆蓋率寫入一個(gè)中間渲染目標(biāo)紋理。路徑將被鑲嵌成不重疊的三角形。該GPU將編程使用目標(biāo)獨(dú)立光柵化和添加劑混合在第一次通過。第一次使用的像素著色器將簡單地計(jì)算覆蓋掩碼中設(shè)置的比特?cái)?shù),并輸出規(guī)范化為[0.0,1.0]的結(jié)果。在第二次過程中,GPU將從中間紋理讀取數(shù)據(jù)并寫入應(yīng)用程序的渲染目標(biāo)。此遍歷將路徑顏色乘以第一次遍歷期間計(jì)算的覆蓋率。

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

一般來說在GPU上對(duì)這三種特性進(jìn)行支持需要不同的邏輯門。多點(diǎn)采樣抗鋸齒特性提出時(shí)間比較早,在很多GPU的功能上已經(jīng)涵蓋了,如何將目標(biāo)獨(dú)立光柵化以及可變頻率像素著色器這兩個(gè)特性在已經(jīng)支持多點(diǎn)采樣抗鋸齒特性的GPU上實(shí)現(xiàn)對(duì)架構(gòu)設(shè)計(jì)師提出了新的挑戰(zhàn)。

1 現(xiàn)有方案存在的問題

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

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

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

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

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

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

PS調(diào)用粒度我們用分?jǐn)?shù)表示,比如1/2表示2個(gè)pixel調(diào)用一次PS。除了表中列出的組合,其他的情況D3D12不要求支持。

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

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

2 算法設(shè)計(jì)

本文希望實(shí)現(xiàn)一種統(tǒng)一的算法能處理這三個(gè)不同的特性,達(dá)到簡化邏輯節(jié)省gatecount的目的。

在OM入口處增加兩個(gè)簡單的處理單元,一個(gè)處理單元根據(jù)Rasterizer的samplemode調(diào)整coveragemask和坐標(biāo);另一個(gè)處理單元根據(jù)PS的samplemode調(diào)整輸出的data。然后將經(jīng)過調(diào)整的coveragemask和color輸入到一個(gè)統(tǒng)一的邏輯單元,這個(gè)邏輯單元可以用一套邏輯處理所有MSAA,TIR, VRS情況。具體設(shè)計(jì)如圖2。

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

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

Raster mask能表示的RT pixel個(gè)數(shù):

rasterPixelNum=(maskWidth>>log2N)

x對(duì)齊規(guī)則:

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

((log2 rasterPixelNum)&1))

y對(duì)齊規(guī)則:

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

以Rasterizer到OM的帶寬是16bits為例,那么在不同MSAA模式下收到的pixel左上點(diǎn)坐標(biāo)和PS的color筆數(shù)如表4。

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

2.1 Processmask Unit

首先看Processmask Unit,這個(gè)模塊需要根據(jù)Rasterizer Samplenum.和OM RT Samplenum.來調(diào)整mask和pixel坐標(biāo)。綜合前文里關(guān)于TIR和VRS的內(nèi)容,Rasterizer Sample num.和OM RT Samplenum.只有表5所示的三種組合。

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

2.2 Down-sample

Rasterizer Sample num.是N,OM RT Samplenum.是1。假設(shè)Rasterizer輸出的mask為rasterMask,pixel左上點(diǎn)坐標(biāo)是(x,y)。

經(jīng)過Process mask Unit調(diào)整后輸出的mask為finalMask,其寬度和rasterMask相同,調(diào)整后的pixel左上點(diǎn)坐標(biāo)是(finalX, finalY)。

調(diào)整的方法用偽代碼表示如下。

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個(gè)sampledown-sample到1個(gè)samplemask。把Nbit的samplemask全部用或運(yùn)算最后得到1bit的pixelmask。再根據(jù)pixel左上點(diǎn)坐標(biāo)對(duì)pixelmask進(jìn)行移位。

調(diào)整pixel左上點(diǎn)的坐標(biāo),OM RT Samplenum.為1時(shí),16bit的mask是(4,4)對(duì)齊的,所以需要將表5-1???中Rasterizersamplenum.等于N對(duì)齊的坐標(biāo)調(diào)整成(4, 4)對(duì)齊的pixel坐標(biāo)。

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

2.3 Up-sample

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

假設(shè)Rasterizer輸出的mask為rasterMask,pixel左上點(diǎn)坐標(biāo)是(x,y)。

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

調(diào)整的方法用下面?zhèn)未a來表示。

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(tǒng)+y_offset*y_stride;

}

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

2.4 Processcolor Unit

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

PS是1/2samplemode,一個(gè)color復(fù)制成兩份轉(zhuǎn)成1samplemode。

PS是1/4samplemode,一個(gè)color復(fù)制成四份轉(zhuǎn)成1samplemode。

PS是1/8samplemode,一個(gè)color復(fù)制成八份轉(zhuǎn)成1samplemode。

PS是1/16samplemode,一個(gè)color復(fù)制成十六份轉(zhuǎn)成1samplemode。

經(jīng)過上述的轉(zhuǎn)化Unitive Unit會(huì)認(rèn)為PS 是MSAA 的Pixel frequency,然后進(jìn)行相應(yīng)的處理。設(shè)計(jì)的時(shí)候也可以根據(jù)Unitive Unit的具體實(shí)現(xiàn)將color復(fù)制更多份(和OM RT sample mode相對(duì)應(yīng)),使Unitive Unit認(rèn)為PS是MSAA的Samplec frequency。

3 結(jié)語:算法優(yōu)點(diǎn)

對(duì)于已經(jīng)支持MSAA 特性的GPU,如果想升級(jí)支持D3D11.3的TIR和D3D12的VRS,在OM模塊部分不需要設(shè)計(jì)全新的邏輯,可以對(duì)這兩種新的特性進(jìn)行巧妙的轉(zhuǎn)化,然后共用MSAA的邏輯處理單元。這樣既省去了復(fù)雜的邏輯設(shè)計(jì)和驗(yàn)證,也節(jié)省了gatecount。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 光柵
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    27953
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4930

    瀏覽量

    131011
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1094

    瀏覽量

    41159

原文標(biāo)題:一種同時(shí)解決目標(biāo)獨(dú)立光柵化和可變頻率的像素著色器的通用實(shí)現(xiàn)方法

文章出處:【微信號(hào):appic-cn,微信公眾號(hào):集成電路應(yīng)用雜志】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    VirtualLab Fusion應(yīng)用:光柵級(jí)次分析

    的,該對(duì)話框通過雙擊光學(xué)設(shè)置視圖中的相應(yīng)元件顯示。 通用設(shè)置 ?在“常規(guī)”選項(xiàng)卡中,您可以選擇分析透射或反射。 ?此外,您可以指定光柵分析輸出需要的文件。 ?級(jí)次收集:生成一種類型
    發(fā)表于 02-11 09:47

    VirtualLab Fusion應(yīng)用:光波導(dǎo)系統(tǒng)中光柵幾何結(jié)構(gòu)的優(yōu)化

    Fusion為這項(xiàng)任務(wù)提供了系列強(qiáng)大的工具,如:可以計(jì)算基本優(yōu)化函數(shù)(如均勻性和效率)的探測(cè),以及沿著布局的特定區(qū)域實(shí)現(xiàn)光柵參數(shù)平滑變化的可能性。后
    發(fā)表于 02-07 09:41

    光波導(dǎo)系統(tǒng)中光柵幾何結(jié)構(gòu)的優(yōu)化

    。 VirtualLab Fusion為這項(xiàng)任務(wù)提供了系列強(qiáng)大的工具,如:可以計(jì)算基本優(yōu)化函數(shù)(如均勻性和效率)的探測(cè),以及沿著布局的特定區(qū)域實(shí)現(xiàn)光柵參數(shù)平滑變化的可能性。后
    發(fā)表于 12-20 10:27

    匯川變頻器輸出頻率設(shè)置

    在現(xiàn)代工業(yè)生產(chǎn)中,變頻器已經(jīng)成為電機(jī)驅(qū)動(dòng)系統(tǒng)不可或缺的部分。匯川變頻器以其高效、穩(wěn)定和易于操作的特點(diǎn),被廣泛應(yīng)用于各種工業(yè)場(chǎng)合。 、變頻器
    的頭像 發(fā)表于 12-11 09:28 ?2854次閱讀

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

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

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

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

    abb變頻器遠(yuǎn)程模式頻率怎么設(shè)置

    介紹ABB變頻器遠(yuǎn)程模式下頻率的設(shè)置方法。 了解ABB變頻器的基本概念 在進(jìn)行遠(yuǎn)程模式頻率設(shè)置之前,我們需要先了解
    的頭像 發(fā)表于 08-25 10:28 ?6189次閱讀

    變頻器帶兩個(gè)電機(jī)怎么接

    在工業(yè)自動(dòng)領(lǐng)域,變頻器(Variable Frequency Drive, VFD)是一種廣泛應(yīng)用于電機(jī)調(diào)速的設(shè)備。它通過改變輸入電機(jī)的電源頻率,從而
    的頭像 發(fā)表于 08-25 10:21 ?4618次閱讀

    變頻器怎么改變頻率

    變頻器變頻率的過程是個(gè)復(fù)雜但至關(guān)重要的操作,它涉及到對(duì)電動(dòng)機(jī)轉(zhuǎn)速的精確控制。以下是對(duì)變頻器如何改變頻率的詳細(xì)探討。
    的頭像 發(fā)表于 08-10 11:31 ?4381次閱讀

    變頻器頻率怎么調(diào)整?變頻器的使用條件有哪些?

    變頻器頻率怎么調(diào)整 變頻器要能正常運(yùn)行,必須具備兩個(gè)基本上條件,就是頻率信號(hào)和運(yùn)行信號(hào),我們先來講第個(gè)條件,就是
    的頭像 發(fā)表于 07-25 08:46 ?4870次閱讀

    一種新型的硅基亞波長光柵耦合設(shè)計(jì)

    近日,天津大學(xué)精密儀器與光電子工程學(xué)院的光子芯片實(shí)驗(yàn)室與深圳大學(xué)合作,設(shè)計(jì)開發(fā)了一種新型的硅基亞波長光柵耦合,可以同時(shí)實(shí)現(xiàn)超高再現(xiàn)性、超寬
    的頭像 發(fā)表于 07-23 15:01 ?1169次閱讀
    <b class='flag-5'>一種</b>新型的硅基亞波長<b class='flag-5'>光柵</b>耦合<b class='flag-5'>器</b>設(shè)計(jì)

    變頻器com接口的接線方法

    變頻器一種將工頻電源變換為任意頻率、任意電壓的交流電源,以實(shí)現(xiàn)對(duì)交流電機(jī)的調(diào)速和控制的設(shè)備。變頻器的COM接口是
    的頭像 發(fā)表于 07-19 14:42 ?4266次閱讀

    AB變頻器啟動(dòng)頻率怎么調(diào)

    AB變頻器一種廣泛應(yīng)用于工業(yè)自動(dòng)領(lǐng)域的設(shè)備,它能夠實(shí)現(xiàn)對(duì)電機(jī)的調(diào)速、節(jié)能和保護(hù)等功能。在實(shí)際應(yīng)用中,啟動(dòng)頻率的調(diào)整是
    的頭像 發(fā)表于 07-19 14:28 ?1973次閱讀

    AB變頻器啟動(dòng)有電流沒有頻率正常嗎

    不正常。AB變頻器一種廣泛應(yīng)用于工業(yè)自動(dòng)領(lǐng)域的設(shè)備,它通過改變電機(jī)的供電頻率來控制電機(jī)的轉(zhuǎn)速。在啟動(dòng)過程中,電流和頻率的變化是衡量
    的頭像 發(fā)表于 07-19 14:06 ?2497次閱讀