タグ付けされた質問 「shadows」

光の流れを妨げる固体の存在によって生じる暗い空間。多くの場合、キャラクターが着陸する場所を知るのに役立ちます。

1
シャドウマッピングが標準である理由
私は貿易のプログラマですが、ゲーム開発にはほとんど触れていません。私はしばらくの間この質問をしてきましたが、今はゲーム開発を検討しているので、尋ねるのに良い時期だと思いました。 ゲームがシャドウを作成するために、シャドウマッピングが排他的な方法であるように見えるのはなぜですか?率直に言って、ひどく見えます。シャドウ設定が最大化された最新のゲームでさえ、非常に注意をそらすギザギザのブロックyシャドウがあります。 11年前に作成されたDoom 3は、この質問が投稿された同じ週にリリースされたAAAゲームを含む、これまでに見たどのシャドウマップの実装よりもはるかに優れたシャドウボリュームを使用しました。Doom 3のサードパーティ製のMODは、シャドウのエッジをさらに柔らかくし、視覚的な印象をさらに高めました。 シャドウボリュームなどの実装には、何らかの技術的な問題や制限がありますか?シャドウマップの実装は非常に簡単で、開発者は他に何も考慮していませんか? このテーマについて私が見つけた唯一の情報は、ボリュームを構成するポリゴンが非常に大きくなり、要求が厳しくなることです。おそらくシャドウボリュームにははるかに高いシステム要件がありますが、その場合、2004年にシャドウボリュームを使用することでどのように逃げましたか? この質問は、シャドウマッピングとシャドウボリュームに固有のものではありません。それらは完全な製品で使用された2つだけであり、他のテクニックに関する多くの情報を見つけることができませんでした。

2
一部のゲームでは、壁を通して光が輝いているのはなぜですか?
一部のゲームでは、ビデオの品質を高レベルに設定しても、壁を通して光が輝いています。 最近プレイしたゲームの例としては、Borderlands 2(ミサイル爆発)とCall of Cthulhu(ランタン。ゲームではUnreal Engine 4も使用されています)があります。 これはバグですか、パフォーマンス上の理由がありますか? Borderlands 2:の例:https : //youtu.be/9bV83qA6_mU?t=419(数回ですが、すぐに) ボーナスの質問:後者の場合、問題を解決するためにレイトレーシングを安価に使用する方法はありますか?高価なRTは間違いなく問題を解決したと思いますが、この特定の問題を解決するために「安価な」形式で使用できるのではないかと思います。

1
PagedGeometryの草に影を付けるにはどうすればよいですか?
Ogre3D(v1.7)およびPagedGeometryの使用に切り替えました。私がやろうとしているのは、地形、木、草で簡単なシーンを作ることです。一言で言えば、Ogreでこのような効果を達成したいと思います。 PagedGeometryデモでは透明/カットアウトシャドウが実装されていますが、上記の例のように草に適切にシャドウを投影する方法に関する解決策が見つかりません。 これを達成するためにどのようなテクニックを使用できますか?

1
最新のシャドウレンダリングテクニック?
シャドウレンダリングの観点から見た最新技術とは何ですか?私のターゲットは、OpenGL 3.2です。それが重要な場合、遅延レンダリングパイプラインを使用します。 シャドウレンダリングを検討してから何年も経ちましたが、当時はステンシルからさまざまなシャドウマッピング手法まで、数多くの手法が利用可能でした。当時、レンダリングシャドウには、CPUによって制御される個別のレンダリングパスが必要でした。しかし、最近、シャドウを含めてシーンが完全にGPUでレンダリングされるデモを見ました。それがどのように達成されたのか、あるいは(技術デモを超えて)それを行うのが妥当なことであるかどうかはわかりません。 インターネット上の古い情報が大量にあることを考えると、最近人々がどのような方法を使用しているか、そしてどのくらいGPUにプッシュできるかを知りたいと思います(私のOpenGLバージョンがサポートしていると仮定して)。
16 opengl  shadows 

