影響3ds Max渲染速度的因素

最近有人跟我反映,換了雙路至強,感覺渲染也沒比3770K快多少,問題出在哪裏?

我現在做了一些分析測試,相信論壇裏也有不少做3D的設計師,歡迎大家一起討論。
先以這個爲例:國外一個數據量較大的帖子:http://www.evermotion.org/vbulle ... 1b13443daac38300f65

帖中的素材始於06年,3DsMax 6版本,一直用到現在,都可以正常工作,並且可以用於測試。

素材下載:  benchmark.rar (6.43 MB, 下載次數: 25) 
124741klqs6b6118lbevlz.png 

從Mental Ray中渲染器的設置,我們發現Mental Ray採用的是32位浮點運算,由CPU來完成。可以指定渲染塊大小,所以我在數據表最後特意加入了塊大小這列。

通過分析渲染過程中的CPU工作狀態,我們得知:由於渲染是分塊進行的,不同的塊內需要着色的複雜程度、光照、細節紋理都不一樣,所以渲染速度也會大不相同。系統會分配CPU各個線程給不同的塊,速度快的線程就進行下一次的分配,繼續渲染下一個塊。

通過對6950X運行上述例程渲染過程的觀察,我們發現圖中純色部分佔了很多,這些部分渲染會非常快,而車體部分元素較爲複雜,渲染較慢。默認設置下要渲染的圖像大小隻有800x600像素,打開Mental Ray,發現默認設置的渲染塊大小就有128x128像素,在十年前CPU還處在單核心時代那幾個線程來講還算合理,對於現在的CPU動不動幾十個線程來講,實在太大了,計算一下長和寬,基本上7*5=35個線程就可以排滿。這就導致分配到純色部分渲染塊很快結束了,然後等待車體部分的渲染,而車體部分的渲染只由分配到那部分的幾個線程進行,造成了大量的資源閒置。如果你的CPU超過35個線程,在默認狀態下有些線程就分配不到塊,直接就不工作。
151500lvuzg5jxst3wgrug.png 
通過修改渲染塊邊長設置爲32,我們發現6950X的測試成績比默認的邊長128提高了許多,從3分鐘以上直接提升至1分37秒,幾乎是100%的速度提升。再分別測試16、8、4的塊大小,發現成績出現比較有意思的先快後慢的變化趨勢,在渲染塊邊長設爲16時達到最快。
160803abhqxlbhabggbqhh.jpg 

綜合來看,我認爲,如何在現有硬件基礎上最大化渲染效能,還需要這樣優化軟件設置:

1、看渲染的圖像元素分佈情況。例如本文中所用的悍馬案例就是典型的分佈不均勻的,不同線程渲染速度會差很多,因此需要有足夠的線程來渲染元素複雜的部分,建議優先考慮減小渲染塊邊長以避免資源閒置;如果元素分佈較爲均勻,各線程渲染速度差不多,建議在資源充分利用的前提下優先考慮增大渲染塊邊長,減少線程分配次數。

2、在1的基礎上,根據自己的CPU線程數設置渲染塊大小,減少線程空置的時間。對於本例來說,800x600的分辨率,8個線程可在渲染塊邊長爲32像素時發揮最大效能,而20個線程在渲染塊邊長爲16像素時速度達到最快。如果渲染圖片尺寸加大,那麼渲染塊尺寸也可以同步放大。

3、根據渲染圖的分辨率設置渲染塊邊長,在保證資源充分利用的基礎上,儘量增大渲染塊邊長以減少線程分配次數。

4、對硬件來說,提升線程數的性能收益大於提升單線程效率,通過超頻的手段提升CPU頻率以加快單線程效率,只能是在現有硬件基礎上進一步挖掘潛力,需要量力而行。

5、3DsMax軟件版本:根據反饋的測試數據情況來看,2010之前的版本渲染速度普遍較快,之後的版本會比較慢,原因還有待進一步研究,如果只是修改了默認的塊大小,那就可以通過上述方法自己修改優化回來。但我認爲不要道聽途說所謂的哪個版本最好用,自己用得慣的就是最好的。

以上是我的一些分析情況,歡迎PCEVA裏做3DS的設計師一起討論。保定整形醫院提供


3ds Max渲染速度


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章