Home > Tags > FX Composer

FX Composer

實作簡單的材質

進度有點緩慢,今天才完成了 3月6日定下的第一個目標。

使用 blinn_bump_reflect.fx 的渲染

今天的學習進度:

  1. 設定 Matrices 及修正相關函式: 現時設定為 column-major。改正相關函式花了很多時間。
  2. 修改 ChamferBox: 由於 ChamferBox 只負責生成一個 Geometry 物件,所以把 constructor 改為一個 function。原本想嘗試做一個 non-member function,但是 SWIG 部份有問題,花了一兩個小時也找不到解決辦法,所以現在改為一個 static member function。
  3. 實作 Material: 使用 HLSL fx 檔案在建構一個 Material (在 Direct3D9 上而已,之後再考慮跨平台的設計)。利用 FX Composer 的 Blinn.fx 測試渲染。
  4. 加入 Texture: 因為 blinn.fx 需要 diffuse texture,又實作了一個 Texture 類別,和 Material 相似,也是從 constructor 讀入一個影像檔案。
  5. 測試 blinn_bump_reflect.fx: 因為這個 Effect 需要 Tangent 和 Binormal,所以實作了
    void GeometryBuilder::ComputeTangentSpace(int texcoordIndex)

    函式從三角形網格計算這些向量,當中參考了這個網站的實作

  6. 加入 CubeTexture: blinn_bump_reflect.fx 需要環境貼圖,因此加入這個類別。並重構 Texture,使 Texture 和 CubeTexture 繼函自 TextureBase。

Continue reading

繼續圖像引擎

因為太太星期五抵上海,自那天到星期日也沒有「開工」。

今天繼續做圖像引擎,不過只有小許時間。現在加了一些 hard-code 的 D3D Matrices,可以從 C# 渲染一個 Chamfer Box (no lighting)。

想繼續下去時又停了下來,為了想幾件事情。一開始是考慮用甚麼的 handedness 的座標系統和 column/row major 的矩陣,不過找不到一個比較通用的標準。後來就想以一般的 shader 例子作為主要考慮,所以往 Nvidia 下載 Fx Composer 2,希望可以使用其設定的慣例和例子。剛開始可以直接用 HLSL 的,之後再考慮 CgFX 或 COLLADA FX。歡迎各位討論,特別是用過這些工具的朋友。

接下來設定好這些慣例後,就會加入一個簡單的預設 shader,再 refactor 現在的 Geometry 生成方法。現時的想法是,建立一個 Platform-specific 的 Geometry Class,它基本是一個 draw-call 的資訊。再設計一個 Geometry Builder,方便 procedurally 建立 geometry。這個 Geometry Builder 的介面應該是平台無關,日後可以利用這個介面來做個別平台的三維模型轉換 (e.g. COLLADA 到 Geometry 的轉換)。希望透過這個介面,可以在 Lua 簡單地寫一些 procedural geometry,例如 Chamfer Box、Teapot 等等。這些其實在遊戲中不太實用,但作為 script 和 CG 的學習可能不錯。

今天,也要早些睡了……

Home > Tags > FX Composer

Search
Feeds
Meta

Return to page top