Redshift 支持其他 GPU 渲染器中沒有的一組渲染功能,例如基於點的 GI、靈活的著色器圖、核外紋理和核外幾何!GPU 麵臨的挑戰之一是 內存管理 。
主要有兩個問題:首先,GPU 的內存資源有限。其次,不存在動態分配 GPU 內存的穩健方法。Redshift 必須在不同模塊之間劃分空閑 GPU 內存,以便每個模塊都可以在每幀開始時定義的已知限製內運行。Redshift 還分彆對多邊形和紋理使用 “幾何內存” 和 “紋理緩存” 。
此外,Redshift 需要 為光綫分配內存。 因為 GPU 是一個大規模並行處理器,它會不斷構建光綫列錶並將這些光綫分配給 GPU。我們可以一次性發送到 GPU 的光綫越多,性能就越好。例如,一個 1920×1080 的場景使用蠻力 GI,每像素 1024 條光綫,至少需要拍攝 21 億條光綫!這甚至不包括抗鋸齒、陰影等可能需要的額外光綫。將所有這些光綫都保存在內存中是不可能的,因此 Redshift 將工作分成“部分”並單獨 提交這些部分,因此我們隻需要在 GPU 上為單個部分提供足夠的內存。
最後,某些技術,如 輻照度緩存 或 輻照度點雲 ,在其計算階段需要額外的內存來存儲中間點。這些階段將産生多少點事先不知道,因此必須保留內存預算。當前版本的 Redshift 不會自動調整這些內存緩衝區,因此,如果這些階段生成的點太多,渲染將中止,用戶必須轉到內存選項並增加這些限製。
Redshift 如何對內存進行分區
從高級的角度來看,渲染器分配內存的步驟如下:
- 獲取可用的免費 GPU 內存
- 如果我們正在執行輻照緩存計算或輻照點雲計算,請為這些計算減去適當的內存(通常為幾十到幾百 MB)
- 如果我們使用輻照度緩存、光子貼圖、輻照度點雲或次錶麵散射,請為該內存分配空間
- 分配光綫內存
- 從剩餘的內容中,對幾何體(多邊形)使用百分比,對紋理緩存使用百分比
內存選項
在 Redshift 渲染選項中,有一個“內存”選項卡,其中包含所有與 GPU 內存相關的選項。這些是:
1.自動內存管理
此設置將讓 Redshift 分析場景並 確定如何 在光綫、幾何體和紋理之間分配 GPU 內存。啓用此設置後,這些控件將灰顯。我們建議 啓用此設置 ,除非您是高級用戶並且觀察到 Redshift 做齣瞭錯誤的決定(由於錯誤或其他類型的限製)。
2. 要使用的 GPU 內存百分比
默認情況下,Redshift 會保留 90% 的 GPU 可用內存 。這意味著所有其他 GPU 應用程序和操作係統將獲得剩餘的 10%。如果您在渲染期間運行其他 GPU 密集型應用程序並遇到問題,您可以 將該數字減少到 80 或 70 。另一方麵,如果您知道沒有其他應用程序會使用 GPU,則可以 將其增加到 100%。
3.GPU內存不活動超時
如上所述,Redshift 會保留一定百分比的 GPU 可用內存以便運行。保留和釋放 GPU 內存是一項昂貴的操作,因此 Redshift 將在有任何渲染活動(包括著色球渲染)時 保留此內存。 如果渲染活動停止 10 秒 ,Redshift 將 釋放此內存 。這樣做是為瞭讓其他 3d 應用程序可以正常運行。
4.輻照度點雲工作目錄預留內存
這是 輻照度點雲計算 期間的“工作”內存。默認的128MB應該可以裝幾十萬點。 如果在計算輻照度點雲期間 遇到渲染錯誤,則應增加此設置。請 在下麵 查看更多信息。
5.輻照度緩存工作目錄預留內存
這是 輻照度緩存計算期間的“工作”內存 。默認的128MB應該可以裝幾十萬點。如果在計算輻照度緩存期間遇到渲染錯誤,則應增加此設置。請看下文。
6. 最大 GPU 紋理緩存大小
一旦從空閑內存中減去保留的內存和光綫,剩餘的就會 在幾何體(多邊形)和紋理緩存 (紋理)之間分割。“百分比”參數告訴渲染器可用於紋理的可用內存百分比。
例子:
假設我們使用的是 2GB 的視頻卡,保留緩衝區和光綫之後剩下的是 1.7GB。紋理緩存的默認 15% 意味著我們最多可以使用 1.7GB 的 15%,即大約 255MB。另一方麵,如果我們使用 1GB 的視頻卡,在保留緩衝區和光綫之後,我們剩下 700MB,紋理緩存可以達到 105MB(700MB 的 15%)。
一旦我們知道紋理緩存可以使用多少 MB 最大值,我們就可以使用 “最大紋理緩存大小”選項進一步限製數量 。這對於具有大量可用內存的視頻卡很有用。例如,假設您使用的是 6GB Quadro,在保留緩衝區和光綫之後,您有 5.7GB 可用空間。其中 15% 是 855MB。很少有場景需要如此大的紋理緩存!如果我們沒有“最大紋理緩存大小”選項,您將不得不根據您使用的視頻卡不斷修改“百分比”選項。
使用這兩個選項 (“百分比”和“最大值”) 可以讓您指定一個有意義的百分比(通常是 15%),同時不會在具有大量空閑內存的視頻卡上浪費內存。
7. 最大 CPU 紋理緩存大小
在紋理數據發送到 GPU 之前,它們存儲在 CPU 內存中。默認情況下,Redshift 使用 4GB 的 CPU 存儲空間 。如果您在紋理密集的場景中遇到性能問題,請將此設置 增加到 8GB 或更高。
8.Ray保留內存
如果將此設置保留 為零 ,Redshift 將使用取決於著色器配置的默認 MB 數。但是,如果您的場景 在多邊形方麵非常輕量級 ,或者您正在使用具有 大量可用內存的視頻卡, 您可以為光綫指定預算並潛在地提高渲染性能。這在下麵自己的部分中進行瞭解釋。
調整輻照度點雲/輻照度緩存預留內存
唯一需要修改這些數字的情況是,如果您收到這樣的消息: 輻照度緩存點不適閤 VRAM。幀中止。請在內存選項中降低輻照度緩存質量設置或增加輻照度緩存內存預算
或者:輻照度點雲不適閤 VRAM。幀中止。請在內存選項中增加“屏幕半徑”參數或輻照度點雲內存預算
如果無法(或不需要)修改輻照度點雲或輻照度緩存質量參數,您可以嘗試將內存 從 128MB 增加到 256MB 或 512MB 。如果您已經為此使用瞭大量內存並且仍然收到此消息,這可能是因為場景有很多微細節,在這種情況下,建議考慮 使用 Brute-Force GI。
調整紋理緩存內存
當 Redshift 渲染時,應該會彈齣一個“反饋顯示”窗口。此窗口包含有關為各個模塊分配多少內存的有用信息。這些條目之一是“紋理”。該數字報告 CPU 必須通過 PCIe 總綫發送給 GPU 以進行紋理處理的 MB 數。最初它可能會說“0 KB [128 MB]”。這意味著“你的紋理緩存有 128MB 大,到目前為止你還沒有上傳任何數據”。
Redshift 可以成功渲染包含 韆兆字節紋理數據的場景 。它可以通過“迴收”紋理緩存(在本例中為 128MB)來實現。它還將僅上傳需要的部分紋理,而不是整個紋理。因此,當紋理距離較遠時,將使用較低分辨率版本的紋理(這些稱為“MIP 貼圖”)並且僅使用該 MIP 貼圖的特定圖塊。
由於這種迴收內存的方法,您很可能會看到 PCIe 傳輸的數字變得大於紋理緩存大小(顯示在方括號中)。大多數時候沒關係——在這裏重新上傳幾兆字節的性能損失通常沒有問題。但是,如果您看到“已上傳”的數量增長非常快,很快達到數百兆甚至韆兆字節,這可能意味著紋理緩存太小, 需要增加 。如果是這種情況,您將需要做一兩件事:
- 首先嘗試增加“最大紋理緩存大小”。默認為 128MB。嘗試 256MB 作為測試。
- 如果您這樣做並且反饋窗口中顯示的數字沒有變為 256MB,那麼您將需要增加“用於紋理緩存的可用內存百分比”參數。嘗試數字,例如 0.3 或 0.5
增加 Ray 保留內存
平均而言,Redshift 每 60MB 內存可以容納大約 100 萬個三角形 (在網格包含單個 UV 通道和每個頂點的切綫空間的典型情況下)。這意味著即使有幾百萬個三角形的場景也可能會留下一些可用內存(未用於幾何圖形)。該內存可以重新分配給光綫,如前所述,這將有助於 Redshift 嚮 GPU 提交更少、更大的工作包,在某些情況下,這對性能有好處。
確定場景的幾何圖形是否未充分利用 GPU 內存很容易:您所要做的就是查看 反饋顯示的“幾何圖形”條目 。與紋理緩存類似,幾何內存被迴收。如果您的場景足夠簡單(並且在渲染一幀之後),您將看到 PCIe 傳輸的內存明顯低於幾何緩存大小(顯示在方括號中)。例如,它可能如下所示:“幾何:100 MB [400 MB]”。在這個例子中,這意味著我們可以使用 300MB 並將它們重新分配給 Rays。
當前使用的光綫內存也顯示在“光綫”下的反饋顯示屏上。它可能會讀到類似“光綫:300MB”的內容。因此,在內存選項中,我們可以將“Ray Resevered Memory”設為大約 600MB。即,將我們的幾何體未使用的 300MB 添加到光綫使用的 300MB。
總結
以上就是呆貓帶來的關於Redshift最佳GPU內存優化技巧,有這方麵問題睏擾的用戶可以來看。運行3d軟件製作和渲染推薦使用 呆貓雲桌麵 。
呆貓雲桌麵 以華為雲為基座,異架構雲桌麵技術為基礎,提供高安全,零運維的雲端製作、團隊協同、資源共享等解決方案。將文件傳輸到呆貓雲盤,可多台機器同時打開渲染軟件,並發連接呆貓雲盤進行文件製作、實時渲染以及輸齣,節省時間,提高效率。
更多資訊繼續關注我,歡迎私信評論
責任編輯: