問題タブ [pixel-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.
xna-4.0 - XNA 4.0 の Pixel Shader からピクセルの位置を変更できますか?
各ピクセルの位置を変更する必要があります。(33,30) -> (40,55) など。XNA 4.0 の Pixel Shader 内で実行できますか?
directx - ピクセル シェーダーが呼び出されていないようです
私は DirectX をいじり回してきましたが、しばらくの間、この奇妙なアイデアに取り組んできました。奇妙な理由でピクセル シェーダーが呼び出されていないようです。それが可能かどうか、それとも私の愚かな間違いかどうかはわかりません。コードは次のとおりです (ほとんどをチュートリアルからコピーしました)。
シェーダー (HLSL) コードは次のとおりです。
DirectX の初期化とレンダリング コードは次のとおりです。
画面に何もレンダリングされません。ドットまたは大きな白いパッチが表示されるはずですが、表示されるのはレンダリング ターゲットのみです。私は Pix を実行してきましたが、PreVS と PostVS の変換は問題ないようです。助けてください!
xna - xna 4.0 スプライト + MRT + ピクセルシェーダー
拡散雷のために、色と法線の2つのレンダーターゲットを組み合わせて、結果を画面にレンダリングしようとしています。アイデアは、ピクセル シェーダーのみを含む効果を持つスプライトを使用して、テクスチャのレンダー ターゲットを結合することです。XNA コード:
何らかの理由で spriteBatch.Draw() で使用される rendertarget が結果に影響します。
ピクセル シェーダー:
両方のレンダー ターゲットのアルファ値は常に 1 です。エフェクトに頂点シェーダーを追加すると、結果は黒になります。spriteBatch.Draw() で何の効果もなしにレンダー ターゲットを 1 つ描画すると、各レンダー ターゲットのコンテンツが問題ないことがわかります。私はこれを理解することはできません。何か案は?
directx-11 - directx 11 で 1 回のパスで複数のテクスチャにレンダリングする
C++ directx 11 SDK を使用して、1 つのパスで 2 つのテクスチャにレンダリングしようとしています。1 つのテクスチャに結果イメージの各ピクセルの色 (3D シーンをレンダリングするときに画面に通常表示されるもの) を含め、別のテクスチャに各ピクセルの法線と深さ (法線用に 3 つの float と 1 つの float) を含める必要があります。深さのため)。今考えられるのは、2 つのレンダリング ターゲットを作成し、最初のパスを色としてレンダリングし、2 番目のパスで法線と深度を各レンダリング ターゲットにそれぞれレンダリングすることです。ただし、最初のパスで各ピクセルの色、法線、深度の情報を取得できるため、これは時間の無駄に思えます。ピクセル シェーダーで 2 つのテクスチャを出力する方法はありますか?
どんな助けでも大歓迎です。
PS ピクセル シェーダーの RWTexture2D または RWStructuredBuffer に沿って何かを考えています。ちょっとした背景: 計算シェーダーでさらに処理するには、2 つの画像が必要です。これにより、同期に関する副次的な問題が生じます。ピクセル シェーダーは (計算シェーダーとは異なり) 各ピクセルを一度に 1 つずつ書き込むため、ピクセル シェーダーが終了したことをどのように認識し、計算シェーダーに画像の後処理を開始するように指示するのでしょうか?
directx - 非常に単純なHLSLピクセルシェーダーを作成するときのエラー
私は、人間の視覚系の色のコントラスト感度のしきい値をテストするためにISlimDXアプリケーションを作成しています。被写体には、背景とのコントラストが低い大きな文字が表示され、文字を識別するように求められます。ただし、チャネルあたり8ビットの単純な色深度で利用できるよりも多くの色を表示する機能が必要です。(つまり、rgb値は0〜255です)。これを実現するための計画は、HLSLピクセルシェーダーとして実装された単純な「ディザリング」アルゴリズムを使用することです。基本的に、slimDXに、(140.25、140.25、140.25)のrgb値に対応するColor4(0.55f、0.55f、0.55f)の色でテキストを表面にレンダリングするように要求する場合、各ピクセルの各カラーチャネルに25%の確率で141に設定され、75%の確率で140に設定されます。
ただし、fxcでコンパイルしようとすると、プロトタイプシェーダーコードでエラーが発生します。コンパイル時に不正な文字コードが表示されますが、その理由がわかりません。また、HLSLの第一人者である場合は、私のコードを調べて、印象に残っているコメントを入力してください。この質問への回答からHLSLランダム関数を取得したことに注意してください。
ピクセルシェーダー内で乱数を生成できますか?
以下は私のシェーダーコードです。私の最初のHLSLコードとして多くの間違いがあった場合は、ご容赦ください。
編集: 以下の答えの助けを借りて、私は解決策に少し近づきましたが、まだいくつかの問題があります。私が借りたランダム関数はHLSLではなくGLSLで書かれているというcatflierのコメントを受け取りました。vec2をfloat2に変更し、ランダム関数を一番上に配置する必要がありました。それに加えて、GLSL mod()!= HLSL fmodであるため、mod関数も作成する必要がありました。また、GLSL fract()はHLSL frac()に変更されました。また、テキストファイルがUTF-8でエンコードされているという問題もありました。これにより、fxcでいくつかの問題が発生すると思います。ANSIに再エンコードした後、いくつかのより良いエラーメッセージを受け取ることができました。しかし、私はまだいくつかの問題を抱えています。
fxc /Zi /E DitherByChance DitherByChance.fx
DX9をターゲットにしているので、と同様にコンパイルしようとしましfxc /Zi /E DitherByChance /LD DitherByChance.fx
たが、どちらの場合も次のエラーが発生します。
undeclared indentifier 's0' error
この行からfloat4 oldColor = tex2D(s0, coords);
このs0引数が正確に何であるかはわかりませんが、別のシェーダーの例で見ただけです。誰かがグローバルsampler2D変数を宣言し、s0の代わりにそれを使用した別の例を見たので、これを試しました:
ただし、実行するfxc /Zi /E DitherByChance /LD DitherByChance.fx
と、次のエラーが発生します。
vs_2_0 target does not support texture lookup
何か案は?
position - ピクセル シェーダーでのワールド空間座標の計算
ピクセル シェーダーがあり、ワールド空間座標に関して各ピクセルの位置を計算したいと考えています。どうすればいいですか?何が必要ですか?
ps_input
float4 position : を持つ構造がありますSV_POSITION
。これは重要だと思いますが、内部に格納されている値はちょっとおかしいようです。
それらが何に関係しているのか理解できないようです。たとえば、ピクセルが 2 次元の場合、どうして w 成分や z 成分を持つのでしょうか?
私が使用DirectX
していて、ピクセル シェーダーはHLSL
. C++
CPU上の私のプログラミング言語として。
どんな助けでも大歓迎です。
texture2d - ピクセルシェーダーでタイルエンジンを作成できますか?
ピクセルシェーダーと2つのテクスチャを使用してタイルエンジンを作成しようとしています。1つのテクスチャがタイルセットと1つのマップを保持します。
テクスチャデータを実際の(サンプリングされていない)データとして読み取って、マップからインデックスを取得することはできますか?
そのピクセルデータを読み取るための最良の方法は何ですか?
私はtext2Dだけを試しましたが、それは何かが望まれることを残します(正直に言うと、ピクセルシェーダーには少し慣れていません)。
基本的に、マップテクスチャの特定のピクセルから実際のデータを読み取り、それをタイルテクスチャへの整数インデックスとして使用する方法が必要です。適切なテクスチャを作成してシェーダーに渡すことができたと仮定します。
何かご意見は?
(メトロにモノゲームを使用しているので、dxレベル9_1)
c# - Unity 3dシェーダーラボでピクセルシェーダーからテクスチャを返す方法は?
テクスチャを取り、マスキングなどを適用する単純なピクセル カラー シェーダを作成する方法:
のような方法で C# コードから次のシェーダーに渡すことができるテクスチャを返しますmats[1].SetTexture("_MainTex", mats[0].GetTexture("_MainTex"));
。
2d - WP8 ピクセルシェーダーによる画像処理
XAML アプリでこれを実行する方法はありますか?