爆顯示記憶體似乎也沒有甚麼影響... - 3C

Table of Contents


顯示卡的記憶體是這樣分配的


|XXXXXXXX| (假定1GB)

**
顯示卡自己保留 比如說跟driver互相傳遞的buffer,啟動顯卡
資源分配的有的沒有的...沒有規定會做多大 有的卡可能不太大
不過如果你想保留512MB給自己用也不是不行

++
每次啟動3D的時候 基本的buffer例如frame buffer,double buffer,z buffer
放置vertex的buffer,放shader code的buffer等等

---------
貼圖使用


一般用軟體看顯示記憶體用量,可能是**++--------或者是++--------
的總和 看軟體怎麼偵測.

但是,--------是應用程式所準備好 所有貼圖的所有"尺寸(MIP-MAP)"


真正影響效能的 是--------中那些會被最近的frame所讀取

如果已經很久沒讀取了 基本上可以放在主記憶體之中,這是AGP顯示卡以來
的基本功能,所以,--------得總和大於顯示記憶體總量也沒甚麼


為甚麼--------不會每次都讀取到?

基本上有幾種可能


1.貼圖種類不同 像是假設有冰山 有火山
那你看不見其中一種的時候 也不會讀取他的貼圖
這就和視角以及場景有關

2.貼圖只用到其中幾個尺寸

MIP-MAP是由最小2*2開始,4*4,8*8....一直到N*N
都準備好,要用到的時候會挑x或者y長度最接近的一個
送到貼圖filter去.

如果解析度比較低 因為MIP-MAP會挑選解析度相近的
所以會傾向選擇比較小的 所以這個frame的貼圖總用量也會相應變小

怎麼說?假設2560*1440,占了螢幕的1/10要選一個貼圖 大約會
 選到512*512的,如果是1280*720 就應該是選到256的.

 不過即使是高解析度這個仍然可以調整,這個參數叫做LOD(Level of details)
Bias.就是跟標準的尺寸比起來 你想要傾向選較小或者是較大的貼圖
選擇小一號的就會只需要1/4的記憶體動態用量跟頻寬

這個不影響貼圖使用的總量 但是會影響你有多大的顯示記憶體
 可以跑順


因此在這個例子,"高"的2GB貼圖可能
(h表示常用)

2560*1440

hhhhhh--

1920*1080
hhhh----

1280*720 or LOD =-1
hh------


真正影響效能的量就是**++hh三種的總和

但是開放場景的話 貼圖的變化也會很大
那麼活動的總量就可能遠比你想像的還要高了



--

All Comments

