Kneeというものがあります。Curve周りに関するメモです。Curveとは下記の計算式で表される曲線のことです。Value、閾値をThresholdとしたとき、このグラフは次のようになります。Valueのうち、Thresholdの値よりも大きいものにのみ影響を与えたいときなどに役に立ちます。見ての通り、計算量もかなり少なめです。シェーダで記述する際にはゼロ除算を防ぐため次のような数式になります。CurveはThresholdの値が小さいほどカーブの曲率が大きくなります。Valueが小さいほど変化量が大きくなってしまいます。これで問題が起こらない場合はいいのですが、例えばブルームをかける明度の閾値計算にこれを使ったとき、ブルームがかかる部分とかからない部分が急激に切り替わるという現象が起こります。Thresholdという0〜1の値を定義します。これをThresholdと掛け合わせたものをKneeとします。次にこのKneeを使ってSoftという値を計算します。Curveの式の、ゼロとのmaxを取っていた部分をSoftとのmaxを取るように書き換えます。Kneeを使った曲線となります。Kneeの曲線は次のようになります。Thresholdを上げていくほど変化がなだらかになることがわかります。その代わり、Threholdとして設定した値よりも小さい値についても、計算結果が0より大きくなってしまいます。Kneeを適用することによって計算量が多くなりました。長い数式になっていますが、これはCPUで計算できる部分も多いため、シェーダで使う際にはうまくスクリプトと組み合わせると処理負荷は少なくできます。この辺りはいずれ具体的に追記するかもしれません。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。Blur(渦巻ブラー)のポストエフェクトを実装する月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。