問題タブ [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.
xna - HLSL: コンパイル時に一定のレジスタ制限を強制する
HLSL で、コンパイラが使用する定数レジスタの数を制限する方法はありますか?
具体的には、次のようなものがある場合:
vs_2_0 頂点シェーダーでは、コンパイラーは 256 を超える定数レジスターを使用して効果をうまく生成します。しかし、2.0 頂点シェーダーは 256 個の定数レジスターへのアクセスが保証されているだけなので、エフェクトを使用しようとすると、実行時にあいまいで GPU に依存する方法で失敗します。コンパイル時に失敗した方がいいです。
この問題は、コンパイラ自体が、私が求めているものの上に、舞台裏で定数レジスタを割り当てるため、特に厄介です。アセンブリをチェックして、制限を超えているかどうかを確認する必要があります。
理想的には、これを HLSL で実行したいと考えています (XNA コンテンツ パイプラインを使用しています) が、コンパイラに渡すことができるフラグがあれば、それも興味深いものです。
xna - HLSL: unaligned/packed float へのインデックス
私はいくつかのインスタンス化を行う頂点シェーダー (2.0) を持っています - 各頂点は配列へのインデックスを指定します。
次のような配列がある場合:
コンパイラは、100 個の定数レジスタを割り当てます。各定数レジスタは であるfloat4ため、必要なスペースの 4 倍を割り当てています。
定数レジスタを 25 個だけ割り当て、それぞれに 4 つの値を格納する方法が必要です。
理想的には、CPU と GPU の両方で のように見えるメソッドが必要float[]です (現在、 を呼び出しEffectParamter.SetValue(Single[])ており、XNA を使用しています)。ただし、手動でのパックとアンパックfloat4[]もオプションです。
また、これを行うことによるパフォーマンスへの影響は何ですか? それは実際にそれだけの価値がありますか?(私にとっては、これにより 4 ~ 5 回ごとに約 1 つのバッチが節約されます)。
directx - 構成ファイルを実行可能ファイルにビルドしますか?
私は現在、主に私が取り組んでいる HLSL シェーダーに基づいた小さなグラフィック デモ (DirectX を使用) に取り組んでいます。D3DX10CreateEffectFromFile を使用して、実行時に読み込み (およびシェーダーのコンパイル) を行っています。
ただし、完了したら、次の組み合わせを実行したいと思います。
- シェーダーをプリコンパイルして、ユーザーがデモをより速く起動できるようにします
- コンパイルされたシェーダー (または必要に応じてソースのみ) を埋め込む (実行可能ファイルにコンパイルする)
主に、デモを非常に簡単にコピーできる 1 つのファイルにしたいので、これを行います。
私が簡単にできることの 1 つは、ソース テキストを cpp に直接入れることですが、後で更新する必要があり、非常に面倒です。
(Visual Studio、DirectX、HLSL を使用して) このようなことを行うことは可能ですか?
optimization - 符号なしの 4 バイト (0 ~ 255) を float にエンコードし、HLSL を使用して再度エンコードするにはどうすればよいですか?
hlsl シェーダーの 1 つがピクセルごとに複数のテクスチャ ルックアップを必要とするタスクに直面しています。私の 2D テクスチャは 256*256 に固定されているため、この制約が与えられた特定のテクセルをアドレス指定するには 2 バイトで十分なはずです。次に、各フロートに 2 つの xy 座標を配置し、Vector4 形式の画像にパックすると、ピクセル空間で 8 つの xy 座標を取得するというのが私の考えです。これらの 8 つの座標は、別のテクスチャをサンプリングするために使用されます。
これを行う理由は、グラフィックス メモリを節約し、処理時間を最適化するためです。複数のテクスチャ ルックアップを必要としないためです。
ところで: 1 つのサンプリングを使用して 4 つの float から/への 16 バイトのエンコード/デコードが、エンコードされていないデータを使用した 4 つのサンプリングよりも遅いかどうかを知っている人はいますか?
編集:これはShader Model 3用です
c++ - シェーダーへの値の受け渡しの問題
シェーダーに値を渡す際に問題が発生します。アプリケーションは正常にコンパイルされますが、キューブオブジェクトがシェーディングされません。以下は私のコードの大部分です。
シェーダーと通信するためのコードのほとんどは、createObjectメソッドにあります
myGame.cpp
そして、以下は私のシェーダーです
effect.fx
directx - DirectX 10 で HLSL エフェクトに情報を送信するにはどうすればよいですか?
鏡面照明を計算するために、ビュー ベクトルを ID3D10Effect 変数に送信したいと考えています。実行中の DirectX プログラムから HLSL にベクトルまたはスカラー値を送信するにはどうすればよいですか? 私は何かをしたい
c++ - SetMatrix() がすべての値を HLSL にコピーしない
D3DXMatrices のベクトルの内容をシェーダーに使用したいと考えています。
ベクトルの内部構造はわかっているので、これは問題になりません (ただの動的配列であるため)。
構造体を埋めるために hlsl でこの行列にアクセスすると、次の奇妙な動作が発生します。
デバッグ中に、マトリックスが必要な変数でうまく埋められていることがわかります。構造体の内容をハードコードでチェックしようとすると、LightRange を除いてすべてゼロになります。
ご覧のとおり、float4x4 にアクセスするさまざまな方法を試しましたが、他の結果はありませんでした。
hlsl がすべての変数をコピーしないのはなぜですか?
c# - すべてのピクセルの効率的なピクセル シェーダー合計
HSLS ピクセル シェーダーを使用して、画像内のすべてのピクセルの合計を効率的に計算するにはどうすればよいですか? WPF シェーダー効果として呼び出すことができる Pixel Shader 2.0 に興味があります。
c# - WPF のブリーチ バイパス シェーダー効果を実装するにはどうすればよいですか?
WPF のブリーチ バイパスシェーダー効果を実装するにはどうすればよいですか? また、最初の 2 つのTehnicolor Film Processes
を実装する可能性、または古いフィルムの外観になるさまざまな方法にも興味があります。
wpf - 操作回数が最も少ないソートアルゴリズム
操作数が最も少ないソートアルゴリズムは何ですか? WPF のピクセル シェーダー効果 v2.0 の一部として HLSL に実装する必要があるため、ピクセル シェーダーの制限を考慮すると、操作の数は非常に少なくて済みます。9 つの値、具体的には現在のピクセルとその近傍を並べ替える必要があります。