まきょーんのどうでもいい日記

どうぞよしなに・・・

シャドウマップ

今日はシャドウの勉強
有名なシャドウの技法としては投影シャドウ、シャドウマップ、シャドウボリュームですかね

今日はサンプルにあったシャドウマップをやってみることに。
ゲームのリアル性を求めるならシャドウは欠かせません。シャドウがあるなしでは物体の位置把握がしにくいからです。丸影でもあるなしでは結構違いますし。

丸影は単にテクスチャを地面に置くだけなので超軽いです。PS、PS2なんかは特に多いですね。
地面リアルに移したいだけなら投影シャドウ使えばリアルになります。
ただこの場合は一つのオブジェクトは一つのオブジェクトにしか影は落とせません。シャドウ用のテクスチャたくさん容易すればできますけど、非効率すぎますね。
投影テクスチャの弱点は何かの物体があっても貫通して影を指定したオブジェクトに落としてしまうということでしょうか。まぁ…そこまでリアルにこだわる必要性はないですけど。

さてシャドウマップですが、まぁ技法としては有名なんでさくっと。

ライトから見た深度値をテクスチャに書き込む
レンダリング先に用意したテクスチャを指定してビュー行列にライトの位置を設定してあとはそのままレンダリングすれば完成

シェーダコードはこんな感じ
// 頂点シェーダの関数
float4 VS_SM(VS_INPUT input) : SV_POSITION
{
// 頂点座標 モデル座標系→透視座標系
float4 Out;

Out = mul(input.Pos, World);
Out = mul(Out, View);
Out = mul(Out, Projection);
return Out;
}
float4 PS_SM( float4 In ) : SV_Target
{
float4 FinalColor;
FinalColor= In.z / In.w;
return FinalColor;
}

すごいうちにくい。外部エディタで編集してからここにのせるんだった。

んでまああとは通常空間でテクスチャを貼り付けて各ピクセルの色を算出してから深度マップの値を小さい場所を影と判定して黒く塗りつぶせば完成。

シャドウマップは重いですけど、最近のマシンなら特に問題ないと思います。オブジェクトが1000個とかあったら重いと思いますけど。

あとは深度マップに書き込む時のオブジェクトを通常描画するときのオブジェクトとは別のローポリのオブジェクトを用意すれば処理的には軽くなります。

シャドウはあまりやったこと無いので適当なこといってたらすいません。勉強途中なのでがんばります。間違えてたら指摘してください(´・ω・`)


別窓 | Programming | コメント:0 | トラックバック:0
∧top | under∨

アイドルマスター

激しく今更アイマスかよ!って気もしますが、ええ元気にプロデュースしてます。

順調にあずさ、千早、閣下、雪歩、美希、律子、やよいをプロデュース。あずさだけは最初のプレイということもあって50万人近くしかファンがいなくしょぼかったのですが、千早以降は150万〜を平均でキープ。アイドルランクもSランクキープです。

残りは真、亜美/真美、伊織の3人。ここは一気にトリオでやってしまおうかと思います。

この3人・・・真と亜美/真美は面白いからいいんですけど、伊織は個人的に好きじゃないのでさっさと終わらせたいところ。

あー実績の16ソング・・・あと何やってないのかわからなくなってしまった…
別窓 | XBOX360 | コメント:0 | トラックバック:0
∧top | under∨
| まきょーんのどうでもいい日記 |