【Unity/ShaderLab】オブジェクトのスケールの値を取得する
2023-2-14 | Unity, Unity/Shader
UnityのShaderLabでオブジェクトのスケールの値を取得したい!
概要
この記事では、UnityのShaderLabでオブジェクトのスケールの値を取得する手順を掲載する。
Shader GraphをShaderLabに移植してるんだけども、Object
ノードで取得できるオブジェクトのScale
の値の取得の仕方がよく分からなかった。あの日までは。
仕様書
環境
- Unity 2022.2.4f1
手順書
オブジェクトのX軸、Y軸、Z軸のそれぞれのスケールの値を取得して、float3
に格納するサンプル。
float3 _Object_Scale = float3(
length(float3(UNITY_MATRIX_M[0].x, UNITY_MATRIX_M[1].x, UNITY_MATRIX_M[2].x)),
length(float3(UNITY_MATRIX_M[0].y, UNITY_MATRIX_M[1].y, UNITY_MATRIX_M[2].y)),
length(float3(UNITY_MATRIX_M[0].z, UNITY_MATRIX_M[1].z, UNITY_MATRIX_M[2].z))
);
まとめ(感想文)
めちゃくちゃインターネットで検索してたんだけども、私のワードチョイスが悪いのかなかなか見つからなかった。ところが普通に公式サイトでShader Graphのノードがどういうコード出力するか載せてったいう。(全部が全部載ってるわけじゃない)
一応、公式は確認したんだけどももももも。(言い訳)
その後、Shader Graphから生成されるコードをEditorで確認できることを知った私。(ノードの上で右クリック->「Show Generated Code」)
参考文献・引用
おかげさまで移植が捗りそうです。ありがとうございます。