unity シェーダのお勉強②~Tilingとoffset~
目的
・Vマケ4(だか3)だか。に向けてシェーダをなんとか理解する。
・C#はいける。Unityはほぼわからん。シェーダもっとわからん。おじさんが頑張る。
・エディタ C#はVS2019,2017かそこら。とUnity使います。C#さわるだけだから、VSCode使うかもわかんね。
・Unityは当面 2017/4/28f1使います。前回のVマケから触ってないのがもろバレだね。
参考もと
ぜんかい
プロパティの作り方まで。ぜんぜんビジュアルでてきてない。
シェーダへの受け渡し
参考ページをちょっとずつつまんで理解をすすめる。
Propertiesブロックで設定されたプロパティは、頂点フラグメントシェーダ側で用意した同じ名前のプロパティに自動的に受け渡されます。
UnlitShaderの _MainTex に対応するのは、Passブロック中の真ん中あたりにあるこれです。
この辺、わりと急に進みだして頭が追い付かなかった。 UnilitShaderっていっているはエディタで編集知るほうのこと。
sampler2D _MainTex; float4 _MainTex_ST;
のうち、先にした側。
float4 == Vector4 とのこと。ベクトルがどうのこうの
https://docs.microsoft.com/ja-jp/dotnet/api/system.numerics.vector4?view=netframework-4.8
普段全然つかわないから知らなかった。なんで、float4なんて名前になってるんだろうか。
「4」なので4つ指定があるのだけれど、Unity側ではこう
ちょっと対応付けが独特。それぞれ以下のように対応されているらしい
_MainTex_ST.x Tiling X
_MainTex_ST.y Tiling Y
_MainTex_ST.z Offset X
_MainTex_ST.w Offset Y
TilingとOffsetの詳しい説明は参考元のページに書いてくれているけど、
Tilingはわかったんだけど、offsetの0.5の意味がよくわからん。試しにつくってみる。
tilingとoffset
QuadっていってるからとりあずQuadぺたー
ペイントで適当にテクスチャかいてほぞん
つくった画像をProjectにとりこんで
D&Dでマテリアルのテクスチャ部分にぺたっとして適用
そしたらなんか新しいマテリアルが勝手につくられたので、
そいつをQuadにD&Dして適用
・・・なんもうつらん。透過周りの設定だろうけど、面倒だからPlaneで再チャレンジ
なんかでた。やったぜ。Tiling(1,1), Offset(0,0)が画像の状態。
tiling(2,1) offset(0,0)
tiling(1,2) offset(0,0)
tiling(1,1) offset(0.1,0) ちょっと左にずれてる。あーずれるってそういう。
tiling(1,1) offset(0.25,0) 左にずれこんで、右側にかえってきているかんじ。
tiling(1,1) offset(0.5,0) 0.5 でちょうど中心に入れ替わる形になる
マイナス方向だと右にずれるのかな。
tiling(1,1) offset(-0.1,0) うん。ずれるな。
ということは、-0.5は正の方向と結果が変わらんだろう
tiling(1,1) offset(-0.5,0) やっぱり。
offsetの2番目の数値は上下だろうから、大体理解できた。なるほど。
画像いっぱいつくって疲れたのできょうはここまで。
やっぱり作ってみて試したほうが理解はやいなぁ。