スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UNITYシェーダーメモ02 覚書き

シェーダーの移植検証でUNITYとSOFTIMAGEのレンダ結果を比較
130119b_UNTY.jpg
比較検証のため、せっかく実現したシャドウマップは一旦カット。
ポーズやライティングは若干違うけど、色味とか陰影の入り方はほぼ完全再現できた。
まだポイントライト周りは手をつけてないので、それが入ったらやっと一段落かな。

●UNITYシェーダー覚書
覚書というか、移植に当たって苦労した部分の記録。
誰か同じようなことをやろうとしている奇特な人が居るかもしれないし。

・ワールドの座標系が無い!
UNITYは Model >> View >> Projection という座標系変換。使い慣れたworld変換が無い!?
そのくせライトのベクトルはワールド座標系準拠。
最初気づかずにモデル座標系の法線とワールド座標系のライトで計算しててライティングがえらいことに。
結局、「_Object2World」というマトリクスを法線にかけることでこれは解決。
OUT.normal.xyz = mul( _Object2World, float4( IN.normal.xyz, 0.0 ) ).xyz;
と書けば今までと同じようにワールド座標系同士でライティング計算ができた。

・アンビエントライトが暗い?
UNITY_LIGHTMODEL_AMBIENTでアンビエントカラーを取得できるんだけど、
同じ値でもなんかSoftimageと色の出方が違うなと思っていろいろ調べたところ、なぜか2倍にすると一致。
 float4 AmbientColor = UNITY_LIGHTMODEL_AMBIENT *2 ;
Softimageが明るいのか、Unityが暗いのかわからんけど、これで同じ値で同じ結果になった。

・ライトベクトルの取得
微妙に納得がいかないんだけど、「_WorldSpaceLightPos0.xyz」で0番のライトのベクトルを取得できる。
「Pos」って書いてあるのに向きベクトルなのは何なんだよって思うけど、意図したとおり動くのでまあいいや。
ポイントライトとかの処理に関係あるのかも。もう少し調べたい。

とりあえず今日はここまで。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

JNY

Author:JNY
某ゲーム会社勤務
趣味と修行をかねて個人製作中
Softimage & Cgfx & Unity

最新記事
最新コメント
月別アーカイブ
カテゴリ
カウンター
twitter

Twitter Updates

    follow me on Twitter
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。