最近拿起了3ds max,玩一玩裡頭的DirectX Shader 材質。發現它其實還挺好用的。
首先先將材質換成DirectX Shader
然後材質的參數就會換成這樣的介面
第一個,DirectX Shader的欄位,可以讓我們指定使用的Fx檔案,第二個Parameters的欄位,裡面所有的參數,都是從Fx檔案裡定義的。只要照著標準的規則寫,參數便能夠列在這上面,讓製作人員去調整。同時在做模型輸出的時候,也同樣可以取得這些設定的值。
至於這些個參數是怎麼定義的,可以打開default.fx來看。
// light direction (view space)
float3 lightDir : Direction <
string UIName = "Light Direction";
string Object = "TargetLight";
> = {-0.577, -0.577, 0.577};
// material reflectivity
float4 k_a <
string UIName = "Ambient";
> = float4( 0.47f, 0.47f, 0.47f, 1.0f ); // ambient
float4 k_d <
string UIName = "Diffuse";
> = float4( 0.47f, 0.47f, 0.47f, 1.0f ); // diffuse
float4 k_s <
string UIName = "Specular";
> = float4( 1.0f, 1.0f, 1.0f, 1.0f ); // specular
int n<
string UIName = "Specular Power";
string UIType = "IntSpinner";
float UIMin = 0.0f;
float UIMax = 50.0f;
> = 15;
這個程式的語法,稱做 DirectX Standard Annotations and Semantics,角括號裡面的字串以及其它變數的宣告,在Effect Fx中是沒有作用的,但是,在max中,就定義了Parameters的參數介面。
除了在DirectX SDK中有文件說明,max的網站上也可以下載到相關的文件(不過版本很舊了)。
用DirectX Shader材質有兩個好處,一是這個Effect Fx的檔案我們可以直接在遊戲程式中使用。第二是,這個材質能夠所見即所得的顯示出來材質效果。
所以,我很認真的在考慮,也許就直接把Effect Fx檔案拿來當做引擎中的材質使用好了。
沒有留言:
張貼留言