2016/11/09

PhoenixFD optimization效能最佳化


編譯 / Hammer Chen
翻譯了幾篇跟phoenixfd效能最佳化的討論,大部分都跟splash與foam的算圖有關,因為這兩個影響算圖甚鉅。可是要產生寫實的海浪水花,這些splash與foam卻都是關鍵。



splash與foam的算圖時間
Teriander 問:我找不到方法減少算圖時間,當使用bucket算splash與foam  至少增加了10倍的算圖時間 也只有當bucket算到splash與foam的時候 有沒有可能讓splash與foam不要產生反射/折射 等等

Ivaylo Katev答:foam與splash真的會導致算圖時間大幅增加 很容易慢到無法接受 最好的方法是分開散圖 然後用合成的方式合在一起 但不一定可行

假設你必須要全部一起算 你必須要記住 會造成算圖時間很長的原因是算圖時需要的總射線的數量(rays count) 你可以在vray log看到這個數字
最常見的算圖時間耗費就是GI  強烈建議你避免用GI算泡沫或是煙霧 通常建議改用GI ambient light 或是用一些標準光 對於室外場景很有用 對於室內場景就要看狀況 但通常也可行
另外一項重要因素就是燈光類型 如果可能的話 建議用簡單的燈光(omni,directionsl,spot, 別忘了要勾選atmosphere shadowing) 不要用區域光 因為區域光會計算陰影的多個射線 簡單光源只會計算單一射線

另外一個耗時的因素是image sampler 你可以降低subdivisions的上限 如果算圖結果沒有雜訊的話 這樣可以加速個幾倍 因為vray的自動調整演算法的關係 它會把泡沫視為雜訊 會強制細分數量用到其上限

Teriander:感謝您的意見 將foam與splash分開算圖 然後做matting這個方法有幫助 包含取消GI也有用 我希望強調我把VRaySky放在Foam中的Environment 我的場景是以超高的解析度的HDMI照明 我猜這是超長算圖時間的原因 但是將"Environment"覆蓋到foam 與 splashes有幫助(我自己認為)

請問如何最小化記憶體的使用
wxyz問:我的場景一直超過記憶體的極限(9G)
有沒有什麼設定我可以自動減少記憶體的使用 而不需要減少grid解析度 檔案停在73格 模擬計算超過一個小時 當我重新載入場景要花很多時間 我應該減少grid然後載入?

Ivaylo Katev答:我看過你的場景了 以下是我的觀察
你的泡沫具有b2b interaction=8 這對於最新版的PhoneixFD是無意義的設定 如果你用了很厚的泡沫(例如啤酒) 建議用超過3000 如果不是就改用0 這個選項會讓模擬速度變慢 增加記憶體的使用
你的splash shader具有很多粒子來源 這也是為什麼你沒有渲染出來 重選來源可以修正這個錯誤

foam算的很慢
naik問:請問要怎樣可以提昇渲染液體與foam的速度 超級慢 我認為我應該有某個設定沒弄到 這只不過是很簡單的模擬 Grid Box + Cylinder + Liquid + Foam 沒什麼特別

ivaylo.ivanov答:foam particles的數量很重要 不是cells的數量 你可以把foam渲染成fog

我不認為500 000粒子有很多 游泳池的範例有更多的粒子 什麼東西讓你算突變面 你可以每個frame要算2-3分鐘 foam/splashes會產生過亮的顏色 會強迫讓image sampler使用其上限採樣(maximum samples) 你應該用fixed sampler檢查算圖時間

TSR_trix答:另外還有一個基本動作是檢查你的foam粒子是否用使用折射 如果你使用折射顯然會增加算圖時間 試著把粒子的陰影關掉
是否有使用動態模糊 將Adaptive subdivision sampler改成adaptive DMC可以改善

Ivaylo Katev答:真的 foam shader很容易就過載了 我的建議是先用最低的設定 然後慢慢提高品質 觀察如何影響算圖時間 這樣你會比較明白造成算圖慢的原因到底是什麼 也建議用image sampler測試算圖

似乎"Multithreaded"選項會讓速度明顯變慢 
ghiom3d問:我現在在用Phoenix2 beta 測試beer.max的範例場景
我勾選了multithreaded進行模擬 速度非常慢 我是用Corei7 920算 大概算了3小時
當我關閉這個選項 CPU只用了17% (開啟時會用到超過90%) 但是模擬速度變快了 大概只花20分鐘

那這個選項到底要幹嘛?
你們有計劃使用GPU openCL進行模擬計算嗎 就像blender那樣
這樣會比6x580gtx box要快

Ivaylo Katev答:這個選項預設是關閉的 因為當cpu備用在其他計算時會導致整體效能變慢 例如max 2012的viewport會一直更新 建議把它關掉
但是 你可以試著限制threads的數量 比總數的core少

當不使用vray時 你們會用什麼算圖
lzmihich問: 我發現Phoenix有兩個版本 一個是Scanline 另一個是Vray.

因為Phoenix是3dsmax的外掛 不是vray的外掛 我假定兩個算圖器都可以用

Ivaylo Katev答: Phoenix具有兩種算圖模式 一種是fire/smoke另外一種是liquid 火焰的部份適用於所有的算圖器 可以用標準的3dsmax atmosphere算圖
液體的算圖需要vray 因為Phoenix並沒有內建的mesher 
foam/splashes也是算成3ds max atmosphere 因此不需要V-Ray 但是會降低品質 因為不會計算reflection/refraction

