問題タブ [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.
c# - XNA でファイルからシェーダーを動的にコンパイルして実行する
ファイルからピクセルシェーダーを動的にコンパイルしてメッシュに適用できるかどうか疑問に思っています。
まず、いくつかの背景情報から始めます。私は、質問にとってそれほど重要ではないデータの範囲に基づいて HLSL ピクセル シェーダーを作成するシステムを持っています。重要なのは、これらのシェーダーがテクニックやパスを使用しないことです。.fx ファイルとして使用することを意図していないためです。
このShaderCompiler.CompileFromFile()
メソッドは、ファイルを正常にコンパイルしてCompiledShader
.
このシェーダーをメッシュに適用することは可能ですか?
各ファイルのエントリポイントを見つけて、.xmlファイルとしてコンパイルできるようにする手法でラップしたくないのでEffect
。
graphics - HLSL 半透明プラスチック シェーダー
内部に色付きのライトがある白いプラスチック オブジェクトを複製するシェーダーを作成しようとしています。半透明になるシェーダーを使用し、オブジェクトの内部にライトを配置すると、光が透けて見えるようにするか、内部にライトの効果を偽装するシェーダーを配置します。
私が目指している効果は、これらの写真に似たランプシェードを通過する光のようなものです。
理想的には、光の強度と色を制御して、光を脈動させ、いくつかの明るい蛍光色を回転させることができます。
どこから始めればよいかわかりませんが!
私の質問は、そのようなシェーダーを作成できるようにするために研究すべきテクニックを知っている人、または出発点として使用できる同じ/類似のシェーダーの例を持っている人はいますか? または、仕事をするシェーダーを提供したい場合でも
wpf - 再作成WPF のピクセル シェーダー/その他のメソッドで
<BevelBitmapEffect>
(他の効果の中でも)減価償却されたので、シェーダー効果でまったく同じものを再現する方法を探しています(、BevelWidth
、EdgeProfile
、LightAngle
およびRelief
のプロパティを含むSmoothness
)。
私はピクセルシェーディングにある程度精通しており、主にShazzamの画像/要素全体の色操作だけですが、ベベルを作成する方法はわかりません。これは頂点シェーダーですか? もしそうなら、どのように始めればよいですか? 私はこれについて高低を検索しましたが<BevelBitmapEffect>
、カスタムでの再生を開始できるようにする情報のかすかな情報を見つけることができないようですEffect
.
または、以下のコメントに基づいて、これは WPF の 3D ですか?もしそうなら、<BevelBitmapEffect>
以前のバージョンの WPF に付属していたものを模倣するコード ライブラリを再作成するためのコード ライブラリはありますか?
wpf - ピクセル シェーダを RenderTargetBitmap にレンダリングできません! 助けてください!
関連付けられたピクセル シェーダーを持つコントロールを RenderTargetBitmap にレンダリングする機能をテストするために、非常に単純な WPF アプリケーションを作成しました。次に、ビットマップをファイル (jpeg) に書き込みます。コントロールはビットマップにレンダリングされますが、ピクセル シェーダー効果はコントロールに適用されません。
コードと XAML は次のとおりです。
XAML:
silverlight - 円柱効果を得るための HLSL
Silverlight 4 でアプリケーションを作成する必要があり、シリンダーにラップされたような画像を表示する必要があります。Effects of Silverlight では使用しないので、HLSL コードが必要です。
私は Silverlight の 3D ライブラリでそれを行うつもりはありません。ピクセルを変更するための HLSL コードのみが必要です。
私の画像はこの
ように見える必要があります
ありがとう。
image-processing - ピクセル シェーダーの Floyd–Steinberg ディザリングの代替手段
Floyd-Steinberg ディザリングアルゴリズムはピクセル シェーダーでは実装できないことを私は知っています。そのアルゴリズムは厳密にシーケンシャルであるためです。しかし、視覚的な出力がFloyd-Steinbergアルゴリズムに似ている高度に並列なディザリングアルゴリズムが存在する可能性がありますか?
問題は、ピクセル シェーダー (できれば GLSL) に実装するのに適したディザリング アルゴリズムとは (非常に) Floyd-Steinberg ディザリングに似た出力品質を持つものです。
ところで。マルチパス アルゴリズムは、パスが 2 つ以下になり、それらのパス間の CPU オーバーヘッドが小さくなるまで許可されます。
何か案は ?
編集:
24 ビット カラーから 21 ビット カラーへのディザリングが必要です。
(つまり、8 ビット/チャネルから 7 ビット/チャネルに変換する必要があります。)
EDIT 2
問題をうまく説明できていないかもしれません。だから私は正確な問題を少し拡大しようとします。問題はこれです - この写真
があるとします: 上の写真がありますが、ディザリング アルゴリズムで処理されています:
これは、ディザリングが適切かどうかをテストする手順です:
1. これらの写真を Photoshop で 2レイヤー。
2.レイヤーブレンドモードを「差分」に選択します。
3. レイヤーに対して「表示をマージ」操作を実行して、レイヤーを 1 つだけ取得します。
4. 操作を実行 => イメージ/調整/イコライズ
その後、次のようなイメージを取得する必要があります。
ご覧のとおり、モノトーンの赤色である中央のピクセルはまったくディザリングされていません。また、左右の画像ゾーンのディザリングも少し異なります。このような動作でディザリング アルゴリズムを再構築してみてください。
xna - ピクセルおよび頂点シェーダー用のツール
ピクセルシェーダーと頂点シェーダーをテストするためのツールはありますか?
wpf - WPF での画像処理
WriteableBitmap を使用して 1 秒あたり 10 フレームでデータを 500x500 8 ビットのインデックス付きイメージとしてレンダリングする WPF アプリケーションを設計しています。
2 次元メディアン フィルタリング、ガウス ブラー、移動平均など、計算能力を必要とするいくつかのリアルタイム画像処理アルゴリズムを出力に追加したいと考えています。
- そのようなタスクを実行するために WPF ピクセル シェーダーを使用しようとした人はいますか?
- プラットフォーム固有の画像処理ライブラリは効率的ですか? (例: インテル IPP ?)
- それとも、DirectX ベースのカスタム レンダラーが解決策になるのでしょうか?
どんなヒントでも大歓迎です。現時点では、すべてが .NET アプリケーション内で計算されており、最適化の余地があると考えています。
ご協力ありがとうございました、
よろしくお願いします、
ロマン
glsl - シェーダーフレームバッファーのリードバック
新しいシェーダーモデルで、ターゲットフレームバッファーからピクセル値を読み戻すサポートがあるかどうか疑問に思いました。これは、描画パイプラインの後の(プログラム不可能な)段階ですでに行われていると思います。これにより、この機能がプログラム可能なパイプラインに追加された可能性があります。
テクスチャにバインドされたフレームバッファに描画してから、このテクスチャをシェーダーに送信できることを認識しています。同じ機能を実現するためのよりエレガントな方法を望んでいました。
shader - WebGLフラグメントシェーダーの奇妙な浮動小数点演算
簡単なWebGLプログラムを書いています。シェーダープログラムで奇妙な動作に悩まされています:
条件( 1.01 * 2.0 > 1.0 )
はtrueと評価されますが、条件( 0.99 * 2.0 > 1.0 )
はflaseと評価されます
1.0
他の何かよりも小さい数を掛けるたびに、私はより少ない数を得る1.0
なんでそうなの?
[編集]
フラグメントシェーダーを使用して、ウィンドウレベルとウィンドウの高さ(線形ランプ)を使用して16ビットの符号なし整数データを8ビットのビットマップに変更し、画面に表示しています。16ビットデータを内部形式としてWebGL(AFAIK)に直接保存する方法がないためUint8Array(width*height*3)
、最初のバイトをRチャネルに保存し、2番目をBチャネルに保存してgl.RGB
、gl.UNSIGNED_BYTE
テクスチャに配置することにしました(おそらくLUMINESCANCE_ALPHA
より良いでしょう)。
シェーダーでは、単語形式のバイトを再構築し、レベリングを行います。シェーダープログラム:
ご覧のとおり、愚かな線がありますif( 1.0*2.0 > 1.1 ) gl_FragData[0] = vec4(1,0,0,1);
。浮動小数点演算をテストする場所です。この例では、画像全体が赤ですが、条件がである場合0.999999999*2.0 > 1.1
、答えは偽です。リサンプリングされた16ビット画像に奇妙なアーティファクトが含まれていると、何かを疑うようになりました。
Chrome8とFirefox4でテストしました。浮動小数点演算について何も理解していないと思います。