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に適用してみたサンプル ...

Unityで滝のシェーダー
Unityのシェーダーで滝の表現を試してみました。 参考にさせてもらったのはこちらのblogです。 Unity シェーダーチュートリアル  滝を作ってみる – Tsumiki Tech Times|積木製作http://tsumikiseisaku.com/blog/shader-tutorial-waterfall/ Textureの作り方で雰囲気も変わってくるかなと...

UnityのImage Effectsで上下反転してしまう場合の対策
UnityのImage Effectsで上下が反転してしまう場合は、UNITY_UV_STARTS_AT_TOPを使って次のようなコードを追加してみると良いそうです。 sampler2D _MainTex; float4 _MainTex_TexelSize; #if UNITY_UV_STARTS_AT_TOP if (_MainTex_TexelSize.y < 0) { ...

Shader.Findでエラーが発生してしまう場合
Unity Editor上では問題なく動作しているのに、ビルドしたゲームのShader.Findでエラーとなる場合はAlways Included Shadersを設定するとうまくいく場合があるそうです。 var s = Shader.Find("Custom/Example"); Assert.IsNotNull(s); //error Always Included Shader...

コメントを残す

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