ピクセルシェーダーにピクセルあたりの実際のカメラ距離を出力したいと思います。つまり、結果は(精度とクランプのわずかな違いを除いて)ニア/ファークリッピングプレーンに依存しないはずです。
また、ニアプレーンの真ん中のピクセルは境界のピクセルよりもカメラに近いため、ニアプレーン上に正確にある(そしてそれに平行な)プレーンは均一な結果を出力しないはずです。
ピクセルシェーダーの各ピクセルの実際のカメラ距離を計算するにはどうすればよいですか?(実際のシェーダー言語は関係ありません)
送信するカメラの位置は制服です。位置をフラグメントシェーダーに変化させて送信します。これらのベクトルには、組み込みの距離関数を使用します。
このように見えますが、必要がない場合は、.wで複雑にしすぎないでください。
または、頂点の位置にModelViewマトリックスを掛けて、その上でlength()を使用します。
これがCgのサンプルですhttp://developer.download.nvidia.com/shaderlibrary/packages/DepthColor.cgfx.zip
これはFXComposerのセットアップであり、他の形式に採用するのは簡単です。