SVGフィルターを使用して、いくつかの複雑なパスにぼやけた「ドロップシャドウ」タイプの効果を作成しています。
<defs>
<filter id="dropshadow" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feColorMatrix result="hueOut" in="SourceAlpha" type="hueRotate" values="340"/>
<feColorMatrix result="satOut" in="hueOut" type="saturate" values="3"/>
<feGaussianBlur in="satOut" stdDeviation="8"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
feColorMatrix
試行錯誤の末、上記の値に到達しました。(暗い色から明るい色への非常に美しい色相の変化があります。これは、行列の計算だけでは思いつかなかったでしょう。)基本的に、カラーホイールを340度回転させてから、飽和状態にします。ぼかしの直前に3の値を使用して色を付けます。(以前は仕様がやや不明確でしたが、試行錯誤の結果、1を超える値type="saturate"
は画像を飽和させ、1未満の値は画像を不飽和にすることが示されました。)
問題は次のとおりです。大量のパスを反復処理しているため、二重行列演算によってマシンの速度が低下して停止します。頻繁にクラッシュします。
いくつかの行列数学の第一人者は、上記の2つのfeColorMatrixフィルターfeColorMatrix
をtype = "matrix"の1つのより効率的なフィルタープリミティブに結合するための数値を計算するのに役立ちますか?スペックの要点はわかりますが、数学の面で頭を悩ませています。