こんにちは私は3つの距離の間でフェードしようとしています。たとえば、私はすべて同じシェーダと3種類のLODを使用する芝生システムを持っているので、3つの異なる距離をクロスフェードして、ポップインしないようにする必要があります。これが私のやり方です。HLSLシェーディングディスタンスフェードx3
float dist_near1 = 60; //farthest away from camera
float dist_far1 = 110; //farthest away from camera
float dist_near2 = 30;
float dist_far2 = 70;
float dist_near3 = 0 ; //Closest to camera
float dist_far3 = 50 ; //Closest to camera
float4 fading1 = 1-saturate((distance(Input.wpos,Input.cpos)-dist_near1)/(dist_far1-dist_near1));
float4 fading2 = fading1-saturate((distance(Input.wpos,Input.cpos)-dist_near2)/(dist_far2-dist_near2));
float4 fading3 = fading2-saturate((distance(Input.wpos,Input.cpos)-dist_near3)/(dist_far3-dist_near3));
float4 baseColour=tex2D(baseMap,Input.Texcoord);
color = lerp(fading2,fading3,fading1);
wpos = world position
cpos = camera position.
このコードは動作し、ちょうどそのはそれらを無視したり、上書きされたりなどの休息のためにカウントされませんdist_far3
にdist_near3
からフェードインしていません。私は他の方法でもうまくいきませんでした。
あなたが提供したコードで得られた結果を含めるようにしてください。 – sissy
ああ、申し訳ありません、それはうまくいかず、dist_near3からdist_far3にフェードアウトするだけで、残りの部分は無視されたり上書きされたりしません。 – RattlerCreed