構成
No.1 シャドウマップの有無
No.2 動くNPCのシャドウマップ
No.3 動くコードの話
No.1 シャドウマップの有無
シャドウマップの有無だけに関して、違いを見て見ようと思います。
シャドウマップ無し
シャドウマップ有り
こんな感じで違いがあります。
No.2 動くNPCのシャドウマップ
シャドウマップってどうなっているのかを簡単に言うと、太陽から見てオブジェクトの奥側を暗くしているような感じです。
その陰について、DxLibでは影の粗さと影の範囲を調整できます。(非公式リファレンスにてもっと細かく出来るかもしれませんし、シェーダを使えばもっと細かくできると思いますが)
この後で見せる動画のゲームでは、私の感覚で調節したのでそれについて説明すると、
影ってプレイヤーはやっぱり綺麗がいいじゃないですか。自分から遠くのオブジェクトとかNPCって別に影荒くてもどうでもいいですし、なんなら遠い奴なんて影なくてもいい。動かないオブジェクトなんて近くても影荒くていいんじゃね。
っていうことで調整したらこんな感じになりました。
No.3 動くコードの話
すごくぶっちゃけて言えば公式のページ観た方が早いんですよね。というのもゲームによって微妙に違ってくるだろうし、参考にしたところでどうせ調整要れると思うんで、公式観た方がいいと思います。
https://dxlib.xsrv.jp/function/dxfunc_3d_shadow.html#R20N1
というのもありますし、初期化というか設定の部分がすごいごちゃごちゃしてるんですよね。呼び出す関数自体は一つにしてるので呼び出す分には楽なような設計にしてるんですけど。
int SetUseShadowMap( int SmSlotIndex, int SmHandle ) ;のスロットを自分のやつで言うなら。
・スロット0:床や街灯など動かないオブジェクト
・スロット1:プレイヤーとプレイヤーに対して近い動くNPC
・スロット2:プレイヤーから遠い動くNPC