問題タブ [hlsl]

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 に答える
3545 参照

silverlight - 背景画像を差し引く HLSL シェーダー

Silverlight 用の HLSL ピクセル シェーダーを使用して、ビデオ イメージから背景イメージを減算しようとしています。私のアルゴリズムが正しく機能していないため、私が使用しているよりも洗練されたアルゴリズムを誰かが提案できますか?

この例を表示するには、Web カメラを搭載したコンピューターが必要です。

  1. ページhttp://xmldocs.net/alphavideo/background.htmlに移動します
  2. [記録開始]を押します。
  3. シーンの外に体を移動し、[背景のキャプチャ] を押します。
  4. 次に、体をシーンに戻し、スライダーを使用して Toleance 値をシェーダーに合わせます。
0 投票する
1 に答える
3075 参照

graphics - HLSLでレジスタをどのように数えますか?

シェーダー モデル 2.0 では、256 個の定数レジスタを使用できます。私はさまざまなシェーダーを見ていて、単一のレジスタを構成するものを理解しようとしていますか?

たとえば、私のインスタンス化シェーダーでは、次の変数が関数の外側で宣言されています。

いくつのレジスターを消費しましたか? それらをどのように数えますか?

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

c# - Reflection.Emitの短い形式のオペコードでエラーが発生しました

hlslピクセルシェーダーと非常によく似ていますが、サポートする小さな言語を作成しています。この言語はreflection.emit、同じ機能を実装する.NETアセンブリを構築するために使用します。私は現在、分岐命令の実装をテストしていますifが、ユニットテストの1つ(if内部が大きいif/else)で次のエラーメッセージが表示されて失敗しました。

System.NotSupportedException:位置:32の不正な1バイトブランチ。要求されたブランチは:132でした。

私の場合、短い形式の指示を使用することで問題を追跡しましたOpCodes.Br_S。解決策は単純でしたが、私は置き換えましたOpCodes.Br_SOpCodes.Br、この解決策についていくつか質問があります。

このソリューションは、生成されたコードのパフォーマンスに影響を与えますか?

Br_Sシングルバイトを正しく生成したい場合、およびBrその他の場合はどうすればよいですか?ここでの問題は、ビジターパターンを使用してifいて、出力する必要があるような分岐命令の場合、BrまたはBr_s最初に、残りのコードがジャンプするのに1バイト以上必要かどうかを知る方法がないことです。ラベル。私の質問をよりよく説明するために、これは次のステートメントに対して生成するコードです。

私の言語:

IL:

この場合、私は2つの短い形式の命令を使用しble.sており、.NETコンパイラと同じようbr.sにを実装しています。ifただし、.NETコンパイラは選択することができますが、br.s場合brによっては、私の問題は、どのようにして同様のことを実行できるかということです。

Tnks

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

directx - HLSL:構造体内で配列を使用する

HLSLの奇妙な動作に遭遇しました。次のような構造体に含まれる配列を使用しようとしています(ピクセルシェーダーコード):

コードは論理的に意味がなく、単なるサンプルです。問題は、このコードをコンパイルしようとすると、次のエラーが発生することです(25行目はforループ行です)。

(25,7):エラーX3511:ループの展開を強制しましたが、展開に失敗しました。

ただし、配列を構造体の外に置くと(で宣言するだけfloat a[17]shMain)、すべてが期待どおりに機能します。

私の質問は、構造体を使用しているときに、DirectXが(展開可能な)forループを展開しようとするのはなぜですか?これは文書化された動作ですか?配列を構造体の外に置くことを除いて、利用可能な回避策はありますか?

2010年6月からシェーダーモデル4.0、DirectX10SDKを使用しています。

編集:Something明確にするために、作業コードを追加していますが、構造体の使用法をプレーン配列 に置き換えるだけです:

このコードはコンパイルされ、期待どおりに機能します。forループの前に属性を追加しても機能[loop]します。つまり、展開されません(これは正しい動作です)。

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

wpf - wpfがサポートするTEXCOORD以外のシェーダー入力はありますか

定数レジスタを依存関係プロパティに関連付けたり、ブラシをサンプラーに関連付けたりできることは知っていますが、wpfシェーダーのすべての例で宣言を使用しています

main(float2 uv:TEXCOORD):COLOR

私はHLSLの完全な初心者ですが、TEXCOORD以外のセマンティクスがあることを知っています。それらのいずれかをWPFシェーダーで使用できますか?