Gary avatarGary2016-08-14
先推不然怕人說看不懂
Doris avatarDoris2016-08-15
不管怎樣,先推就對了
Donna avatarDonna2016-08-20
看到帳號先推再說
Anonymous avatarAnonymous2016-08-20
先推再說
William avatarWilliam2016-08-23
認真看不懂 我資工菜鳥
Jack avatarJack2016-08-24
不要擠我先推
Genevieve avatarGenevieve2016-08-29
推詳細教學 很多東西在腦中是有點模糊的印象
這篇這樣就說得很清楚了
Daniel avatarDaniel2016-09-01
不管怎樣,先推看不懂 看完還是不懂
Rachel avatarRachel2016-09-04
不管! 先推再說 所以我知道3.5G>4G
Catherine avatarCatherine2016-09-08
完蛋了 看不懂 XD
Sierra Rose avatarSierra Rose2016-09-11
好奇想問 framebuffer 讀的機會高嗎 XD
George avatarGeorge2016-09-13
LODbias是用來調整貼圖銳利度顆粒感
Elvira avatarElvira2016-09-18
framebuffer讀取機率很高,因為半透明
非讀不可, shader要加一行。
Blend SrcAlpha OneMinusSrcAlpha
Regina avatarRegina2016-09-21
意思是 新顏色x透明度+舊顏色x(1-透明度)
Skylar Davis avatarSkylar Davis2016-09-25
完了我只看得懂Baffet...咦!?
Sierra Rose avatarSierra Rose2016-09-25
新畫的pixel跟原本buffer中的pixel就混合了
Harry avatarHarry2016-09-28
frame buffer讀寫是所有VRAM操作最耗頻寬
Catherine avatarCatherine2016-10-03
比貼圖影響還大,因為材質能硬體解壓縮
Audriana avatarAudriana2016-10-03
但FrameBuffer只能用低效DeltaColor壓縮
材質貼圖卻大部分可以破壞性壓縮。
Joe avatarJoe2016-10-06
只要4~8bit就能儲存24~32bit Texel
Faithe avatarFaithe2016-10-10
您顯卡系?
Iris avatarIris2016-10-14
推不然怕人說看不懂
Ethan avatarEthan2016-10-14
LodBias的作弊是把材質快取命中率提高。
其實卡上存放貼圖沒有減少。
Ida avatarIda2016-10-17
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃推分享
Franklin avatarFranklin2016-10-20
但由於它不抓例如512那層而去抓256
Susan avatarSusan2016-10-25
貼圖變糊但材質快取就更容易命中
命中時,材質頻寬需求是0
Brianna avatarBrianna2016-10-26
從內部快取就找到=不必讀外部VRAM
Carolina Franco avatarCarolina Franco2016-10-30
所以顯卡繪圖效率不受外部材質頻寬限制
達成不公平的分數。
David avatarDavid2016-11-01
你4不4在老黃手下工作
Annie avatarAnnie2016-11-02
嗯嗯嗯跟我想的差不多.......啊你說什麼?
Kama avatarKama2016-11-04
沒有呢 不過我今天看104,nvidia在台灣竟然在找
研發替代役做Deep Learning
Ingrid avatarIngrid2016-11-08
LodBias是不影響貼圖存放位置。
DDS檔把所有Mipmap放在同一個檔了。
每張圖只有全放或不放在顯卡記憶體上
Eden avatarEden2016-11-10
biad影響到只是讀取所需頻寬,
Olivia avatarOlivia2016-11-14
不會有只有某層mipmap擺不同記憶體情形
Delia avatarDelia2016-11-14
不管用到哪一層mipmap,都是同一個
tex2D sampler對應一張DX的DDS材質
Elma avatarElma2016-11-15
推jk大
Linda avatarLinda2016-11-18
先推不然怕人說看不懂
Rosalind avatarRosalind2016-11-20
嗯嗯 我本來也想發這篇文的 感謝jk大幫發
Jake avatarJake2016-11-22
有些引擎有個功能是強制把mipmap用到
1x1那最小一層,給開發者測試貼圖效能用。
每張貼圖變成1pixel,所以快取命中率100%
Bethany avatarBethany2016-11-23
嗯哼,你以為我看不懂嗎? 我真的看不懂 Orz
Sarah avatarSarah2016-11-28
然後就能看效能有多大改變。
Isabella avatarIsabella2016-11-29
我終於看懂一篇了
Frederic avatarFrederic2016-12-01
我發現我少講讀回 system ram 這件事 orz
Christine avatarChristine2016-12-04
blending 要讀 pixel 沒錯,但是有必要過 bus ?
Leila avatarLeila2016-12-06
你那篇講的是用GPU測量mipmap用到哪層
它開頭引用另一篇gem1文章的一句話
Do your users ever get to see your highest
mip level? If not...但改寫了後面那一句。
consider scaling back size of your textures
這才是原文。意思是用不到就縮小。
Emily avatarEmily2016-12-08
長知識~~
Robert avatarRobert2016-12-10
如果你測試發現512x512從來沒被使用上
不如縮成256x256....效果相同且省容量。
Necoo avatarNecoo2016-12-11
這在10年前是一種簡易最佳化。
目前其實不太重要,因為顯卡級距越拉越大
Vanessa avatarVanessa2016-12-14
HD530/GT210用不上的最高mipmap
對跑4K的TitanX可能還嫌太糊了。
James avatarJames2016-12-19
不過在固定解析度封閉平臺還是用的上
例如大型電玩。螢幕顯卡都是固定配置
Thomas avatarThomas2016-12-20
畫面只會顯示250pixel寬的東西,用到
512寬的素材也沒機會顯示lv0的mipmap
Candice avatarCandice2016-12-21
家機通常也是固定解析度,即使有伸縮也不大
Zanna avatarZanna2016-12-23
咦但是我記得貼圖層,在主記憶體和顯卡記憶體裡面的
Vanessa avatarVanessa2016-12-24
Edward Lewis avatarEdward Lewis2016-12-25
關係,有點像CPU那邊主記憶體與L快取的關係
Enid avatarEnid2016-12-27
Mipmap我沒看過引擎去丟棄,因為不合邏輯
Ida avatarIda2016-12-29
趕快推 不然別人會以為我看不懂
Callum avatarCallum2017-01-02
通常都是直接在loading就縮放
James avatarJames2017-01-02
mipmap用到哪一層是pixel shader已經在算
才決定的,CPU或驅動根本無法事先知道
Susan avatarSusan2017-01-04
都是中文 都看不懂 @@
Enid avatarEnid2017-01-05
摸幾年繪圖領域的東西,就不得不懂...
GPU GEM1 & GEM2是古董級的書了。
Charlotte avatarCharlotte2017-01-09
裡面一堆古董架構與舊時代組語shader
拿來蓋泡麵還算堪用。
Susan avatarSusan2017-01-12
都是中文 卻看不懂
Eden avatarEden2017-01-15
欸?你們看不懂嗎?不會吧!?怎麼和我一樣
Caroline avatarCaroline2017-01-17
沒有必要看懂,知道結論就行了,結論是……
Agatha avatarAgatha2017-01-21
結論是看不懂QQ
Victoria avatarVictoria2017-01-24
只好再度承認看不懂了
Skylar Davis avatarSkylar Davis2017-01-26
這啥? 中文?
Olivia avatarOlivia2017-01-29
連教主都看不懂 我就放心惹
Daniel avatarDaniel2017-02-03
居然連教主也看無ob'_'ov
Sierra Rose avatarSierra Rose2017-02-04
原po記憶體專家
Victoria avatarVictoria2017-02-08
連教主都看不懂 那就代表這公司請對人惹
Victoria avatarVictoria2017-02-08
難道jk也是兩家某一家的lol...
Ivy avatarIvy2017-02-09
教主都看不懂,我們鄉民Orz
Blanche avatarBlanche2017-02-12
Annie avatarAnnie2017-02-13
太專業惹,只能推QQ
Elma avatarElma2017-02-17
vertex 跟 texture 一樣是開 buffer 記憶體幹嘛分區
Emma avatarEmma2017-02-20
mipmap 本來就整張上,它是去雜訊不是要省空間
Frederica avatarFrederica2017-02-22
只是說支援偷吃主記憶體,你也不知道他放什麼
Odelette avatarOdelette2017-02-27
vulkan 以後這些要自己管,誰會想撕開 mipmap....
Elizabeth avatarElizabeth2017-02-28
看不懂....Orz
Iris avatarIris2017-03-04
實際上還是要看繪圖引擎的資源管理才知道
Noah avatarNoah2017-03-08
每個字我都看得懂 連起來就...
Poppy avatarPoppy2017-03-09
看不懂只好推了
Zenobia avatarZenobia2017-03-13
快推不然會被知道看不懂
Charlotte avatarCharlotte2017-03-16
這篇算是有把我的意思大致表達出來,給你80分
Ivy avatarIvy2017-03-18
總之我看不懂
Ethan avatarEthan2017-03-22
jk神 o(_ _)o
Ophelia avatarOphelia2017-03-22
結論是螢幕如果大或解析度高需要大量記憶體?
Dinah avatarDinah2017-03-23
所以jk跟kuma誰說的是對的?
Ida avatarIda2017-03-27
支持JK大 老實說太專業看不大懂
Ina avatarIna2017-03-31
資源管理是繪圖引擎在管的,如果你顯卡自己想管,
問題會很嚴重,因為GPU根本不知道下個frame
要顯示什麼。自以為mipmap用不到,
但下個frame鏡頭就突然拉近……完蛋。
Selena avatarSelena2017-04-01
講中文很難?QQQQQQ
Eartha avatarEartha2017-04-03
兩位都是人才
Jake avatarJake2017-04-07
知道每pixel使用哪一層mipmap已經是 rasterization
階段
Una avatarUna2017-04-12
一個優化的腳色往往身上就有不同mipmap...
Carol avatarCarol2017-04-16
因為開發者會對重點部位用較大的texel area
比如臉的texel用的最密集,手腳較稀疏。
Mason avatarMason2017-04-20
再全身包起來,以省draw call。。
Liam avatarLiam2017-04-24
當shader用tex2d(map,uv)指令讀貼圖,
TMU硬體才即時根據pixel/texel對應比例決定最適mipm
ap
Hedwig avatarHedwig2017-04-28
硬體完全沒法事先知道哪層mipmap不會用到。
Ingrid avatarIngrid2017-04-28
只能當下發現要用哪一層mipmap。直接去抓。
Kelly avatarKelly2017-04-28
硬體virtual address不用來減少卡上存取貼圖量
實際上要跑快還是全體mipmap都搬到VRAM上。
不然效率很差,要準確預測那些用不上,
只能依靠3D engine的virtual texture技術。
引擎才知道接下來要點什麼菜,可以預先備料。
Blanche avatarBlanche2017-05-02
VirtualTexture/page講的mipmap/tile,
與lodbias講的mipmap則已經是不同東西了
Carol avatarCarol2017-05-05
VirtualTexture本身是大到例如64K x 64K這種變態siz
e
遠超過正常貼圖(4K以下), 那是屬於引擎的軟體做資
源管理。
Tristan Cohan avatarTristan Cohan2017-05-09
專業文推..意思是只能先全抓在慢慢剔除不用算的?
Mason avatarMason2017-05-14
先推不然會被人以為看不懂
Charlie avatarCharlie2017-05-15
不推不然會被人家以為有看懂 XD
Callum avatarCallum2017-05-17
推就對了
Gilbert avatarGilbert2017-05-21
引擎資源管理常叫streaming texture之類
通常固定VRAM留一份低解析mipmap版本。
低解析版要多低則是參數可變動的設定。
然後高解析版在引擎快要需要時,送到卡上。
但你移動快速時有可能發生popping.
因為來不及把高解析版送到,只好先用
低解析,然後過一會兒突然變清楚。
但所有引擎預設貼圖都不是streaming
那些貼圖適合streaming則是屬於資源最佳化
如果streaming還是爆記憶體怎摸辦了?
以autodesk新推廣的stingray引擎為例。
他會把似乎沒有使用的貼圖移除,再放新的
Leila avatarLeila2017-05-25
如果連這招都不夠,則常使用的貼圖也降級。
Andrew avatarAndrew2017-05-29
基本一分錢一分貨,不必要的搬移越少越好。
streaming技術是讓你1~8GB都能全開。
但顯卡記憶體還是得持續越來越大。
Harry avatarHarry2017-05-31
否則效率與畫質會被拖累。
但也不用大到用不完的程度,浪費錢而已。
Lydia avatarLydia2017-06-03
材質雖然年年提升,但顯示卡生命週期相對短。
Aaliyah avatarAaliyah2017-06-07
低階卡Ram少,但它性能低,
跑未來遊戲也只能越開越低解析。
材質量的成長被低解析省的記憶體彌補了
Frederica avatarFrederica2017-06-09
不另回一篇嗎XD
Sandy avatarSandy2017-06-11
我moptt手機用回文都會死當....
Sierra Rose avatarSierra Rose2017-06-13
該換PiPTT了
Sierra Rose avatarSierra Rose2017-06-14
該換JPTT了
Belly avatarBelly2017-06-18