2012年10月12日 星期五

關於最近整合Shader By Ogre3D的心得與項目…

相關心得:
  1. CG語法可以跨HLSL,未來也有可能可以跨GLSL,因此最好使用CG語法。
  2. 儘量將程式碼整理成函式,並將其存放在其他檔案,以達到共用程式碼的目的。比方,RTShaderSystem的FFPLib_Lighting.hlsl裡的FFP_Light_Directional_DiffuseSpecular(此做法目前不適用於GLSLES)。
  3. GLSLES裡定義的輸出Vertex Data,有接收過值後,記得在Fragment Shader裡要補好相關處理的code(不只是定義好接收端的變數而已,一定要進行處理),否則會有不可遇期的狀況發生(比方oNormal = normal)。
  4. tga檔目前沒辦法在Ogre for IOS下使用,會產生不可預期的問題。
  5. Shader會對未使用的變數進行自動砍掉的動作,導致Ogre Material設定變數的部份會出現錯誤,但無關正確性…
  6. GLSLES1.0不支援Shader Pipeline,GLSLES2.0不支援Fix Function Pipeline(沒有類似DX9的混合版,意味著所有Fix Function Pipeline的事情要全部自己做)。
  7. 能用Auto Constant處理就儘量使用(算是Ogre 3D蠻貼心的設計),沒有定義的(比方inverse_world_rotation_matrix,要自己處理),可以跟SceneManager註冊notifyRenderSingleObject這個Interface來處理。
  8. 目前在Ogre for IOS下使用cubemap在某些版本的模擬器會無法執行,在device下則無問題。
目前完成部份:(HLSL及GLSL均有實作)
  1. Vertex Light Lighting Multiple Light Processing(Inlcude Directional & Point Lighting)。
  2. Vertex Light Lighting Multiple Light Processing with Environment map(Cube map base)。
  3. Per Pixel Lighting Multiple Light Processing with Normal map & Specular map(Include Directional & Point Lighting)。
相關影片:此影片主要可以看出Vertex Lighting  及Per Pixel Lighting的差異性…



夢想還在持續中…

沒有留言:

張貼留言