問題タブ [shader]

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.

0 投票する
1 に答える
344 参照

wpf - wpfシェーダーテンプレート

Greg Schechterのブログで提供されているシェーダーテンプレートを使用しました:http://blogs.msdn.com/greg_schechter/archive/2008/08/11/a-visualstudio-buildtask-and-project-and-item-templates-for-writing -shadereffects.aspx

wpfシェーダーテンプレートを追加してプロジェクトを作成するのはすべて簡単でした。また、xamlを編集するときに、シェーダーがVisualStudio2008デザイナーを介して機能していることもわかります。しかし、プログラムを実行すると、次のエラーが発生します 。タイプ'ShaderEffectLibrary1.Effect1'が見つかりません。コンパイル時に使用されるアセンブリは、ロード時に使用されるアセンブリとは異なる可能性があり、タイプが欠落しています。

0 投票する
2 に答える
923 参照

opengl - シェーダーへの OpenGL テクスチャ ベースの内部フォーマット

シェーダーで OpenGL glTexEnv の動作を模倣しようとしています。これは非常に複雑な機能ですが、実行できるはずです。唯一の問題は、テクスチャ ベースの内部フォーマットによって関数の動作が異なることです。テクスチャからその情報を取得するにはどうすればよいですか? テクスチャ ベースの内部フォーマットは glTexImage2D 関数で指定されるので、変数に保存し、バインドされたテクスチャに応じて均一なシェーダに渡す必要がありますか、それとも OpenGL で取得できますか?

0 投票する
4 に答える
1880 参照

xna - XNA SpriteBatch と BasicEffect は互換性がありませんか?

グローバル スケールで 2D SpriteBatch レンダリングされた一連のグラフィックスのアンビエント ライティングを制御したいと考えています。SpriteBatch.Draw に渡された色をブレンドすることでこれを実行できることはわかっていますが、これをグローバルに実行したいと思います。

BasicEffect シェーダーは、単純なシーン用に XNA で固定関数パイプライン スタイルの照明を制御します。

BasicEffect シェーダーと SpriteBatch のシェーダーは互換性がありませんか? 誰かがこれらを一緒に機能させましたか?

0 投票する
1 に答える
4360 参照

c++ - Deferred Shading DirectX デモ?

私は遅延シェーディングについて多くのことを読んでいて、試してみたいと思っています。問題は、ディファード シェーディングが非常に多くのライトを同時にサポートできることを示すサンプルが見つからないことです。コード サンプラーの 1 つのライトと nVidia HDR サンプルを使用した非常に単純なデモを 1 つ見つけましたが、それ以上のものはありませんでした。

照明を使用してシェーディングを定義する方法に関する優れた入門チュートリアル (コード付き) をどこで入手すればよいか、誰にもわかりませんか? 1 つのライトで機能させることはできますが、1 つのライトでは少し単純すぎます (明らかに :P)。また、ディファード シェーディング コードでディレクショナルライトを作成する方法しか知りません。これは素晴らしいですが、ライトをレンダリングする通常の方法とは多少異なるので、チュートリアルや見つけられるものがあるかどうか、または私が理解するのに役立つ資料を読むだけかどうか疑問に思っていました。遅延レンダリングでのシェーダーと特別な fx の記述はどのように機能しますか?

助けてくれてありがとう!

0 投票する
1 に答える
77 参照

shader - ATIX550 Cg で HardwareShadowMap を使用できませんか?

私の英語でごめんなさい。私は英語が得意ではありません。まったく同じコードですが、GF7600GT では、Tex2Dproj は正しい値を返すことができます。X550 はテクスチャ サンプルの深度に戻りますが、ATI グラフィックス カードは Cg の NV を完全にサポートしていませんか?

0 投票する
2 に答える
7985 参照

directx - さまざまな HLSL サンプラーの種類は何ですか?

私は現在 DX9/SM3 を使用していますが、HLSL サンプラーに関する MSDN ドキュメントには、さまざまなサンプラー タイプの使用方法の説明が非常に不足しているようです。さらに悪いことに、彼らは DX9 と DX10 を 1 つの記事でカバーしようとしているため、すべてのキーワードがごちゃまぜになっています。

sampler Name = SamplerType { Texture = < texture_variable >; [状態名=状態値;] ... };

...

サンプラーの種類

[in] 次のいずれかであるサンプラーの種類: samplersampler1Dsampler2Dsampler3DsamplerCUBEsampler_stateSamplerState

Direct3D 9 と Direct3D 10 の違い:

Direct3D 10 は、1 つの追加のサンプラー タイプをサポートします: SamplerComparisonState

この書き込みに反して、SamplerStateDX10のみのような気がします。私が目にする事実上すべてのコードは、 SamplerType を使用sampler_stateしています。BasicHLSL (DX9) からの簡単な例:

samplerさまざまな_SamplerType_s がすべて存在するのはなぜsampler2Dですかsampler_state。とにかくフェッチするときは明示的である必要があります。たとえばtex2DtexCUBE、では、ここで何が起こっているのでしょうか?

0 投票する
3 に答える
3231 参照

qt - OpenGLを使用したQtMDIアプリ:有効なスクリーンショットを取得する方法は?

Qtで書かれたMDIアプリがあります。一部のサブウィンドウにはQGLWidget、OpenGLコンテキストなどが含まれます。これらの中で最も顕著なものは、OpenGL頂点シェーダーとフラグメントシェーダーを使用してデータを視覚化します。

アプリケーションのメインウィンドウのスクリーンショットをプログラムでキャプチャする必要があります。もちろん、たまたま表示されているすべてのサブウィンドウも含まれます。最初は簡単に聞こえますが(「間違いなく何度も尋ねられるので、ググってみましょう!」)、よく見ると少し注意が必要です...

これが私がこれまでに試したことです:

  1. QPixmap::grabWidgetシェーダープログラムを使用するサブウィンドウでは機能しません。これは、リダイレクトコンテキストが必要なOpenGL拡張機能をサポートしていないように見えるためです。(レンダリングコードは、関連付けられたコンテキストが必要な拡張機能をサポートしていることを確認し、サポートしていない場合は続行を拒否します。)
  2. QPixmap::grabWindow基本的なプリミティブのみを使用するものも含め、すべてのOpenGLコンテキストをサイレントに空のままにします。
  3. QGLWidget::grabFrameBufferAlt+PrtScr動作しますが、特定のサブウィンドウのOpenGLコンテキストのみをキャプチャしますが、アプリケーション全体(基本的にはWindowsで何が行われるか)を取得したいと思います。

また、最初に#2を実行してから、すべてのサブウィンドウに対して#3を繰り返し、#3の結果を#2から画像の正しい場所にコピーしてみました。これは、いくつかのサブウィンドウをオーバーラップさせるまでは非常にうまく機能しました。その場合、#3の画像がサブウィンドウのフレームなどを上書きします。したがって、このアプローチでは、厄介なコーナーケースをすべて処理するために、おそらくはるかに多くのコードが必要になります...

いくつかの追加の背景:スクリーンショットを取得したら、ビデオを作成するためにそれらのいくつかをシーケンスに入れます-おそらくffmpegを使用します。そのため、この質問は私の前の質問(の最初の部分)の一種の続きになります。アプリがシングルコンテキストのスタンドアロンOpenGLプログラムから、ウィンドウやUIウィジェット全体にQtを使用し、サブウィンドウにグラフィックを埋め込むものに進化しただけです。

もちろん、Qt風のクロスプラットフォームソリューションを好む一方で、Windows固有のハックに頼ることも検討したいと思います。Alt+PrtScr(私は非常に正しいことをしていることがわかるので、これは可能であるはずです。)

それで、何か提案はありますか?

0 投票する
2 に答える
4906 参照

c++ - 3D タンジェント スペースの計算

GLSL シェーダーで法線マッピングを使用するには、各頂点の法線ベクトル、接線ベクトル、複接線ベクトルを知る必要があります。RenderMonkey は、独自の定義済み変数 (rm_tangentおよびrm_binormal) を提供することで、これを簡単にします。この機能を自分の 3d エンジンに追加しようとしています。各頂点の xyz 座標、UV テクスチャ座標、法線ベクトルを使用して、三角形の各頂点のタンジェントとバイタンジェントを計算できるようです。いくつかの検索の後、三角形構造の各頂点のタンジェントとバイタンジェントを計算するこの関数を考案しました。

この関数を使用して計算値をシェーダーに送信すると、モデルは RenderMonkey の場合とほぼ同じように見えますが、非常に奇妙な方法でちらつきます。OpenGL を送信している接線と従接線に問題があることを突き止めました。これにより、私のコードが何か間違っているのではないかと疑うようになります。誰でも問題を確認したり、他の方法を試すための提案をしたりできますか?

また、上記のコードは非常にハックであり、何が起こっているかの背後にある数学をほとんど理解していないことも指摘しておく必要があります。

0 投票する
1 に答える
1620 参照

directx - HLSL ループ/サンプリングの問題

次のようなHLSLコードがあります。

私が得ている結果は、そのループが 1 回だけ実行されることと一致しています。PIX でシェーダーを確認したところ、事態はさらに奇妙になりました。コード内の位置を示す黄色の矢印がループに到達し、ループを 1 回通過して最初に戻り、その時点で黄色の矢印は二度と移動しませんが、カーソルはコードを移動して結果を返します (PIX のバグか、単に使い方が間違っているのでしょうか?)

これは、コンパイラによってループの外に移動されたテクスチャ読み取りに関係する問題である可能性があるのではないかと疑っていますが、LOD を手動で設定しているため、tex2Dlod では発生しないと思いました:/

そう:

1) 問題は何ですか?

2) 提案された解決策はありますか?