砂漠っぽい質感のレンダリング [ゲーム開発ログ 2020-11-30]
ローポリだけど質感にこだわりたい
趣味開発のゲームは、作りやすさと個人的な趣向からローポリの 3D でデザインしている。 ただのローポリだとつまらないので「質感のよい綺麗なローポリ」を目指している。
色味やライティングを細かく調整できる自作シェーダを書いて、水の表現や揺れる草なんかも作った。 大体これで事足りそうではあるが、他にもまだ作ってみたい表現はある:
- もっと細かい草原がなびく感じ
- 宝石っぽい光の反射
- 氷っぽいしっとり感
そうしたもののひとつに 「砂の粒がキラキラ光る感じ」 というのもあった。 負荷をそう重くせずに綺麗な、もしくは面白い見た目が作れないものかと 法線、反射、テクスチャをシェーダ上でいじって色々と実験してみたが、あんまりイイ感じの見た目にはならなかった。
単にスペキュラの調整でよかった
そんな中、スペキュラマップにそれらしいテクスチャを当ててパラメータを調整してやれば それだけで結構リアリティのある見た目になることに気づいた。 変な小細工をいれなくても Unity 標準シェーダにある機能でイケたのだ。
スペキュラマップの ON / OFF の様子
これに自作シェーダの色付きシャドウとか法線ごとの色味とかリムライトとかを組み合わせて調整すると、 わりと綺麗な砂の質感が作れた。
これまでテクスチャをあまり使わないローコスト指向で画面を作っていたのだが、 ちょうどいい画像があれば法線マップやスペキュラマップで手軽に質感を足せるので、要所要所で使ってもよさそう。
まあその「ちょうどいい画像」を用意するのが大変ではあるのだが。
ちなみに今回は以下のような画像をスペキュラマップに使っている:
砂漠マップを作ってみる
砂の質感のマテリアルができたので、それを使って砂漠マップを作ってみた:
美しい砂漠と言えば 風ノ旅ビト というゲームを思い出す。あれほどではないが、ちょっとそれを彷彿とさせる程度の見栄えにはなっている気がする。
ただのスペキュラなので負荷も重くない。モバイルでも普通に動いた。
広がるデバッグマップ
実験的なエリアを少しずつ足していったら、デバッグ用のシーンがいつの間にか結構広大な感じになっていた。
(これは全部歩くことができる)
これくらいのサイズになるとエリアの動的読み込みとかしないと重くなっちゃうかな、と最初は思っていたのだが 実際に動かしてみると描画範囲さえ絞ってやればモバイルでも快適に(小さいマップと比べてそんなに重くならず)動いた。
static な GameObject ならこれくらいの物量を置いても全然大丈夫そう。