天天看點

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

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

我現在做了一些分析測試,相信論壇裡也有不少做3D的設計師,歡迎大家一起讨論。

先以這個為例:國外一個資料量較大的文章:http://www.evermotion.org/vbulle ... 1b13443daac38300f65

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

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

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

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

通過對6950X運作上述例程渲染過程的觀察,我們發現圖中純色部分占了很多,這些部分渲染會非常快,而車體部分元素較為複雜,渲染較慢。預設設定下要渲染的圖像大小隻有800x600像素,打開Mental Ray,發現預設設定的渲染塊大小就有128x128像素,在十年前CPU還處在單核心時代那幾個線程來講還算合理,對于現在的CPU動不動幾十個線程來講,實在太大了,計算一下長和寬,基本上7*5=35個線程就可以排滿。這就導緻配置設定到純色部分渲染塊很快結束了,然後等待車體部分的渲染,而車體部分的渲染隻由配置設定到那部分的幾個線程進行,造成了大量的資源閑置。如果你的CPU超過35個線程,在預設狀态下有些線程就配置設定不到塊,直接就不工作。

通過修改渲染塊邊長設定為32,我們發現6950X的測試成績比預設的邊長128提高了許多,從3分鐘以上直接提升至1分37秒,幾乎是100%的速度提升。再分别測試16、8、4的塊大小,發現成績出現比較有意思的先快後慢的變化趨勢,在渲染塊邊長設為16時達到最快。

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

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

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

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

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

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

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

3ds Max, 渲染, 速度

繼續閱讀