【C++】 DirectX初心者質問スレ Part15 【C】
at TECH
394:デフォルトの名無しさん
08/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
バンプマップが光の入射ベクトルと法線ベクトルの差で
陰影をつけるテクニックなら、無指向の環境光で
陰影がつかないのはそれで正しい結果だと思うけど。
対策としては、ディレクショナルライトに変えるか
環境光に擬似的なライトの位置や方向を設定してみては?
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4777日前に更新/170 KB
担当:undef