第5篇 Shader的組織和優化 - Unity 3D ShaderLab開發實踐
阿新 • • 發佈:2021-09-15
第5篇 Shader的組織和優化 - Unity 3D ShaderLab開發實踐
chapter 30 shader的組織和複用
1 通過cginc檔案實現複用,可以定製自己的cginc檔案,然後通過#include包含進來,實現shader程式碼的複用。
2 可以通過UsePass實現複用:
Shader "Test" {
SubShader {
UsePass "Test/My"
}
}
3 定義自己的Shader關鍵字,執行時更改關鍵字改變shader行為
shader程式碼如下:
指令碼中的程式碼如下:
chapter 31 必須知道的渲染概念
- 逐點計算:在vertex函式中進行的計算就叫做逐點計算;
- 逐畫素計算:在fragment函式中進行的計算叫做逐畫素計算,和物體在螢幕上的大小相關;是shader的計算和渲染優化的重點;
- 上述兩個方法選擇:儘量把計算移動到vertex函式中;
- draw call:CPU為GPU準備渲染資料,並指令GPU進行一次渲染的操作(是重量級的);一個Draw Call的消耗還要具體看Draw Call的內容;
- Batching的概念和Unity為優化DrawCall所做的工作:通過把數個或數百個簡單的、共用同一材質的物體合併為一個mesh。Unity Draw call batching小結_圖形學和遊戲開發小學生-CSDN部落格
- 利用渲染佇列,後渲染的物體儘量有更多的範圍被遮擋;
chapter 32 基於渲染路徑的優化
一定不要在ForwardAdd中計算除了_WorldSpaceLightPos0之外的任何光源,這是非常耗時的事情。
針對Deferred渲染路徑,它必然是逐畫素進行的。
chapter 33 移動平臺上的優化
對於tex2D/texCUBE指令,在移動平臺上,一個讀取貼圖的指令和一個普通的數學運算指令消耗大概相差至少一個數量級;在PC平臺,這個差別更大,大概在兩個數量級以上。
對於mipmaps的選項,如果遊戲是3D,一定要開啟mipmaps選項。慎用後期效果,慎用透明效果。
版權說明作者: grassofsky
出處: http://www.cnblogs.com/grass-and-moon
本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出, 原文連結 如有問題, 可郵件([email protected])諮詢.