虛幻4編譯著色器很慢進不去
『壹』 虛幻4渲染編程(Shader篇)【第十七卷:Geometry shader in UE4】
在進行GI相關的研究時,我利用了UE4的GeometryShader功能,以繪制一些Debug輔助線。盡管UE4自帶了畫輔助線的介面,我還是研究了GeometryShader,這篇文章便是記錄了這次探索。
值得注意的是,GeometryShader僅在SM4或更高版本的硬體上支持,因此移動游戲開發者可能無法利用這一功能。盡管GeometryShader能夠減輕帶寬壓力,但對光柵器的負載仍然存在。
在UE4中,Input Assembler從頂點緩沖區接收頂點數據,並將其轉換為規范格式。這些數據隨後進入頂點著色器。如果頂點著色器輸出包含SV_POSITION語義,則硬體會自動進行歸一化處理,以便在光柵階段使用。若管線中綁定了幾何著色器,數據還將進一步經過處理。
以下是我使用的GeometryShader代碼示例,`[maxvertexcount(n)]` 是屬性語法的一部分,用於指定幾何著色器每次調用時允許輸出的最大頂點數量。`triangle`用於指定輸入圖元類型,支持的關鍵字包括但不限於 Line 和 Triangle。
針對不同的圖元類型,如線(Line),參數`input`可由用戶自定義。其元素數目取決於之前聲明的圖元類型。
輸出方面,輸出對象需標記為`inout`類型,並作為類模板使用。模板參數指定了輸出類型。流輸出對象具有特定的方法和功能。
通過細分模型數據,實現的效果如下圖所示。實現步驟包括:在主渲染管線邏輯中編寫VS和PS,創建`MyGS.cpp`和`MyGS.usf`文件並生成。然後,在延遲管線渲染器中添加渲染函數。接著,在渲染主函數中調用渲染動作。在`MyGS.cpp`中實現VS和PS的C++類和繪制函數。最後,完成Shader部分的代碼。
完整代碼包含在渲染器.h、渲染器主渲染函數.cpp、`MyGS.cpp`和`MyGS.usf`文件中。通過這些步驟,GeometryShader可以有效減少頂點數據傳輸,降低帶寬壓力,實現更高效的數據處理。
總結與展望,GeometryShader在UE4中展現出強大的潛力,適用於需要精細控制和優化的場景,例如繪制輔助線或進行復雜圖形處理。享受這一功能帶來的高效與便捷。
『貳』 ue4正在編譯著色器是什麼意思
這是因為UE不太支持中文輸出。在UE里配置的Java編譯命令,編譯後再UE輸出窗口輸出的內容,直接用CMD窗口編譯能夠輸出中文的編譯信息。《虛幻4引擎》簡稱ue4是由Epic Games公司推出的一款游戲開發引擎,相比其他引擎,虛幻引擎不僅高效、全能,還能直接預覽開發效果,賦予了開發商更強的能力。虛幻引擎4在大約2分半的Demo演示中,將其強大的功能發揮得淋漓盡致。與之相關的游戲有《連線》《絕地求生:刺激戰場》等等。