問題タブ [shadow-mapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - OpenGLES2.0-レンダリング深度バッファー
私はいくつかのチュートリアルを読み、OpenGLES2.0に頭を悩ませようとしています。デプスバッファを作成しようとすると、JVMがクラッシュします。ところで、私はLibGDXフレームワークを使用しています。
何をするのかglTexImage2D
わかりませんが、奥行きのあるテクスチャが生成されるはずです。
次の行でJVMがクラッシュします
次の行はNullPointerException
glTexImage2D
最後のパラメータとして何を入れるべきかわかりません。私は彼らが置いたiOSの例を見てきましたNULL
。
残りのコード
私に正しい方向を示してください、または私が私の仮定を間違えたときはいつでも。
チュートリアルが最適です。OpenGLES2.0のシャドウマップについてはあまり見つかりませんでした。
directx-10 - 深度ステンシルとシャドウ リソースが空です
シャドウ マッピングを機能させるために約 3 日間費やした後、シャドウ マップをシェーダーに渡すのに問題が発生しました。
最初に深度ステンシルとリソース ビューを初期化し、次に深度ステンシルに描画します (と思います)。私が見つけている問題は、深度ステンシルに関連付けられたデータがないことです。
Pix のリソース ビューまたは深度ステンシルにデータが表示されません。深度ステンシルの画像をファイルに保存できません (非シャドウ深度ステンシルを使用しています)。DrawSceneShadow() を呼び出して rendertarget にレンダリングし、必要なものを取得できます。
どんな助けでも感謝します。
初期化する
シーンをレンダリング
opengl - 遅延レンダリングでのシャドウマップ投影(OpenGL 3.3)
動作するGバッファ(色、法線、深度)があり、各スポットライトについて、ライトの観点からの深度マップがあります。問題はライティングマップフェーズにあり、動作させることができません。ここで何が問題なのか指摘していただけますか?
プロセスの私の「理解」は次のとおりです。
opengl - 2D シャドウ マッピング
これをopenGLで実装する方法について疑問に思っていました:
床と壁が平らな地図があります。ここにあるものはすべて 2D であり、3D ジオメトリはなく、マップを構成する 2D ポリゴンのみです。
ポリゴンの頂点を使用して影を落とし、表示可能な領域を定義します。
影は視野を定義しますが、壁のあるセルは視界を遮るため、それらも暗くなります。影の上に壁を描くことはできますが、そうすると視野の外に壁が見えてしまいます。
シャドウ マッピングを使用してこの問題に取り組むよう提案されました。2D シーンを、最初に衝突するサーフェスまでの距離の深さを保持する 4 つの異なる 1D テクスチャにレンダリングする必要があります。問題は、2D シーンの投影を 1D テクスチャにレンダリングする方法がわからないことです。たとえば、 gluLookAt (x, y, 0.0, 0.0, x , y+1, 0.0, 0.0, 1.0);
上面図をレンダリングすると、結果は 2D のままです。また、すべての頂点が同じ平面にあるため、何もレンダリングされず、すべてのサーフェスがカメラに対して直交します。
これらの 2D から 1D への投影を行う方法に関するヒントやアイデアはありますか? 私はこのようなシナリオをグーグルで検索してきましたが、それらはすべて 3D 環境にあります。
opengl - OpenGL シャドウ マップ
基本的なシャドウ マップを作成しようとしていますが、何らかの理由で適切にレンダリングされません。
フラット シェーダーを使用して家をレンダリングします。
家だけをレンダリングしていることに注意してください。深度バッファ パスで床をレンダリングしません。
これに続いて、次のシェーダー ペアを使用して床を表すクワッドをレンダリングします。
そしてフラグメントシェーダー:
次に、家をもう一度色で描きます...床:
誰もこの動作を見たことがありますか? 何が間違っている可能性がありますか?ちなみに、ライトの座標は家の真上に配置されているため、影は家の真下の床にあるはずです (ただし、最終的には横向きになります)。
参考までに、シャドウ FBO を生成する方法を次に示します。
arrays - 深度コンポーネントを持つ GL_TEXTURE_2D_ARRAY を使用した不完全なアタッチメント
多くのシャドウ マップを格納するために、opengl テクスチャ配列を使用しようとしています。残念ながら、フレームバッファをチェックすると、常に「添付ファイルが不完全です」というエラーが表示されます。nvidia のカスケード シャドウ マッピングの例のようにテクスチャ配列を設定しようとしました ( NVIDIA によるカスケード シャドウ マッピングの例を参照)。
だからここにいくつかのコードがあります:
テクスチャの作成:
/li>FBO を作成します。
/li>シャドウ マップをレイヤーに描画します。
/li>
システム仕様:
Nvidia ドライバー 304.60 および GTX 560 Ti を使用した Debian Squeeze 64 ビット。古いドライバー バージョンは、新しいバージョンのシェーダー コンパイラーのバグによるものです。
directx - デフォルトで作成された深度ステンシル バッファによって引き起こされる問題
シャドウ マップの DirectX SDK のサンプルから学習しています。このサンプルは、初期化中にステンシル サーフェスを作成し、次のように述べています。
これは何を意味するのでしょうか?ステンシル バッファーを作成して操作するステートメントにコメントを付けようとしたところ、結果が非常に不安定になりました。誰かが私にこれを説明できますか? どうもありがとうございました!!!
opengl - シャドウ マップが大きすぎる
シェーダー マップ テクスチャではすべて問題ありませんが、スケーリングされています (大きすぎます)。
コーディネイト テクスチャ:
mat4 バイアス = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);
ShadowCoord = バイアス * projMatrix * viewModelMatrix * vec4(position,1);
別の例では、textureMap 座標が次のようになっている理由は次のとおりです。
ShadowCoord = バイアス * projMatrix * viewModelMatrix * ViewMatrixInverse;
そしてもう一つ:
ShadowCoord = バイアス * projMatrix * viewModelMatrix * ModelMatrixRenderObject * vec4(position,1);
誰も違いを説明できますか?テクスチャ マップがスケーリングされるのはなぜですか?
graphics - シャドウ マッピング ウォブル
私は全方向シャドウ マッピングを研究しており、しばらくこの問題に悩まされていました。基本的に、カメラを動かしたり回転させたりすると、影が揺れるように見えます。私はここでビデオを作りました:
問題は、画面の下部にある墓石の途中で最も目立ちます。
プロジェクトは遅延レンダラーで実装されており、最初は問題はテクセルをピクセルに揃えることに関係していると思っていましたが、directx 10 (私が使用している) 以降、これはもはや問題ではないことを読みました。レンダーコールの後にカメラを更新していたので、フレームが遅れていると誰かが提案しましたが、これは問題ではありません。
どんな助けでも大歓迎です。
大量のコードを投稿することから始めたくありませんでした。必要なものがあれば、投稿できます。
opengl - ポイント ライトのシャドウ マップのパフォーマンスを向上させるには?
私はシャドウ マップを使用してポイント ライトを作成しています。現在、6 つの深度マップ テクスチャを使用して作成しており、それぞれが個別にレンダリングされ、ライト マップに適用されています。これは非常にうまく機能しますが、パフォーマンス コストが高くなります。
ここで、FBO の変更と、デプスマップ シェーダーとライトマップ シェーダーの間のシェーダー スワッピングを減らしてパフォーマンスを向上させるために、いくつかのアプローチを考えていました。1 つ目は、シャドウ マップの 6 倍の大きさのテクスチャを 1 つ用意し、すべてのポイント ライト深度マップを「一度に」レンダリングしてから、このテクスチャを使用してライト マップを 1 回の呼び出しでレイアウトします。テクスチャの一部だけをレンダリングすることはできますか?
最初の例を詳しく説明すると、次のようになります。
私が考えた 2 番目の方法は、部分レンダリングの代わりに 3D テクスチャを使用することですが、同様の質問がまだあります。他のレイヤーを保持しながら、3D テクスチャの特定の「レイヤー」のみにレンダリングできますか?