1
シャドウマップアーティファクト
3D XNAゲームに影を追加してみたい。1つのライトと1つのカメラでテスト環境をセットアップしました。しかし、私は自分のアプローチでアーティファクトに直面しています。 私はhttp://pastebin.com/zXi0hmsUのシェーダーコードを使用して最終結果をレンダリングし、http://pastebin.com/rY4Gcj9Nを使用してシャドウマップを作成しています。コードは非常に単純で、ライトの観点から深度マップを生成し、それをカメラ空間に投影し、オクルージョンをチェックする必要があります。 しかし、ほとんどの角度から私はかなりresultsい結果を得ています シーンは、いくつかの単純なキューブ(手で構成され、外側を向き、背面がカリングされます)、1つのライト(左上隅に表示されるシャドウマップ-大丈夫に見えます)、1つのカメラで構成されます。 シャドウマップのRenderTargetは、以下によって初期化されます int shadowMapSize = 512; RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize, shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24Stencil8); GraphicsDevice.SetRenderTarget(shadowMap); GraphicsDevice.Clear(Color.White); GraphicsDevice.DepthStencilState = DepthStencilState.Default; その後、CreateShadowMapエフェクトが適用され、続いてLambertWithShadowsエフェクトが適用されます。最後に、を使用してシャドウマップが描画されSpriteBatchます。 残りのコードは、シェーダーに正しい値を提供するだけで構成されています。必要に応じて、私はそれをうまく提供できます。

4
2Dアイソメゲームでのリアルタイムシャドウキャスティング
私はC ++で小さな2Dアイソメトリックエンジンを書いており、リアルタイムのシャドウキャスティングを実装しようとしています。このページで説明されている簡単なアプローチに従いました。結果は次のとおりです(光は黄色のキューブと同じ位置にあります)。 結果は非常に良いですが、壁とキューブの上部に影がありません。これがどのように見えるかの例を次に示します(予想される影を緑色で描画しました)。 描画されるすべてのキューブは、XY位置に配置され、Z深度(z = x + y)の3つの2Dクワッドで単純に作成されます。OpenGLを正投影マトリックス(glOrtho)と共に使用します。影はステンシルバッファーを使用して描画されます。 このシャドウキャストの実装を完了するのに役立つリソースまたはソリューションを探しています。 どうもありがとう!

1
ガウスぼかしはソフトシャドウエッジのかなり正確な表現ですか?
実際のソフトシャドウ(近くの大きな光源から)にガウスまたは線形の減衰があるかどうか、または他の何かがあるかどうかはわかりません。 何らかの事前レンダリングされたグラデーションテクスチャを操作することで影を作成できるものに取り組んでいるので、フレームバッファや従来の影付け技術に依存する必要はありません。グラデーションをメッシュのテクスチャの1つのチャネルにベイクし、各クワッドを覆うシャドウの量に基づいて値を操作することを計画しています。これは、各ピークが次の隣接するクワッドに影を落とすことができるジグザグのように並んだクワッドを持っているためです。 そのため、線形フォールオフが最も簡単になります(線形勾配から値を差し引く必要があります)が、実際に実際に見えるものを伝えるのは困難です。線形勾配に適用してガウス近似を引き出すことができる簡単な数式はありますか?

5
カードゲームでカードのドロップシャドウ効果を描画するために、どのレンダリングテクニックを使用しますか?
どのような種類のシェーディングアルゴリズムを使用して、これらのような影を作成できますか? 私が作っているものは似ていますが、すべてOpenGLを使用した2D描画APIで行われているため、Z座標はありません。 さらに、手自体については、次のような陰影を付けたいと思います。 それに近い影付きの外観を実現する方法がわかりません。 カードの数は変化するはずであり、カードはテーブルに投げられるので、どのような種類のライトマップも使用できません。 どのような種類のアルゴリズムを検討する必要があります(実行する必要があるとわかっているぼかしは別ですか?) ありがとう 更新 2Dカードゲームを作っています。私は、カードからドロップシャドウのオフセットを少し追加します: 私がそれをすることを考えている方法は次のとおりです。 バックバッファと同じサイズのテクスチャを保持します。 そのテクスチャの間に合わせのカードとして暗い長方形を描きます。 そのテクスチャをぼかします。 そのテクスチャにカードを引きます。 カードをさらに照明します。 このテクスチャをバックバッファに描画します。 私の質問は: これは正しい方法ですか? テクスチャにレンダリングせずにそれを行う方法はあり ますか(バックバッファと同じ大きさのビットマップを保持します)? バックバッファサイズが最大テクスチャサイズを超えないと想定しても安全ですか?(つまり、バックバッファ が2000x3000 であれば、 そのサイズのビデオメモリにテクスチャを作成できると言っても安全ですか? ありがとう

1
マルチレイヤーの2Dタイルマップにライトとシャドウを実装するにはどうすればよいですか?
私は最初からアイソメトリックゲームを作成している最中です。ライトとシャドウを追加する方法や方法を知りたいのですが。 ここまでのコードはここにありますが、今のところ、マップはtrue / false値の単純な3D配列であることを知っていれば十分でしょう。これは環境のショットです: それが単一レイヤーのタイルマップである場合、それは簡単です。必要な2dの簡単なレイキャスティングを理解できます。 ただし、私のマップには複数のレベルの高さと洞窟のような領域があるため、そのために説得力のある影を作成する方法がわかりません。おそらく、ブロックごとのソリューションが唯一の現実的な方法ですか?

1
レイヤー間にキャストされた2Dシャドウを実装するにはどうすればよいですか?
別のレイヤーのオブジェクトによってキャストされる2Dシャドウを実装するにはどうすればよいですか? Catalin Zimaの有名なチュートリアルの動的照明とは異なります。 しかし、このビデオのパイプの影のように: そして、このビデオのプラットフォームの影とキャラクターのように: 多くのレイヤーとさまざまな色の多くのライトがあるシーンで同じ種類のライティングを使用したいと思います。 レイヤーの背後にあるレイヤーの上にレイヤーの黒いコピーを描画し、影がキャストされているレイヤーの穴に応じて調整することで、これを想像できます。しかし、私はこれのためのより安価な、ピクセルシェーダーベースのアプローチがあることを願っています。

4
シャドウマッピングと透明なクワッド
シャドウマッピングでは、深度バッファーを使用して、シャドウを描画する場所を計算します。 私の問題は、いくつかの半透明のテクスチャクワッドに影を落としてほしいということです。深度値は、表示されている部分だけでなく、すべてのクワッドに設定されるため、クワッドシャドウが投影されますが、これは私が望んでいることではありません。 シャドウマッピングを使用して、透明なクワッドに正しいシャドウをキャストさせるにはどうすればよいですか?


1
カーマックのリバース特許をどうやって回避するのですか?
どうやら、クリエイティブはカーマックのリバースの特許を持っており、彼らは成功したソースの低下のために彼らのテクニックを修正するためのIDを余儀なくさだけでなく、ドゥーム3にEAXを含めること。 しかし、カーマックのリバースは頻繁に議論されており、明らかに遅延シェーディングに適しているため、他の多くの高予算のプロダクションでもおそらく使用されています。 Creativeが小規模の企業を追い求めることはまずありませんが、より大きなスタジオがこの問題をどのように回避するのか疑問に思っています。彼らはただ指を交差させて、クリエイティブがそれらを荒らさないことを願っていますか、それとも彼らは単にカーマックのリバースをまったく使用しませんか?

3
初めてのシャドウマッピングの問題
OpenGLでシェーダーを使用して初めて基本的なシャドウマッピングを実装しましたが、いくつかの問題に直面しています。以下に、レンダリングされたシーンの例を示します。 私がフォローしているシャドウマッピングのプロセスは、光の視点からのビューマトリックスと、通常のレンダリングに使用される投影およびモデルマトリックスを使用して、シーンをフレームバッファーにレンダリングすることです。 2番目のパスでは、上記のMVPマトリックスをライトの視点から、位置をライトスペースに変換する頂点シェーダーに送信します。フラグメントシェーダーは遠近法による分割を行い、位置をテクスチャー座標に変更します。 これが私の頂点シェーダーです、 #version 150 core uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVPMatrix; uniform mat4 lightMVP; uniform float scale; in vec3 in_Position; in vec3 in_Normal; in vec2 in_TexCoord; smooth out vec3 pass_Normal; smooth out vec3 pass_Position; smooth out vec2 TexCoord; smooth out vec4 lightspace_Position; void main(void){ pass_Normal …

1
分散シャドウマップは適切にレンダリングしたくない
エンジンにVSM(およびESM)を実装しましたが、ネットワークで公開されている多くの例で期待した結果が得られませんでした。 シャドウマップのフィルタリングをGL_LINEARに設定しましたが、結果を通常のシャドウマップと比較すると、明らかに悪くなります。 ほとんどのチュートリアルと同じように、ポイントライトシェーダーで直接モーメントを計算するか、テクスチャから取得しましたが、結果は同じです。 コード: uniform samplerCubeShadow shadowMap; ... vec4 worldSpace=inverse(ViewMatrix)*vec4(pos,1); vec4 coord=LightViewMatrix*worldSpace; vec4 abs_coord=abs(coord); float fs_z=-max(abs_coord.x, max(abs_coord.y, abs_coord.z)); vec4 clip=LightProjectionMatrix*vec4(0.0,0.0,fs_z,1.0); float d2=(clip.z / clip.w)*0.5+0.5; // clamp to [0..1] ... float shadowTexel=texture(shadowMap,vec4(coord.xyz,d2)); // VSM (Variance Shadow Map) // get partial derivatives float dx = dFdx(d2); float dy = dFdy(d2); vec2 moments …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.