0

RGBA8 レンダー ターゲットにレンダリングすると、3D アプリケーションにカラー バンディング アーティファクトが発生します。どうすればそれらを取り除くことができますか(より高い精度でバッファにレンダリングする必要はありません)?

アップデート

レンダリング プロセスは基本的に次のとおりです。
1) ジオメトリをテクスチャにレンダリングする
2) フルスクリーンの後処理ステップ (コントラスト、明るさ、彩度、トーン マッピング、およびガンマ補正) を適用する

以下に 2 つのスクリーンショットを示します。1 つは rgba8 ターゲットを使用し、もう 1 つは rgba16f ターゲットを使用しています。どちらも後処理ステップを無効にしてレンダリングされました。ご覧のとおり、rgba8 レンダリングにはバンディング アーティファクトがあります。

スクリーンショットの比較: rgba8 - rgba16f

ジオメトリは、次のシェーダーと加算ブレンディングを有効にして描画された 3 つの変形平面で構成されます。

float4 PlaneFP(VSOutput In) {
    float3 normal = normalize(In.WorldNormal);
    float3 eyeDirection = normalize(In.WorldPosition - scene.EyePosition.xyz);        
    float falloff = 1.0f - saturate(dot(normal, -eyeDirection));
    falloff = pow(falloff, 4.0f);        
    return float4(MaterialDiffuse * falloff, 1.0f);
}

後処理ステップを有効にすると、バンディング アーティファクトがより目立ちます。rgba16f を使用するとバンディングが消えますが、PS3 用にこのアプリを開発していて、浮動小数点ターゲットで MSAA を処理できません。

4

1 に答える 1

0

バンディングが見られる場合は、レンダリング パイプラインのある時点で、計算の 1 つの精度が思ったほど高精度ではありません。

たとえば、32 ビット テクスチャ、光源の 32 ビット カラーなどを使用している場合でも、拡散反射の計算でビット深度と速度のトレードオフが行われている場合、拡散光に沿ってマッハ バンディングが見られます。表面。

バンディングの原因を少なくとも絞り込みましたか (一度に個々の光源に切り替える、テクスチャを拡散色に置き換える、鏡面反射を除去するなど)。助けるために行われます。一部のスクリーン キャプチャは、少なくとも少しは役に立ちます。

于 2013-02-01T19:57:00.540 に答える