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

グラフィックハードウェア上で実行され、シーンのレンダリング方法を高度に制御するコンピュータープログラム

1
プレイヤーキャラクターがエリアの内外に出たときに、どのようにフェードアウトできますか?
プレイヤーがエリアから出たときにプレイヤーをフェードアウトさせたい。 たとえば、人が建物に入ったとします。人が建物の外にいるとき、彼は見られるべきではありませんが、彼が入ったとき、彼は徐々に見えます(フェード効果を使用して)。 象が緑のエリア内にいるとき、彼のアルファは1でなければなりません 象が緑のエリアの外にいるとき、彼のアルファは0でなければなりません
17 unity  shaders 

1
フォン照明-鏡面照明には非常に奇妙なものがあります
Phongライティングを実装しました。トーラスと球体は予想どおりに点灯するなど、すべてが機能しているように見えます。しかし、指向性ライトの鏡面照明に関して奇妙なことに気付きます。 以下に2つのスクリーンショットを示します。 最初: 第二: ご覧のように、カメラがオブジェクトから遠い場合、より多くの領域に鏡面照明があります。 以下は、単純化された頂点シェーダーです。 #version 330 core layout(location = 0) in vec3 vertexPos; layout(location = 1) in vec3 vertexNorm; layout(location = 2) in vec2 vertexUV; uniform mat4 MVP; uniform mat4 M; out vec2 fragmentUV; out vec3 fragmentNormal; out vec3 fragmentPos; void main() { fragmentUV = vertexUV; fragmentNormal = …