phoenixfd for scanline與phoenixfd for vray兩者個差異點 還有gpu算圖器等問題
nildoe 問:哈囉 我們在考慮買Phoenix 但是目前主要的算圖器是Octane for max 目前知道可以用octane渲染phoenix meshes 但我不知道是否可以拿來渲染splash與foam 問這個是因為我稍微查了一下發現splashes 與 foam只能用vray 真的是這樣嗎

Ivaylo Katev答:splashes 與 foam可以經由其他渲染器算圖 只是會有以下差異
1. 以point mode模試算圖不會有問題 會跟vray算出來的一樣 但是你必須要檢查陰影 因為scaline的機制的不同有些照明不支援 最差的狀況scaline只能拿來算foam 然後用合成的方式合在一起
2. foam 與splash mode (用在特寫)不支援raytracing 無法計算反射與折射
3. foam shader如果以atmosphere mode模式計算 需要渲染器對atmosphere的支援 我沒試過用octane 最好下載demo試一下才知道

Foam的算圖時間超級久
stevesideas問: 我看了youtube的影片大家算圖時間大約幾分鐘內 可是我算的超級久

我在海面下有很多粒子 其實看不到 有沒有辦法不要算
有沒有可能用scaline渲染point foam
可否幫我加速算圖

Ivaylo Katev答:你可以使用subgroup的選項 只渲染水上面的粒子 但是很少這樣用 因為水下的foam對於寫實效果很重要
關於point shader與scanline 沒錯 可以用scaline算point shader
我確定你的場景的以加速算圖 我首要的建議是 不要用GI 如果你其他物件需要GI 你應該用合成 目前無法有效地排除foam物件計算GI 即使你取消foam物件的accept/generate GI還是沒辦法 這只會影響結果但不會讓算圖變快 我們目前在努力處理 但是當前合成是唯一可行的方案

stevesideas:沒錯 我發現GI會產生很多問題 我寄給你的檔案似乎無法使用scanline 當我切換過去max會當機 不確定這和material editor有關 不清楚為何我遇到這麼多問題


Ivaylo Katev答:或許你場景還有vray的物件(燈光或是天空材質 我不確定)
我知道你有很多問題 沒時間處理 你的模擬設定也不容易 我會替你準備基本設定 但我會改用flip solver 因此你必須下載nightly版 

渲染帶陰影的foam算的很慢
jstrob問:嗨
我試著渲染foam 我發現當渲染陰影時 速度變得超慢 沒有陰影算的很快 場景中有兩個方形的vray light 我的foam是splash模式 有沒有什麼建議讓foam的陰影算的快一點

Ivaylo Katev答:所有的area light都會用多個射線來計算陰影 預設使用256個燈光(這是其細分的平方根) 不只這樣 單一個攝影機射線會產生多個陰影計算的要求
你可以在vray messages log觀察效能問題 裡面有簡易的描述花了多少不同射線來計算這個影像 當你發現用了太多射線 建議你可以減少subdivisions或是其他技巧來減少射線數量

ivaylo.ivanov 答:陰影貼圖對於簡單的模型不好表現 我很懷疑你可以用這麼過時的方法來處理foam 兩盞方向燈加上陰影應該是可行的 小心使用area light因為foam比較像是volumetric而比較不像幾何體 Svetlin現在在測試foam的probabilistic shading 這對point shader好用 但是其他方法過於複雜可能產生過多雜訊

   foam的算圖最佳化
hammerbchen問:我現在計算一個燈塔場景 有大量的foam 但是算圖時間太久 (1024X768 resolution, 5~8hrs per frame) 我的電腦配備HP ZBook 15u G2 laptop, Intel Core i7-5500U 2.4GHz, 16GB DDR 3L.

我的目標是算單張圖 減少foam的顆粒感 讓它像絲一般細 以下是我的參考圖 與目前的算圖效果
我已經試過
  • 減少Foam rate to 1.0, Pattern Stregnth = 5
  • 用Point mode算圖 不用bubbles
  • 關閉GI 只用dome light做為fill light
  • 不勾選image filter
  • Image sampler/adpative, min shading rate = 2, Min Subdi =1 Max Subdi = 3
  • Reflec/Refrac Overide depth = 2
  • 關閉motion blur
如果有麼意見或是技巧就太棒了

Ivaylo Katev答:你可以試試把foam 分開來算圖 如果foam與water同時算 跟單獨算foam與water要多花很多時間 為了不要失去water對foam的染色效果 你可以設定foam shader中的tint option 這個功能讓你可以替foam染色 即使沒有water的geometry存在下

Svetlin Nikolov答:首先 我想到的建議
請下載nightly版 PHXFoam 用point mode 應該可以加速個30-40%
foam 與liquid分開算 你也可以利用subgroups的選項 將水面上與水面下的foam分開 (只渲染其中一個) 這可以明顯地加速算圖 缺點是需要事後合成
Cheers!

模擬很慢


lightpixel 問:我目前在模擬河流 很失望因為模擬效能很慢 我的電腦是Xeon 10核心
模擬開始的時候是1,3 mio cells/sec 最後掉到0,2 mio cells/sec. 我關閉了所有的preview選項 速度會快一點點 但是當更多的splashes 與foam產生出來 模擬的變得越來越慢 最後到800frame的時候 變成模擬速度只有0.1 mio cells/sec

Ivaylo Katev答:你的b2b interaction設的太高了 即使是具有大量泡沫的啤酒也只需要設定到200-300 對於河流30就夠了 這個參數會耗費大量計算 最好越小越好 cells/sec對於液體計算不算有用的資訊 以你的電腦效能預期應該是half mio liquid particles per sec


[相關資訊]

No comments: