調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

unity シェーダのお勉強②~Tilingとoffset~

目的

・Vマケ4(だか3)だか。に向けてシェーダをなんとか理解する。
C#はいける。Unityはほぼわからん。シェーダもっとわからん。おじさんが頑張る。
・エディタ C#はVS2019,2017かそこら。とUnity使います。C#さわるだけだから、VSCode使うかもわかんね。
・Unityは当面 2017/4/28f1使います。前回のVマケから触ってないのがもろバレだね。

参考もと

ありがたやー
https://amagamina.jp/unity-shader/

ぜんかい

プロパティの作り方まで。ぜんぜんビジュアルでてきてない。

シェーダへの受け渡し


参考ページをちょっとずつつまんで理解をすすめる。

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側ではこう
f:id:couraeg:20191128225048p:plain
ちょっと対応付けが独特。それぞれ以下のように対応されているらしい

_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ぺたー
f:id:couraeg:20191128225355p:plain
ペイントで適当にテクスチャかいてほぞん
f:id:couraeg:20191128225753p:plain
つくった画像をProjectにとりこんで
f:id:couraeg:20191128230029p:plain
D&Dでマテリアルのテクスチャ部分にぺたっとして適用
f:id:couraeg:20191128230128p:plain
そしたらなんか新しいマテリアルが勝手につくられたので、
f:id:couraeg:20191128230326p:plain
そいつをQuadにD&Dして適用
f:id:couraeg:20191128230447p:plain
・・・なんもうつらん。透過周りの設定だろうけど、面倒だからPlaneで再チャレンジ
f:id:couraeg:20191128230547p:plain
なんかでた。やったぜ。Tiling(1,1), Offset(0,0)が画像の状態。

tiling(2,1) offset(0,0)
f:id:couraeg:20191128230705p:plain
tiling(1,2) offset(0,0)
f:id:couraeg:20191128230744p:plain
tiling(1,1) offset(0.1,0) ちょっと左にずれてる。あーずれるってそういう。
f:id:couraeg:20191128230857p:plain
tiling(1,1) offset(0.25,0) 左にずれこんで、右側にかえってきているかんじ。
f:id:couraeg:20191128231026p:plain
tiling(1,1) offset(0.5,0) 0.5 でちょうど中心に入れ替わる形になる
f:id:couraeg:20191128231159p:plain
マイナス方向だと右にずれるのかな。
tiling(1,1) offset(-0.1,0) うん。ずれるな。
f:id:couraeg:20191128231254p:plain
ということは、-0.5は正の方向と結果が変わらんだろう
tiling(1,1) offset(-0.5,0) やっぱり。
f:id:couraeg:20191128231407p:plain
offsetの2番目の数値は上下だろうから、大体理解できた。なるほど。

画像いっぱいつくって疲れたのできょうはここまで。
やっぱり作ってみて試したほうが理解はやいなぁ。