- 394 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:44:59 ]
- ピクセルシェーダからスカラ値を出力 -> 入力したいんですが、
レンダリングターゲットのビット深度が最高16bit x 2だったので それを32bit x 1にする変換を組み込みました。 // ピクセルシェーダ出力 vOutColor.x = sSrcColor * 65536.0f; vOutColor.y = sSrcColor * 65536.0f * 65536.0f; vOutColor = floor(vOutColor) / 65536.0f; vOutColor = frac(vOutColor); ↑この出力を↓この入力に // ピクセルシェーダ入力 sInColor = vSrcColor.x; sInColor += vSrcColor.y / 65536.0f; しかしこれだと、ノイズが乗って正しく処理できないのか画像にゴミが出ます。 普通に16bit x 1でおこなった場合はゴミは出ません。 シェーダの精度の問題かと思い、65536.0fではなく256.0fでやっても同様でした。 せっかく高精度にしたのに、逆の結果になって哀しいんですが 何でだと思いますか? GPUはラデオン9700です。 >>392 バンプマップが光の入射ベクトルと法線ベクトルの差で 陰影をつけるテクニックなら、無指向の環境光で 陰影がつかないのはそれで正しい結果だと思うけど。 対策としては、ディレクショナルライトに変えるか 環境光に擬似的なライトの位置や方向を設定してみては?
|

|