「ややこしいUnityの座標系の確認方法」シリーズ. UnityのシェーダCgについて. フラグメントシェーダの受け取る引数i.vertexはスクリーン座標の画素の位置を表してるらしい. といってもどこに原点があってスケールはどうなってるのか? 水平がx軸なのかy軸なのか? 正負の向きはどうなってるのか? ここでも実験で確認(というより実感)してみる.
void Update() { var material = this.GetComponent().material; material.SetFloat("_width", (float)Screen.width); material.SetFloat("_height", (float)Screen.height); }
float _width; float _height; fixed4 frag (v2f i) : SV_Target { float x = i.vertex.x; float y = i.vertex.y; float z = i.vertex.z; return float4(x/_width, y/_height, 1, 1); }
つまり,i.vertexはスクリーン座標そのもので,左下が原点,水平右方向がx座標,垂直上方向がy座標ということが確認できました.