シェーダー勉強内容(2022年8月)
はじめに
2022年8月に勉強した内容です。
過去の記事はこちら
Unity
8月はC#や他のことに集中しており、Shaderはそれほど書きませんでした。
シェーダーによる回転
Unityの親GameObjectを回転させると子オブジェクトも回転してしまって困ることがあり、GameObjectは回転せずにポリゴンのみを回転させる必要性があったのでShaderで回転をさせました。
#define SKADI_ROT_Z(a) float2x2(cos(a),sin(a),-sin(a),cos(a))
#define SKADI_DEG2RAD(x) SKADI_PI/180*x
v2f vert (appdata v)
{
v2f o = (v2f)0;
// ポリゴンを回転させる
v.positionOS.xy += _Pivot;
v.positionOS.xy = mul(v.positionOS.xy, SKADI_ROT_Z(SKADI_DEG2RAD(_Angle)));
o.positionCS = TransformObjectToHClip(v.positionOS);
return o;
}
頂点シェーダー内で回転行列を使って回転させます。
回転の中心を変更したいこともあると思うのでの中心点をずらせれるように_Pivotを頂点に加算します。
ラジアンのままだとパラメーター調節しにくいので角度に変換するマクロを作っておいて変換します。
今後
現在C#を書くほうが忙しく、あまりShaderを書いていませんがGLSLの日本語の書籍が販売されたりしているのでちょっと買って勉強したい感じです。
VRC用のShaderの開発も止まっているので再開したいです。