シェーダー勉強内容(2022年9月)

はじめに

2022年9月に勉強した内容です。
過去の記事はこちら

Unity

9月は8月同様ゲーム制作が忙しく、あまりShaderを書くことができませんでした。

シェーダーによるせん断

ゲーム制作中にプランナーから『絵を斜めに変形できないのか』と質問があったので試験的にポリゴンをせん断してみました。

#define SKADI_SHEAR(x,y) float2x2(1, x, y, 1)
#define SKADI_DEG2RAD(x) SKADI_PI/180*x

v2f vert (appdata v)
{
    v2f o = (v2f)0;

    // ポリゴンをせん断させる
    v.positionOS.xy = mul(v.positionOS.xy, SKADI_SHEAR(SKADI_DEG2RAD(_ShearAngle.x), SKADI_DEG2RAD(_ShearAngle.y)));

    o.positionCS = TransformObjectToHClip(v.positionOS);

    return o;
}

頂点シェーダー内で行列を使ってせん断しています。
回転をさせるときの行列などは調べるとすぐに出てきますが、せん断の計算がなかなか出てこなくて、画像処理などのキーワードで検索したらやっと出てきました。

せん断してるだけなので平行四辺形に変形することはできますが台形だったり他の形に自由自在に変形できるわけではないです。

せん断を実装しましたが結局思っていた絵にならなかったのでボツになりました…

今後

最近はたまにはクリエイティブコーディングしたいなと思い、空き時間に触ったりShaderToyを見てチマチマ勉強している感じです。

また何か勉強したら記事にするつもりです。

この記事が気に入ったらサポートをしてみませんか?