2009-02-28 7 views
1

私はあなたがhereを見ることができるように、それが正しい道を示していない私の水の効果奇妙なvertexshader/pixelshaderグリッチ

と小さな問題を持っています。

V2P vs(float4 inPos : POSITION, float2 inTex: TEXCOORD) 
{  
    V2P Output = (V2P)0; 

    float4x4 viewproj = mul (matView, matProjection); 
    float4x4 worldviewproj = mul (matWorld,viewproj); 

    float4x4 reflviewproj = mul (matRLView, matProjection); 
    float4x4 reflworldviewproj = mul (matWorld, reflviewproj); 

    Output.Position = mul(inPos, worldviewproj); 
    Output.RLMapTex = mul(inPos, reflworldviewproj); 

    return Output; 
} 
P2F ps(V2P PSIn) 
{ 
    P2F Output = (P2F)0;   

    float2 ProjectedTexCoords; 
    ProjectedTexCoords.x = PSIn.RLMapTex.x/PSIn.RLMapTex.w /2.0f + 0.5f; 
    ProjectedTexCoords.y = -PSIn.RLMapTex.y/PSIn.RLMapTex.w /2.0f + 0.5f;  

    float2 ProjectedRefCoords; 
    ProjectedRefCoords.x = (PSIn.Position.x/PSIn.Position.w) /2.0f + 0.5f; 
    ProjectedRefCoords.y = (-PSIn.Position.y/PSIn.Position.w) /2.0f + 0.5f; 

    Output.Color = tex2D(samRLMap, ProjectedTexCoords);  

    return Output; 
} 

waterheightに沿って、目のyの値を反転しながら、反射マップは、レンダーターゲットにレンダリングされます。切り抜いた質感を持つ別のscreenが適用 はより明確に 私のHLSLコード変換何かのエラーを示しています。 (とベクトル0、-1,0)

私の質問:これのcuaseすることができますか?

+0

マークされた領域は水の一部ですか?それを水の水平線と比較すると、実際には水面上にあるようです。 – schnaader

+0

アーチファクトは垂直方向にも(ウィンドウの左端) – vladr

+0

はい、水面上にあります – Brammie

答えて

1

私はそれを見つけたと思う、反射されたビューのために使用されたマトリックスは間違っている。 標準ビューを使用するときちんと動作します

0

xを変更する理由がわかりません。それはyが反転されているのと同じままですか?

のように
float2 ProjectedTexCoords; 
    ProjectedTexCoords.x = PSIn.RLMapTex.x/PSIn.RLMapTex.w; 
    ProjectedTexCoords.y = -PSIn.RLMapTex.y/PSIn.RLMapTex.w /2.0f + 0.5f; 
+0

私はそれをスクリーン空間に変換していますから* テクスチャシーン全体を含む、同じ効果が画面の両側に表示されます。\ – Brammie

0

エッジピクセルを繰り返すテクスチャのように見えます。言い換えれば、テクスチャ境界を越えてテクスチャルックアップを行っている可能性があります。あなたの反射マップは十分に大きいですか?

テクスチャ座標が範囲外の場合、出力色を赤に設定してみてください。 (私はHLSLを話さないので、これについての構文はわかりませんが、可能ですと確信しています)

反射マップを拡大しますか?

これらの種類の問題は、完全なソースコードを見ることができても、デバッグするのが難しい場合があります。実際の回答ではなく、見た目の参考になります。私の精神的なデバッグの試み。

+0

異なるテクスチャを使用すると、RLMapTex.wの除算に問題があることがわかります。カメラから離れて... 反射マップはシーンと同じ大きさで、テクスチャ全体を描画するとうまく動作しますが、その方法ではバンプマップを使用できません – Brammie