同様に、セマンティックCOLOR以外に使用できる有効なリターンはありますか?

または、セマンティクスはユーザーに「リマインダー」するだけで、WPFは、受信したシェーダーを、TEXCOORD入力とCOLOR出力があるかのように実行します(float4またはstruct入力でチョークします)。

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

c# - XNA でファイルからシェーダーを動的にコンパイルして実行する

ファイルからピクセルシェーダーを動的にコンパイルしてメッシュに適用できるかどうか疑問に思っています。

まず、いくつかの背景情報から始めます。私は、質問にとってそれほど重要ではないデータの範囲に基づいて HLSL ピクセル シェーダーを作成するシステムを持っています。重要なのは、これらのシェーダーがテクニックやパスを使用しないことです。.fx ファイルとして使用することを意図していないためです。

このShaderCompiler.CompileFromFile()メソッドは、ファイルを正常にコンパイルしてCompiledShader.

このシェーダーをメッシュに適用することは可能ですか?

各ファイルのエントリポイントを見つけて、.xmlファイルとしてコンパイルできるようにする手法でラップしたくないのでEffect

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

graphics - レンダリングされたUV値の最小値と最大値の取得(Direct3D)

特定のオブジェクトが特定の視点から画面上に描画されたときに生成されるピクセルに割り当てられた最小および最大のUV値を計算する必要があります。たとえば、UVマップされた立方体があり、前面のみが表示されている場合、min(UV)とmax(UV)は、表示されている面のピクセルに割り当てられた最小および最大のUV座標に設定する必要があります。

Direct3D 9シェーダー(および可能な限り最低のシェーダーモデル)を使用してこれを実行し、処理を高速化します。頂点シェーダーは、各入力頂点のUV座標を取得し、それらを変更せずにピクセルシェーダーに渡すのと同じくらい簡単です。一方、ピクセルシェーダーは、頂点シェーダーによって生成された値を取得し、これらを使用して最小および最大のUV値を計算する必要があります。

私が知りたいのは:

  1. ピクセルシェーダーの呼び出し間で状態(現在の最小値と最大値)を維持するにはどうすればよいですか?
  2. シェーダーによって生成された最終的な最小値と最大値をプログラムに取り込むにはどうすればよいですか?

HLSLでこれを行う方法はありますか、それとも私は手作業でそれを行うのに行き詰まっていますか?HLSLが機能しない場合、シェーダーを使用せずにこれを行うための最も効率的な方法は何でしょうか。

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

graphics - HLSL 半透明プラスチック シェーダー

内部に色付きのライトがある白いプラスチック オブジェクトを複製するシェーダーを作成しようとしています。半透明になるシェーダーを使用し、オブジェクトの内部にライトを配置すると、光が透けて見えるようにするか、内部にライトの効果を偽装するシェーダーを配置します。

私が目指している効果は、これらの写真に似たランプシェードを通過する光のようなものです。

代替テキスト 代替テキスト 代替テキスト

理想的には、光の強度と色を制御して、光を脈動させ、いくつかの明るい蛍光色を回転させることができます。

どこから始めればよいかわかりませんが!

私の質問は、そのようなシェーダーを作成できるようにするために研究すべきテクニックを知っている人、または出発点として使用できる同じ/類似のシェーダーの例を持っている人はいますか? または、仕事をするシェーダーを提供したい場合でも

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

silverlight - 円柱効果を得るための HLSL

Silverlight 4 でアプリケーションを作成する必要があり、シリンダーにラップされたような画像を表示する必要があります。Effects of Silverlight では使用しないので、HLSL コードが必要です。
私は Silverlight の 3D ライブラリでそれを行うつもりはありません。ピクセルを変更するための HLSL コードのみが必要です。
私の画像はこの 代替テキスト
ように見える必要があります ありがとう。

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

directx - HLSL でのレンダリング深度

こんにちは皆さん、これは簡単な作業のはずですが、何らかの理由でうまくいきません...

シェーダーを使用してシーンの深度を視覚化したいだけです。

深さの値を取得するには (またはそう思った)、ワールド空間内の位置とビュー位置の間の距離を計算します。

そして対応するピクセルシェーダー

白い色しか得られない

そこで、値を深さまで乗算する試行錯誤を開始しました。

対象物までの距離に応じて満足のいく結果が得られます。そのため、オブジェクトに近づくと、値を再度調整する必要があります。

だから何か非常に間違っている...

読んでくれてありがとう!