2
OpenGL:シェーダーを配置する場所
私はOpenGL ES 2.0を学ぼうとしていますが、シェーダーを「管理」するための最も一般的なプラクティスは何だろうと思っています。 私がこの質問をしているのは、私が見つけた例(Android SDKで提供されているAPIデモに含まれている例など)で、通常、GLRendererクラス内のすべてが表示され、私ができるように物事をかなり分けたいからです。たとえば、OpenGL ES 1.0コードと同じように、テクスチャ付きのクワッドを描画したいときに再利用できるGLImageオブジェクト(現時点では2Dのみに焦点を当てています)。私が見つけたほとんどすべての例で、シェーダーはクラス属性として定義されています。例えば: public class Square { public final String vertexShader = "uniform mat4 uMVPMatrix;\n" + "attribute vec4 aPosition;\n" + "attribute vec4 aColor;\n" + "varying vec4 vColor;\n" + "void main() {\n" + " gl_Position = uMVPMatrix * aPosition;\n" + " vColor = aColor;\n" + "}\n"; public …

1
GLSL、1つまたは多くのシェーダープログラムですべてですか?
OpenGLを使用して3Dデモを行っていますが、GLSLが多少「制限されている」ことに気づきました(または、私だけですか?)。とにかく、私は多くの異なる種類の資料を持っています。一部のマテリアルにはアンビエントカラーと拡散カラーがあり、一部のマテリアルにはアンビエントオクルージョンマップがあり、一部にはスペキュラマップとバンプマップがあります。 1つの頂点/フラグメントシェーダーペアですべてをサポートする方が良いでしょうか、それとも多くの頂点/フラグメントシェーダーを作成し、現在選択されているマテリアルに基づいて選択する方が良いでしょうか?OpenGLまたはD3Dの通常のシェーダー戦略とは何ですか?
17 opengl  3d  shaders  glsl 

6
ユニット選択サークルをマージする方法は?
サークル選択をマージすることでこの効果をどのように実現するか知りたい 説明する画像は次のとおりです。 基本的に私はこの効果を探しています: サークルのマージ効果はどのように達成できますか?この効果に関する説明は見つかりませんでした。これらのテクスチャを投影するために、デカールシステムを開発できることは知っていますが、マージエフェクトを作成する方法はわかりません。 可能であれば、純粋なシェーダーソリューションを探しています。

1
レイヤードアルファクワッドを使用したグラウンドフォグの適合性
レイヤードアプローチでは、地面に平行に配置された一連の大規模なアルファテクスチャクワッドを使用して、介在するすべての地形ジオメトリを交差させ、霧の中にいるときに地面の霧を非常に効果的に上から見下ろし、やや効果を下げます地平線に向かっています(下の画像を参照)。 代わりに、主にシェーダーベースのアプローチは、代わりに、グラウンドフォグ基質へのビュー距離の関数として密度を計算し、それに基づいてフラグメント値を出力します。 各アプローチを自分でパフォーマンステストする必要はありませんが、最初に、レイヤードアルファテクスチャアプローチがどのようなパフォーマンスに影響するかについて、他の人の経験(推測ではありません!)を聞きたいです。私は特に、頻繁に引用されるオーバードローの影響のためにお願いします(平均的なデスクトップシステムがどの程度充填率を制限しているかはわかりません)。このアプローチを使用するゲーム、特に古いゲームのリストは非常に便利です。これがDX9 / OpenGL2以前のハードウェアで実行可能であれば、私にとってはうまくいく可能性があります。 1つの大きな問題は、この種の効果に関するものです。 (画像クレジットはlume.comのLumeに送られます) 垂直霧のグラデーションが連続的/滑らかであることに注意してください。OTOHは、テクスチャ付きのクワッドレイヤーを使用して、レイヤーをウォークスルーするときにレイヤーが非常に明白になるとのみ想定できます。これは、フォグプレーンがフレームごとにプレーヤーに対面するように配置されている場所とは対照的です。
16 opengl  3d  textures  shaders 

4
固定機能とシェーダー:初心者向け?
現在、私は大学でコンピューターサイエンスを学んでいます。小さなゲームを作成するために、ある時点で既存のエンジンを利用することを計画していますが、今の私の目標は、基礎、つまり3Dプログラミングを学ぶことです。私はすでにDirectXとOpenGLの選択に関するいくつかの研究を行ってきましたが、それから生まれた一般的な感情は、トレーニングホイールプラットフォームとしてOpenGLまたはDirectXを選択するかどうか、多くの知識が他のプラットフォームに移転可能であるということでした。したがって、OpenGLはより多くのシステムでサポートされているため(おそらく、学習対象を選択する愚かな理由)、OpenGLを最初に学習することにしました。 OpenGLを習得するというこの決定を行った後、私はさらに調査を行い、これまで何らかの形で気づかなかった二分法、つまり固定機能OpenGLと最新のプログラマブルシェーダーベースのOpenGLを発見しました。最初は、シェーダーベースのOpenGLを学ぶことを選択するのは当然の選択だと思ったのは、それが今日の業界で最も一般的に使用されているからです。しかし、その後、ここにあるJason L. McKessonによる非常に人気のあるLearning Modern 3D Graphics Programmingに出会いました:http : //www.arcsynthesis.org/gltut/ 私は入門書を読み、「この本について」セクションで、著者は次のように述べています。 「まず、このアプローチで学んだことの多くは、ユーザーがプログラマビリティで解決しなければならないグラフィックの問題に遭遇した場合、必然的に放棄されなければなりません。 同時に、次のように述べることにより、固定機能が初心者にとってより簡単で迅速な学習曲線を提供するというケースも作ります。 「一般的に、固定機能パイプラインを使用して新人グラフィックプログラマーに教えるのが最も簡単であると考えられています。」 当然、どのパラダイムを学ぶべきかについて私が対立する理由を見ることができます:固定機能の方法の学習(そしてその後の学習)に多くの時間を費やしますか、それともシェーダーから始めることを選択しますか?私の主な関心事は、現代のプログラマブルシェーダーでは、プログラマーが固定機能パイプラインを既に理解していることをどういうわけか必要とすることですが、私はそうではありません。 TL; DR =意欲的なゲームグラフィックプログラマーとして、固定機能または最新のシェーダーベースのプログラミングを通じて3Dプログラミングを学ぶことは私の一番の関心事ですか?

1
クラカトアの光の効果の背後にある数学は何ですか?
クラカトアの光の効果の背後にある数学を知りたい(例についてはここをクリック)。 光源はパーティクルとともに移動しますが、シェーディングはどのように行われますか?Phongシェーディングのような単純なものですか?GPUでそのような効果をリアルタイムで実装することは可能ですか?

2
RenderMonkeyの後継者はいますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 5年前に閉鎖されました。 GLSLシェーダープログラミングから始めて、RenderMonkeyを検討しています。悲しいことに、AMDはもはやサポートしていません。どうして?後継者はいますか?
16 shaders  glsl 

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ます。 残りのコードは、シェーダーに正しい値を提供するだけで構成されています。必要に応じて、私はそれをうまく提供できます。

1
交換効果の実際的なコスト
私は自分のプロジェクトにXNAを使用しており、それらのフォーラムでは、メッシュのエフェクトを交換するとコストが比較的高いという事実に言及していることがあります。 GPUに適切なパラメーターとともに。 誰かがこのプロセスについて費用がかかるものを正確に説明できるかどうか疑問に思いましたか?そして、可能であれば、「比較的」コンテキストに入れますか? たとえば、ピッキングを支援するために短いシェーダーを使用したい場合、次のようにします。 すべてのオブジェクトの効果を変更し、一意の色を計算して識別し、シェーダーに提供します。 すべてのオブジェクトをメモリ内のレンダーターゲットに描画します。 ターゲットから色を取得し、それを使用して選択したオブジェクトを検索します。 そのプロセスを完了するのにかかる合計時間のどの部分がシェーダーの交換に費やされるでしょうか?私の本能は、シェーダーがどれほど単純であっても、シーンを再びレンダリングすることは、プロセスの他の部分よりも桁違いに遅いと言うでしょう。
16 xna  shaders 

2
GLSLシェーダー効果:モーションブラーの方法
私は完全な2D環境を持ち、スプライトは風景、キャラクターなどとして回ります。 より最新の外観にするために、カメラをすばやく動かすときの最新のFPSゲーム(Crysis)ブラーに似たモーションブラーエフェクトを実装します。 サイドスクローラーでは、カメラが動いているときに高速で移動するように見えるように、このわずかなぼかしが望ましい効果になります。誰かがこれを行う上でいくつかのヒントをくれるなら、私はピクセルシェーダーであると思います、私は感謝するでしょう。

7
手続き型ピクセルシェーダーエフェクトのクールな例は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 手続き型またはスクリーン空間のピクセルシェーダー効果の良い例は何ですか?コードは不要です。私はただインスピレーションを探しています。 特に、私はジオメトリやシーンの残りの部分に依存しないエフェクトを探しています(したがって、クワッドで単独でレンダリングされても大丈夫に見えるでしょう)。また、画像処理に基づいていません(「ベース画像、」(テクスチャを組み込むことはできます)。マルチパスまたはシングルパスで問題ありません。スクリーンショットまたはビデオが理想的ですが、アイデアも有効です。 ここで私は(RenderMonkeyサンプルからのすべて)を探しているもののいくつかの例は次のとおりです。 altテキストhttp://public.blu.livefilestore.com/y1pXcNg_0EPZVzwu1T84a4Yek373x8062rhrNCA7UcftTjCkeiY-5uAuJiBYY29x2E53p5MO-uMA8FmEquvxsPCkA/effect1.jpg?psid=1 ALTテキストのhttp :?//public.blu.livefilestore.com/y1p_5Lx7BdjFyFRBkbcc0WakAT7Q-99fVcFOxmTXBbG4VtoFzC0UfAj51eSnE7ZOD84EYL2Y51HhMS2nWsohhn1mQ/effect2.jpg PSID = 1 ALTテキストhttp://public.blu.livefilestore.com/y1p_5Lx7BdjFyE3KhYtHe-Cdg7XuXcJ9Ou-GKzED-kZnzACyB5ypA6NSCfsYfuKa0h3ztoDRwwq9qBddX2OfG0fhg/effect3.jpg?psid= 1 代替テキスト 私はこの質問を知っています。私は実際のシェーダー実装のソースを求めているのではなく、いくつかのインスピレーションを与えるアイデアを求めています-NVIDIAシェーダーライブラリのアイデアはほとんどシーンを必要とするか、画像処理効果です。

2
可変線幅のトゥーン/セルシェーディング?
私はセルシェーディングを行うためにそこにいくつかの広範なアプローチを見ています: 法線が反転したモデルの複製と拡大(私にとってはオプションではありません) エッジ検出へのSobelフィルター/フラグメントシェーダーアプローチ エッジ検出へのステンシルバッファアプローチ 面とエッジの法線を計算するジオメトリ(または頂点)シェーダーアプローチ たとえば、ジオメトリ中心のアプローチが照明や線の太さを最大限に制御できると仮定するのは正しいでしょうか。丘のシルエットラインが徐々に平野に合流するのを見るかもしれない地形のために? 地形の表面にピクセル照明が必要ない場合はどうすればよいですか?(そして、セルベースの頂点ベースまたはテクスチャマップベースのライティング/シャドウイングを使用する予定ではないでしょう。)それから、ジオメトリタイプのアプローチを続けるか、代わりにスクリーンスペース/フラグメントアプローチを使用する方が良いでしょうか物事をシンプルに保つために?もしそうなら、メッシュ全体のアウトラインだけではなく、メッシュシルエット内の丘の「インク」をどのように取得し ますか(そのアウトライン内に「インク」の詳細はありませんか?(示唆的な輪郭、折り目))。 最後に、ジオメトリシェーダーを使用して、反転法線アプローチを安価にエミュレートすることは可能ですか?これに関する私の懸念は、すべての頂点を確実に複製し、それに応じてスケーリングできることですが、法線の反転やフラグメントシェーダーの明確な色付けにどのようにアプローチするのでしょうか? 私が欲しいもの-シルエット内の邪魔な線で線の太さを変える... 欲しくないもの... 編集:さらなる研究により、次のことが明らかになりました... 私は地形に大量の頂点を持っているため、距離ベースのLoDを考慮しても、すべての複製とスケーリングに伴う計算の複雑さのために、フリップされた法線もジオメトリシェーダーベースのアプローチも(錐台カリングを使用しても)賢明なオプションになりますアップロードされた頂点。 テレインサーフェス上でソリッドトーンシェーディングの形でピクセル単位のライティングを必要としないことを考慮すると、これらのように、フェース法線ベースのアプローチ(そうでない場合は正しいサーフェスライティングの要件)を検討することも賢明ではなくなります計算するのは当然非常に高価です。しかし、それらが最高レベルの制御を提供することは事実です。たとえば、「芸術的な」ストロークを使用してエッジをシェーディングする機能:美しいですが、非常に複雑なゲーム環境では実際には実行できません。 ステンシルバッファーは、シェーダーですべての作業を行うことを好むため、避けたいものです。(上記の赤いアウトラインの例は、ステンシルバッファーで行われました-古い学校です。) これにより、フラグメントシェーダーのイメージ空間アプローチが残ります。計算の複雑さは、頂点の数ではなくフラグメントの数に削減されます(私の場合、これはジオメトリシェーダーで行う必要がある操作よりも10〜100倍少ない操作です)。これには、不連続フィルター(Sobel演算子など)を適用できるgバッファー(通常バッファーとオプションで深度バッファーで構成される)を生成するために、複数のレンダーパスが必要です。深さの不連続性は、示唆的な輪郭と折り目を可能にします。このアプローチの私の唯一の問題は、インクエッジの幅をより細かく制御できないことですが、フラグメントシェーダーの適切なアルゴリズムを使用すれば、これが可能になると確信しています。 質問はより具体的になりました:フラグメントシェーダーで、特に外側のシルエットで、可変エッジ幅をどのように正確に取得するのですか?

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