OpenXOPSにシェーダーで影を付ける | 2020.08.16 20:50 |
8月ですね。
1-2週間前までは雨が降っていてジメジメしていたのに、急に暑く
なってきました。
早速本題ですが、既に他所でも発表した通り、OpenXOPSに影を
実装してみました。
(クリックで拡大)
マップに人の影が落ちているほか、画像だと分かりにくいですが、
(腕に持っている)武器や、小物に対しても影が落ちます。
また、影はリアルタイムに演算し描画しているため、影/太陽の
向きも自在に変更できます。
1-2週間前までは雨が降っていてジメジメしていたのに、急に暑く
なってきました。
早速本題ですが、既に他所でも発表した通り、OpenXOPSに影を
実装してみました。
(クリックで拡大)
マップに人の影が落ちているほか、画像だと分かりにくいですが、
(腕に持っている)武器や、小物に対しても影が落ちます。
また、影はリアルタイムに演算し描画しているため、影/太陽の
向きも自在に変更できます。
もちろん、UnityやUnreal Engineのようなゲームエンジンは一切
使っていません。
HLSLでシェーダー(シェーダーモデル 3.0)を書いており、
フルスクラッチでシャドウマップを実装しています。
影が綺麗に出るようソフトシャドウをやっており、カメラとの
距離に応じて、シャドウマップは複数枚に平行分割しています。
OpenXOPSの描画を、固定パイプラインからシェーダーに移行し、
影を実装する計画は、2018年の前半頃から考えていました。
OpenXOPSをシェーダーに移植してオンライン化したい
(2018/06/11)
※この頃はオンライン化も真剣に考えていた。
当時から本を買って読んで勉強したりもしていましたが、私生活
で色々なことが起きたり、XOPS関係でも他にやるべきことが
できたりで、殆ど手付かずでした。
ただ、今年6月頃からシェーダーの勉強を再開しようと思い立ち、
8月になってようやく それっぽく動くようになりました。
ゲームに影を付けると威力(印象の差)は絶大で、ゲームとして
グラフィックが結構向上しますね。
やりたかった方向性としては予定通りです。
ただ、やはり画像では分かりにくい細かいところにバグや描画が
汚いところがあることと、
今回実装したのは言わば平行光源のみで、点光源やスポットライト
は実装していないので、室内は真っ暗になります(^^;
まだまだ研究段階です。
他所でも感想として述べましたが、
シェーダープログラミング未経験の状態で、いきなりDirectXから
シェーダーを動かすのは、恐ろしくハードルが高いと感じました。
特に、近年はゲームエンジンの発展により、シェーダーでゴリゴリ
と影を演出する技法はマイナーになりつつあり、解説が少ないのは
あると思います。
Output(成果物)を優先し、かつ「徹底的に本家XOPSに近づける」
というミッションがないのであれば、素直にゲームエンジンを
使うべきです。
・・いや、ゲームエンジンって本当に凄いんだぞ? マジで。
ただ、せっかくここまでやったので、もう少しHLSLでシェーダーを
弄りたいという気持ちはあります。
本題とは全然関係ないですが、1Uサイズのラックサーバーを買い
ました。
サーバー向けCPUであるIntel Xeonプロセッサーが入っています。
いつか書くタイミングがあれば紹介します。
紹介する機会なく、そのままお蔵入りになるかもしれませんが(^^;
category : ソフト・ツール開発 | comment [0] |