深度テクスチャを用いてのシャドウマッピングについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kawazu
記事: 2
登録日時: 11年前

深度テクスチャを用いてのシャドウマッピングについて

#1

投稿記事 by kawazu » 10年前

こんにちは。
初の質問になりますので、テンプレートを使用させていただきました。

[1] 質問文
 [1.1] 自分が今行いたい事は何か
  >複数のライトを基準とした影を描画すること。

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
  >コードはまだ一つのライトを基準とした影の描画の段階。

 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
  >影のライトを増やそうとする際に
   影のライトの数だけテクスチャを作成し、それぞれでレンダリングをしてシャドウマップを作成しなければいけないのか。
   だとすると、オブジェクトの描画数が膨大になって無駄に感じたので、
   現在はレンダーターゲットを深度テクスチャにしてシェーダで計算し色として書き込むということをしていますが、
   深度テクスチャへ描画しているシェーダに影のライトの数だけの深度テクスチャとライトView,ライトProjを渡して
   直接テクスチャを書き換えたり、なにかもっと効率的な方法があるのではないかと思い、ここで伺うことにしました。
   知りたいことは方法があるか、あるならばどういう物なのかということです。
   (参考URLやコード,文章での説明などがあるとありがたいです)

 [1.4] 今何がわからないのか、知りたいのか
  >[1.3]に記載。

[2] 環境  
 [2.1] OS : Windows, Linux等々
  >Windows7

 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
  >Visual C++で作成。 (Visual Studio2010)

[3] その他
 ・どの程度C言語を理解しているか
  >表し方がわかりませんが、サーティファイのC言語検定の2級までは持っていますが、1級は去年一度受けて落ちました。
  >学生で、プログラミングは始めて3年目です。

 ・ライブラリを使っている場合は何を使っているか
  >ライブラリは使用していないと思います。

以上です。拙いところも多いかと思いますが、ご指摘いただければ追記いたします。
よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 深度テクスチャを用いてのシャドウマッピングについて

#2

投稿記事 by softya(ソフト屋) » 10年前

深度テクスチャだとライト分必要だと思います。
こんな記事がありますが、実装は難しいそうです。
「西川善司の3Dゲームファンのための「KILLZONE 2」グラフィックス講座(前編) -GAME Watch」
http://game.watch.impress.co.jp/docs/se ... 25909.html

なんにしてもライトは重いので、移動する特定キャラだけライティングとか、背景は焼き付けたライティングなどで映像の深みを出すなど数々の工夫を組み合わせて作るのが定番だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kawazu
記事: 2
登録日時: 11年前

Re: 深度テクスチャを用いてのシャドウマッピングについて

#3

投稿記事 by kawazu » 10年前

softya(ソフト屋) さんが書きました:深度テクスチャだとライト分必要だと思います。
こんな記事がありますが、実装は難しいそうです。
「西川善司の3Dゲームファンのための「KILLZONE 2」グラフィックス講座(前編) -GAME Watch」
http://game.watch.impress.co.jp/docs/se ... 25909.html

なんにしてもライトは重いので、移動する特定キャラだけライティングとか、背景は焼き付けたライティングなどで映像の深みを出すなど数々の工夫を組み合わせて作るのが定番だと思います。
softya(ソフト屋)様、ご回答有難うございます。
やはり、深度テクスチャはライト分必要なのですね。
何か特別な画期的な方法があるかもと思い質問させていただきましたが、
ご回答いただけて安心しました。
それでは、この前提条件を元に工夫をしていくようにします。

これにて解決とさせていただきます。
皆様のご閲覧・ご回答、有難うございました。

閉鎖

“C言語何でも質問掲示板” へ戻る