【C++】DirectX 11 プログラムで描画した画像をテクスチャに使う

書籍のサンプルコードを実行しただけなんだけれども、テクスチャに使用されている画像は読込んだ画像ではなくて、プログラム側で描画している。

フラクタル図形というらしい。

なぜこのようなサンプルを選んだかというと、この考えを応用すれば、地形の3Dデータをプロシージャルに作成するのに使えるのではないかと思ったのだ。

プログラム側でやっている処理自体もGPU側に持っていって、つまりシェーダ自身に描かせるのがベストだとおもう。

たとえば、だだっぴろい荒野なんかの地形を作る場合、おおまかなジオメトリと一枚のベースとなるテクスチャ(砂地のようなもの)を用意する。

それに対してシェーダ側で、小石や窪みなんかのディティールをランダムに描けば、どれだけ広くてもテクスチャのリピート感のない地形が出来るんじゃないかと。

もちろん、コンクリートやレンガならひび割れとか老朽化した感じとか、金属ならさびなんかを描くなど、応用もできるだろう。

あと、DirectX 10以降から、シェーダ側でジオメトリを追加することも出来るので、その技術とあわせれば、草が生え小石がランダム転がる地形を生成するシェーダを書くことも出来るんじゃないかと。

まぁ、ひび割れやさびを自然に描くアルゴリズムはどうするんだって問題もあるし、まだ漠然としたアイデアでしかないんだけどね。

ラフなジオメトリに箱を適当にぽんぽんと置いて、パラメータとカラーマップを渡せば、町の景観が出来上がるようなシェーダがかければ理想的なんだけれども、今のところは現実味のない、ただの理想かもしれない。

4年前

コメントを残す

メールアドレスが公開されることはありません。