問題タブ [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.
directx - コンパイルされた directx9 シェーダ ファイルの形式は?
fxc.exe によって生成されるコンパイル済みのピクセルおよび頂点シェーダー オブジェクト ファイルの形式は、公式または非公式にどこかに文書化されていますか?
定数名を読み取って、シェーダー ファイルから割り当てを登録できるようにしたいと考えています。D3DX の効果フレームワークがこれを実行できることはわかっていますが、D3DX はユーザーのマシンにインストールされていない可能性があり、他には必要ないため、D3DX の使用を避ける必要があるため、directx の更新を実行する必要がないようにしたいと考えています。 .
効果フレームワークがそれを行うことができれば、ファイル形式を見つけることができれば私もそうすることができますが、どこにも文書化されているようには見えません。
(これは directx9 で使用するためのものです)
rounding - 一貫性のない丸めを使用しているように見える HLSL tex2d サンプラー。なぜ?
オブジェクトの領域をその場所に応じて異なる方法でレンダリングする必要があるコードがあります。これらの領域を定義するためにカラー マップを使用しようとしています。
問題は、カラー マップからサンプリングするときに衝突が発生することです。つまり、カラーマップ内の異なる色を持つ 2 つの領域は、サンプラーから同じ値が返されます。
カラーマップのさまざまな形式を試しました。それぞれの場合で、各領域の色が「5」離れているように設定しました。
- インデックス付きの色
- RGB、RGBA : 領域 1 は RGB 5%、5%、5% になります。リージョン 2 には、RGB 10%、10%、10% などがあります。
- HSV グレースケール: 領域 1 の HSV は 0,0,5% になります。リージョン 2 の HSV は 0、0、10% などになります。
(The Gimp で選択された値)
tex2D サンプラーは値 [0..1] を返します。
[次に、リージョンから int 配列インデックスを導出するつもりです。それを行うコードは無関係なので、質問から削除されました]
「5%」の色をサンプリングすると、hlsl で 0.05098 の「領域」が得られました。このことから、5% は 5/100*255、つまり 12.75 を表し、テクスチャに格納されると 13 に丸められると仮定します。(推論: 0.05098 * 255 ~= 13)
このロジックにより、50% は 127.5 として格納されます。
サンプリングすると、0.50196 が得られます。これは、128 として格納されたことを意味します。
70% は 178.5 として保存する必要があります。
サンプリングすると、0.698039 が得られます。これは、178 として格納されたことを意味します。
ここでどのような丸めが行われていますか?
(127.5が128に、178.5が178に?!)
編集: OK、 http: //en.wikipedia.org/wiki/Bankers_rounding#Round_half_to_even どうやらこれは「銀行家の丸め」です。なぜこれが使用されているのかわかりませんが、問題は解決します。どうやら、それはGimpの問題です。
Shader Model 2 と FX Composer を使用しています。これは私のサンプラ宣言です。
c# - 表示せずに HLSL/GPU にオフロードしますか?
私の知る限り、FFT やパーリン ノイズなどの特定の数学関数は、GPU でピクセル シェーダーとして実行すると、はるかに高速になります。私の質問は、これを利用して結果を計算し、ビットマップにストリーミングしたい場合、Silverlight などで実際に表示する必要なく実行できるでしょうか?
より具体的には、パーリンやその他のノイズが多く含まれる大規模な地形の生成、およびハイパスや高さマップからの法線の導出などの後処理にこれを使用することを考えていました。
java - JAVA 用の HLSL または HYDRA ピクセル シェーダー言語はありますか?
JAVA に対応している HLSL または HYDRA ピクセル シェーダー言語はありますか? だからイメージがあります。HYDRA を使用した Flash または C# を使用した HLSL で行うように、ピクセル シェーダー言語を使用して変更したいと考えています (どちらの場合も、シェーダーをプリコンパイルしています)。では、HYDRA や HLSL などを CROSSPLATFORM (win mac lin) JAVA スタンドアロン アプリケーションの開発に使用するにはどうすればよいでしょうか。
いくつかのチュートリアルが必要です..
directx - HLSL-サンプラーの最小/マグ/ミップフィルターを設定して、すべてのフィルター/アンチエイリアシングを無効にするにはどうすればよいですか?
tex2Dサンプラーがあり、テクスチャに存在する色だけを正確に返したいです。Shader Model 3を使用しているため、loadを使用できません。
テクセルが複数の色に重なっている場合は、1つを選択して、テクセル全体をその色にします。
これを行うには、ミップマッピング、または少なくともミップのトリリニアフィルタリングを無効にしたいと思います。
私の問題は、Min / Mag / Mipフィルタリングを本当に理解していないので、これらをどの組み合わせに設定する必要があるのか、またはこれが私が求めているものであるかどうかさえわからないことです。
完全なテクスチャが球にマッピングされた後の関連領域のスクリーンショット。
アンチエイリアシング/ブレンディング/フィルタリングのアーティファクトがはっきりと表示されます。私はこれらが欲しくありません。
MSDNはこれを言っています。
D3DSAMP_MAGFILTER:タイプD3DTEXTUREFILTERTYPEの倍率フィルター
D3DSAMP_MINFILTER:タイプD3DTEXTUREFILTERTYPEの縮小フィルター。
D3DSAMP_MIPFILTER:縮小中に使用するミップマップフィルター。D3DTEXTUREFILTERTYPEを参照してください。
D3DTEXF_NONE:D3DSAMP_MIPFILTERとともに使用すると、ミップマッピングを無効にします。
hlsl組み込み関数を理解するためのもう1つの優れたリンク。
解決済み
HLSLの問題ではありません!申し訳ありません。答えられない質問がたくさんあるようです。Ogreは上記の設定を上書きしていました。これはで修正されました;
c# - HLSL効果のコンパイルに関する問題
私のコードは次のとおりです。
と私のfxファイル:
それはとても単純なので問題を引き起こさないはずですが、そのようなエラーがあります:
エラーはどこにありますか?他の何かに問題があるようですが、他の例もコンパイルされないため、どこにあるのかわかりません。多分いくつかの無効な文字?しかしここで?または、EnterはUNIX形式である必要がありますか?
c# - HLSL、異なる Texture2D ダウンスケーリング アルゴリズムを使用したプログラム ピクセル シェーダー
いくつかの画像補間アルゴリズムを HLSL コードに移植しようとしています。
問題は、現在の位置を制御できず、ピクセルを介した実際のループの「内部」部分しか制御できないため、ピクセルシェーダーのプログラミングには異なるアプローチが必要になることです。
私はほぼ一日中グーグルで検索してきましたが、ループで使用されるスケーリングアルゴリズムを備えたオープンソースライブラリは見つかりませんでした。いくつかのメソッドを移植できるライブラリはありますか?
http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspxを見つけましたが、問題に対する彼のアプローチを本当に理解していません。それを移植するのは面倒です...
ウィキペディアは数学的なアプローチを示しています。私の質問は次のとおりです。単純なスケーリング アルゴリズムを含む、移植が容易なグラフィック オープン ソース ライブラリはどこにありますか? もちろん、そのようなライブラリが存在する場合でも。
directx - DirectX でテクスチャの一部だけを読み込んでいますか?
テクスチャ ファイルがある場合、定義された四角形 (上、左、下、右) を使用してその一部のみをロードするにはどうすればよいでしょうか?
テクスチャの残りの部分をそのままにして、ロードしたい部分だけを読み込むことは技術的に可能ですか?
c++ - HLSLと照明に関する問題
HLSLコードで何が起こっているのかを理解しようとしていますが、C ++でエラーが発生しないため、デバッグする方法がありません。アプリケーションを実行すると、アプリケーションが閉じます。作成した3D平面に照明を追加しようとしています。以下は私のHLSLです。問題は、Pixelシェーダーメソッドが構造体「outColor」を返す場合に発生します。戻り値を構造体「psInput」に戻すと、すべてが再び機能するようになります。私の光のベクトルと色はfxファイルの一番上にあります
以下は私のc++コードの一部です。これを示している理由は、シェーダーが評価するサーフェス法線を作成するのはほぼそれだからです。照明用
以下は私のc++コードです。図面を表示し、パスを呼び出す
shader - HLSL シェーダー間でデータを渡す/既存のカラー値を読み取るにはどうすればよいですか?
2 つの HLSL ps2.0 シェーダーがあります。簡略化すると、次のとおりです。
シェーダー 1
- テクスチャを読み取ります
- このテクスチャに基づいてカラー値を出力します
シェーダー 2
- 問題: Shader 1 から色を読み込む必要がある
- 入力色の関数である最終的な色を出力します
(1 つのシェーダーの最大頂点シェーダー出力に達したため、それらは異なるシェーダーである必要があります)
私の問題は、Shader 2 が既存のフラグメント/ピクセルの色にアクセスする方法を理解できないことです。
HLSL でこれらのことを行う方法を知っていれば、私の問題は解決します。
- 既存のピクセルの色を読み取る (これは可能ではないと思います)
- Shader 1 の結果を Shader 2 に float4 として渡す
- Shader 1 の結果をテクスチャとしてメモリにレンダリングし、Shader 2 にそれを読み込ませます。