Shader内でTiling/Offset値の取得方法

UnityのShaderプログラム内で「Tiling」や「Offset」の値を知りたい場合は{TextureName}_STの値を参照すると良いそうです。

sampler2D _MainTex;
float4 _MainTex_ST;
_MainTex_ST.x; // Tilingのxの値
_MainTex_ST.y; // Tilingのyの値
_MainTex_ST.z; // Offsetのxの値
_MainTex_ST.w; // Offsetのyの値

テクスチャーのサイズを知りたい場合は{TextureName}_TexelSizeの方が使えます。

リンク

Unity – Manual: Accessing shader properties in Cg/HLSL
https://docs.unity3d.com/560/Documentation/Manual/SL-PropertiesInPrograms.html

関連記事

UnityでGlow shader
UnityでGlowっぽい雰囲気を実装したShaderです。 [Unity] Glowっぽいシェーダを書いてみた - Qiitahttp://qiita.com/edo_m18/items/b5ad2490b73126489c07 Capsuleに適用してみたサンプル ...

Cgで使えるbuilt-in関数のリファレンス
Cgで使えるbuilt-in関数のリファレンス The Cg Tutorial - Appendix E. Cg Standard Library Functionshttp://developer.download.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html Cg-3.1_April2012_ReferenceManual.p...

シェーダーを書くときのfloat/half/fixedの使い分け
シェーダーを書くときのfloat、half、fixedの使い分けについて float 通常のプログラミング言語のfloatと同じ32ビット ワールド空間の位置テクスチャ座標 half 一般に16ビット ベクトルオブジェクト空間位置HDRカラー fixed 一般的に11ビット テクスチャデータ 十分な精度になっているかどうかの検証は実機上...

Tiling/Offset値をスクリプトから設定する方法
MaterialのTexture設定にあるTilingとOffsetの値をスクリプトから設定したい場合はSetTextureScaleやSetTextureOffsetを使って次のような感じでできるそうです。 Material material; // Tiling material.SetTextureScale("_MainTex", new Vector2(1.0f, 2.0f...

コメントを残す

メールアドレスが公開されることはありません。