私は現在、シャドウを描画するためにシャドウテクスチャを使用するプロジェクトに取り組んでいます。
スポットライトの方向に1つのテクスチャしか必要ないので、スポットライトの方がかなり簡単ですが、すべての方向に6つのテクスチャが必要であるか、またはポイントライトの周囲にすべてのオブジェクトをレンダリングする1つのテクスチャが必要です。
それは私の問題がどこですか。どのようにして360度の角度でポイントライトのすべてのオブジェクトをレンダリングするProjection matrixを生成することができますか?
基本的に魚眼(または他の360度カメラ)頂点シェーダーを作成するにはどうすればよいですか?ポイントライトシャドーマップに使用できる投影行列を取得するにはどうすればよいですか?
答えて
どのようにして360度の角度でポイントライトのすべてのオブジェクトをレンダリングすることができますか?
できません。均質空間内の4×4投影行列は、ポリゴンのエッジを曲げる結果となる操作を表すことはできません。直線は直線のままです。
基本的に魚眼(または他の360度カメラ)頂点シェーダーを作成するにはどうすればよいですか?
少なくとも一般的なケースでは、これを行うことはできません。これは、使用する投影行列の制限ではなく、ラスタライザの一般的な制限です。もちろん、魚眼レンズの歪みの式を頂点シェーダーに入力することもできます。しかし、ラスタライザは直線エッジで各三角形をラスタライズしますが、各三角形の角点の位置を歪ませるだけです。これは、単一ピクセルをカバーする小さな三角形に対してのみ正しいことを意味します。大きな三角形の場合、イメージを完全にねじれます。 Tジョイントのようなものがあれば、実際に完全に閉じなければならないオブジェクトに穴や重なりが生じます。
、それはすべての方向に6つのテクスチャや何らかの形ですべてのobectsをレンダリングする1つのテクスチャのいずれかを必要とするので、それはスポットライトの方向にのみ1テクスチャが必要とされているので、スポットライトのためにかなり簡単だったが、その少し難しくポイントライトの周り。
この解決策は、6つの面を備えた単一のキューブマップテクスチャを使用することです。完璧な立方体では、それぞれの面は、水平および垂直の両方向に90度の視野を持つ標準対称透視投影によってレンダリングできます。
最新のOpenGLでは、layered renderingを使用できます。その場合、キューブマップの6つの面のそれぞれをFBOに1つのレイヤーとしてアタッチし、ジオメトリシェーダを使用してジオメトリを6倍に増幅し、6つの異なる投影行列に従って変換します。完全なシャドーマップのレンダーパスは1つだけ必要です。
NvidiaのNV_viewport_swizzle(Maxwellと新しいGPUで利用可能)のように、キューブマップのレンダリングをさらに最適化するために使用されるベンダー固有の拡張機能がいくつかありますが、これについては完全な説明が必要です。
- 1. ODataの展開されたエンティティで投影を実行するにはどうすればよいですか?
- 2. Funcパラメータを使用してLINQ SelectMany投影を設定するにはどうすればよいですか?
- 3. sqlを使用して投影合計を計算するにはどうすればよいですか?
- 4. SCNShereジオメトリ上のSCNMaterialのWeb mercator投影図を使用するにはどうすればよいですか?
- 5. csvを使用せずに列で.txtファイルを取得するにはどうすればよいですか?
- 6. カーソルループで使用する複数の列を取得するにはどうすればよいですか?
- 7. 投影linqクエリの子テーブルの列を合計するにはどうすればよいですか?
- 8. IDIORMを使用してJSONにPSQL配列を取得するにはどうすればよいですか?
- 9. Angular JS投影のwindow.locationにユニットテストの割り当てを行うにはどうすればよいですか?
- 10. ember-dataを使用してRESTデータを取得/取得するにはどうすればよいですか?
- 11. ストアドプロシージャの影響を受けるレコードの数を取得するにはどうすればよいですか?
- 12. ビットフィールドを使用して全体の行ビットを取得するにはどうすればよいですか?
- 13. Bookshelfを使用して行数を取得するにはどうすればよいですか?
- 14. 特定の列で最大日付で行を取得するにはどうすればよいですか?
- 15. キー配列を使用してハッシュの値を取得するにはどうすればよいですか?
- 16. dplyrを使用して2列の平均を取得するにはどうすればよいですか?
- 17. Laravel、インデックスを使用して配列値を取得するにはどうすればよいですか?
- 18. GridSplitterを使用してWPFグリッドの列幅を取得するにはどうすればよいですか?
- 19. filter_inputを使用してパラメータ配列を取得するにはどうすればよいですか?
- 20. URLDownloadToFileがキャッシュから取得できないようにするにはどうすればよいですか?
- 21. Pythonで「行インデックス」を使用して配列を使用するにはどうすればよいですか?
- 22. Crystal Reportで使用されるSQL SELECT文を取得するにはどうすればよいですか?
- 23. メソッド(.NET)で使用されるフィールドを取得するにはどうすればよいですか?
- 24. Sequelを使用して更新後に影響を受ける行の数を取得するにはどうすればよいですか?
- 25. スラッグを使用してカテゴリから投稿を受け取るにはどうすればよいですか?
- 26. Wordpressでカテゴリ内のすべての投稿を取得するにはどうすればよいですか?
- 27. OpenLayersのVectorFeaturesまたはLayerのCoorinatesをある投影から別の投影に変換するにはどうすればよいですか?
- 28. JavaMailを使用して検索を行い、参照できるUIDを持つメッセージ配列を取得するにはどうすればよいですか?
- 29. Stataで行列全体のログを取得するにはどうすればよいですか?
- 30. OSXでJava 1.6を使用するEclipseを取得するにはどうすればよいですか?
ありがとう、私はデュアルparabloidレンダリングを見てきましたが、おそらくキューブマップで終わるでしょう。ありがとう – user2741831