Unity著色器基礎 標籤和渲染狀態

2021-09-07 15:53:42 字數 670 閱讀 5053

前言:一開始入門寫著色器的時候主要關注於頂點著色器和片元著色器裡的內容,可後來發現總是會在標籤和渲染狀態設定時掉進坑里,這裡就索性參考官方文件以及其它前輩的部落格好好整理一下。

subshader中定義了一系列pass以及可選的狀態--rendersetup和標籤設定--tags。每個pass定義了一次完整的渲染流程,如果pass數目過多,會造成渲染效能的下降。因此我們應該使用最小數目的pass。狀態和標籤同樣可以在pass宣告,但是如果在subshader中進行了設定,那麼將會應用於所有的pass,類似於「全域性變數」。

queue:控制渲染順序,指定該物體屬於哪乙個渲染佇列。 tags

rendertype:對著色器進行分類,例如這是乙個不透明或透明的著色器等。 tags

rendertype所有型別

rendertype以及replacementshader

lightmode:定義該pass在渲染流水線中的角色,如"lightmode"="forwardbase"

狀態設定[rendersetup]:常見的渲染狀態設定選項,

cull: cull back/front/off 設定剔除模式:剔除背面/正面/關閉剔除

ztest: 設定深度測試時使用的函式

zwrite: zwrite on/off 開啟/關閉深度寫入

blend: 開啟並控制混合模式

著色器基礎

glsl基本型別 float 32位 double 64位 int 有符號二進位制補碼的32位整數 uint 無符號的32位整數 bool 布林值 儲存限制符 const 必須在宣告時就初始化,唯讀型別,編譯時常量 in 著色器階段的輸入變數 out 輸出變數 uniform 必須定義為全域性變數,...

OpenGL著色器程式解析 著色器基礎

部分內容 於 現代opengl渲染管線嚴重依賴著色器來處理傳入的資料。如果不使用著色器,那麼用opengl可以做到的事情可能只有清除視窗內容了,可見著色器對於opengl的重要性。在opengl 3.0版本以前 含該版本 或者如果你用到了相容模式 compatibility prof?ile 環境,...

unity水面波紋著色器

unity水波紋 轉shader custom animtextureshader 資源圖 numtextiles num tex tiles vector 4,4,0,0 瓦塊的數量 4 4 replayspeed replay speed float 4 紋理移動速度 color color c...