艱難的shader系統

2021-08-22 13:52:18 字數 1023 閱讀 5595

其實shader系統的設計已經開始好長時間了。因為shade的拖累,整個渲染器除了能清屏以外什麼都幹不了。我的目標是設計乙個完全可動態生成shader**,卻又不至於落入shader**是預定義死的死板套路中。一開始發現比較簡單,其實實現起來卻非常難。最近研究mental mill,也沒什麼心得,還是把最近的一些需求和初步想法寫出來,也許會有些收穫,以下便是今天晚上的想法,最近沒時間出去拍片,白天累的要死,心情也佳。看來思維水平下降不少啊。不知道何時能完成這個shader系統-------不過我相信總能完成的。

第一部分:

shader輸入系統除了要對輸入引數描述外,還需要對這個系統的輸出資料進行定義。這樣的結構叫輸入描述符

基礎shader**會包含乙個輸入描述符

五:shader輸出模組:

這樣的shader模組,表示乙個shader處理完後能輸出什麼樣的資料。

vs的輸出模組要和gs/ps的輸入系統匹配。

ps的輸出模組則可以定義輸出多少個rendertarget等。

輸出模組的輸出引數需要進行描述,以便與對應的輸入模組進行匹配。

基礎shader**會包含乙個輸出描述符

六:shader的控制檔案。

用來描述用以上描述的5個部分中的那些資料來組成乙個完整可用的shader。

第二部分:

shader修改器系統的組成

(以下各部分均為和具體的shader api有關,比如)

shader基礎**:

shader基礎**如果不使用其修改器。則會呼叫預設的例程,

這可能用#ifdef來控制。也可能由shader系統用預設的插入**。

shader的修改器描述符:

定義shader修改器的型別,引數等,還可能定義出缺省的插入**

shader的修改器**:

多個修改器**組成乙個完整的修改器。

乙個修改器**加入到shader修改器之前需要匹配引數。

shader修改器堆疊:

乙個用來描述如何用修改器**組成修改器,並加入到shader**裡形成新shader的結構。

艱難的shader系統 三) 前期計畫

首先申明,我在折騰的shader系統主要是給程式用的。用來動態生成shader。以防止手寫shader的組合 但是可能會給美術乙個輔助工具,能用程式支援的功能來進行shader組合。現在 基本上已經確定了shader的實施方案。分三個階段實施 階段一 簡單的shader載入,跟普通的shader沒兩...

艱難的shader系統 三) 前期計畫

首先申明,我在折騰的shader系統主要是給程式用的。用來動態生成shader。以防止手寫shader的組合 但是可能會給美術乙個輔助工具,能用程式支援的功能來進行shader組合。現在基本上已經確定了shader的實施方案。分三個階段實施 階段一 簡單的shader載入,跟普通的shader沒兩樣...

艱難的抉擇

今年三月份,我帶領開發的績效團隊終不免要到交付去,雖然是乙個妥協的結果 團隊中除了我之外所有的成員都過去了。過去的半年裡,銀行績效系統傾注了我所有的心血,此時雖有不捨之情,但卻為無奈的選擇,當然同時我希望並相信一塊去的團隊能夠很好地從我手中接替過去,願績效 專案 一路走好!我總結了一下,績效團隊會有...