n-yoda's blog

主にUnity3Dに関するあんまり技術的じゃないメモ的な何かを書いています。

Unityでテクスチャ生成(とアンチエイリアシング)

Unityでちょっとしたテクスチャを生成する際の共通部分を書いておけば、結構使う機会あるんじゃないかと思って書いてみました。

ソース:https://gist.github.com/n-yoda/8494984

Generate関数に、ファイル名、サイズ、アンチエイリアシングの精度、それと描画用の関数を渡すと描画できます。
画像の座標(右下0,0左上1,1)をもらって色を返す関数を渡してください。

例えば、Androidのインジケータっぽいこの画像を生成するスクリプト
f:id:yoda_n:20140119042708p:plain

[MenuItem("Assets/TextureGenerator/Indicator")]
public static void GenerateIndicator()
{
    Generate("Indicator.png", 128, 128, 5, (u, v) =>
    {
        var color = Color.magenta;
        var x = new Vector2(u - 0.5f, v - 0.5f);
        
        if (0.32f < x.magnitude && x.magnitude < 0.5f)
            color.a = (Mathf.Atan2(x.y, x.x) / Mathf.PI + 1f) * 0.45f;
        else
            color.a = 0;
        
        return color;
    });
}


マルチサンプリングでアンチエイリアシングをしています。
ガウシアンフィルタを求めているコードがコメントアウトしてある特に意味は無いです。