1

t=.1 で色が 0.5A + 0.5B になるように、色 A と B の間を線形補間する必要があります。どうすればこれを達成できますか?

これをシェーダーで使用する必要があるため、分岐が非常に遅くなる可能性があるため、条件ステートメントはオプションではありません。式形式での解決策が必要です。

これが私の解決策です。これは非常に遅いです:

fixed3 color1= lerp(colorA, colorB, (1.0 - t) * .5 );
fixed3 borderColor= lerp(colorA, colorB, (1.0 - .1) * .5);
fixed3 color2= lerp(colorA, borderColor, t * 10.0 );

finalColor = lerp(color2, color1, saturate( (t - .1) * 100000.0) );

最後の lerp は、補間値が 0 または 1 であることを保証することです。

ありがとう。

4

1 に答える 1

1

あなたの質問の最初の行に集中します: 2 つの色値または色ベクトル間の線形補間です。

補間の中間点をマークする任意の時点を定義します。

tm = 0.1

カラーベクトルC(t)の計算では、開始時間 t1 または終了時間 t2、あるいはその両方を定義する必要もあります。

t1 = t2 - 2*(t2-tm) = 2*tm - t2
t2 = t1 + 2*(tm-t1) = 2*tm - t1

色Aから色Bへの移行を行うには、次のように色成分を計算します。

C = A + (B - A) * (t - t1) / (t2 - t1)
于 2013-01-14T12:25:22.603 に答える