Metalで複雑なグラデーションを表現する際にハマった透明色の扱いについて by atsuyan

iOSDC Japan 2025
LT(5分)

Metalで複雑なグラデーションを表現する際にハマった透明色の扱いについて

n_atmark atsuyan n_atmark
3

現代のiOSアプリ開発ではSwiftUIの LinearGradientMeshGradient 、CIFilterの linearGradientFilter などを使えば簡単にグラデーションを実現することができます。

多くの場合はこれらの強力なAPIを使うことで事足りるのですが、イラスト制作におけるグラデーション効果などにおいては、表現の幅を広げるためにより高機能なグラデーション描画を行いたいことがあります。

例えば、虹のような表現を行うためにグラデーションの制御点を複数用意したり、透明色からブラシ色に徐々にグラデーションするような表現が用いられたり、色の変化に緩急をつけるために補間関数を設定するようなケースがあります。

そのようなケースにおいて、既存コンポーネントでは実現することが難しいため、自分でシェーダーを記述して実現することになります。

このLTでは上記のような高度なグラデーションをAppleプラットフォーム向けのグラフィックスAPIであるMetalを利用して行った話と、その際にハマった透明色の扱いについて紹介します。