【Unity/ShaderLab】オブジェクトのスケールの値を取得する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Unity/ShaderLab】オブジェクトのスケールの値を取得する

2023-2-14 | ,

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」)

参考文献・引用

おかげさまで移植が捗りそうです。ありがとうございます。