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でFake Rim Lighting
UnityでFake Rim Lightingを実装したShaderです。 CG Shaders - Fake Rim Lighting - Artistic Experimentshttp://www.artisticexperiments.com/cg-shaders/cg-shaders-fake-3-point-lighting Sphereに適用してみたサンプル ...

Unityでshaderを書くときに参考になる公式リンク
Surface Shaderのサンプル集 Unity - Manual: Surface Shader exampleshttps://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html SurfaceOutput、SurfaceOutputStandardの定義と#pragma surfaceディレクティブに書けるキーワード ...

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) { ...

ブラウン管風のシェーダー
ブラウン管風のシェーダーを試してみました。 ノイズ版 使いどころは少し難しそうですが、良い雰囲気のシェーダーと思います。 ※ノイズ版はUniRXを使わない形に改変したものを使っています。 リンク [Unity3D]ブラウン管風シェーダーを作った | notargs.comhttp://wordpress.notargs.com/blog/blog/2...

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です