2017-05-01 15 views
1

2色の間で簡単なトランジションを作成しようとしています。したがって、上端の色が#2c2b35で、下の色が#1a191fであるクワッドのレンダリング。頂点に色を適用して補間するシンプルなピクセルシェーダに色分けすると、色のバンディングの効果があり、高度なピクセルシェーダディザリング技法を使用しないとその効果を排除するオプションがあるかどうか疑問に思っています。Direct3D11ピクセルシェーダの補間

左の部分が私のアプリでレンダリングされ、右の部分がPhotoshopでレンダリングされるレンダリングの「ディザリング」オプションがチェックされています。

ありがとうございます。

答えて

1

バンディングは、すべてのレンダリングエンジンがある時点で処理しなければならない問題です。

ディザリングの実装を開始する前に、まず適切なsrgbパイプラインに従っていることを確認する必要があります。 (https://en.wikipedia.org/wiki/SRGB

正しいとする: RGBX8のスワップチェーンおよびレンダリングサーフェスにSRGB値が含まれている必要があります。最も簡単な方法は、レンダーターゲットビューをXXXX_UNORM_SRGB形式で作成することです。 テクスチャは、必要に応じてUNORM_SRGB形式のビュー(アルベドマップ)と適切でない場合はUNORM(ノーマルマップ)を使用する必要があります ライティングのようなシェーダ計算は線形空間になければなりません。

正しい書式を使用する場合のテクスチャとレンダリングターゲットは、読み書き時に変換を実行しますが、定数の場合は手動で行う必要があります。たとえば、#2c2b35の場合:0x2cはsrgb 44(0.1725)にありますが、線形値は0.025です。

グラデーションを行うには、シェーダの線形空間で行い、レンダーターゲットでsrgbオン書き込み。