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