昨日の記事の検証の為、テンションのままに作りこんでしまったSpriteRendererモドキです。せっかく作りましたし、そのうち何かに役立つかもしれないので公開します。
主にRenderTextureや独自Atlasからテクスチャを抜き出して、Spriteっぽく使える事を想定して作っていました………上手く作れば複数のTextureをSetPass1で…まぁ、多分行けるんじゃないですかね。
色々やってみると、それよりテクスチャのタイリングの方が個人的に需要があったりなかったりします。
機能
機能は大体こんな感じです。
- 同一のマテリアルを使用していて、かつ描画が一括で完了するようならSetPassはマテリアル単位で纏まる
- SortInLayerとOrderInLayerが使える
- Textureと描画範囲を指定して描画する
オマケの機能
- textureのサイズに合わせてRectを調整する
- CashShadowとかLightprobeを一括でOFFにする
- Rectのアス比に合わせてQUAD(オブジェクト)のサイズを変更する
使い方
使い方はこんな感じです。
整理すると手順多いですね。
- Create>GameObject>3D>QUADでQuadオブジェクトを作成する
- 作ったQuadオブジェクトにTextureSprite.csを設定する
- Quad MeshにQuadメッシュを設定する
- MeshRendererのMaterialsに設定するシェーダーをTransparentとかTextureに設定する
- 不要ならCastShadowとかRecieveShadowとかLightprobesをOFFにする。
- Textureに設定したいテクスチャを設定する
- RectのX/Yにオフセット、W/Hに幅と高さを設定する
色々と遊んでみる。
UVが色々と自分で設定できるので、モンタージュ的な何か。
スケールの分だけRectのWやHを引き延ばす事による、テクスチャのリピート的な奴。Spriteだとリピートするの少し面倒なので、少しだけ便利。
前回の続きで、RenderTextureからUVとってSpriteのように描画。二人のTextureは別々の物から持ってきてますが、SetPassは1で済んでいます。その代りRenderTexture代のメモリを8MB(1024*1024 ARGB)程使いました。
1SetPassで収まるなら安い?高い?…どうでしょう。
コード
長いのでリンクのみ。
これ、凄く特殊なケースでは使えるかもしれませんが、殆どのケースではあんまり使えない気がします。
ただ、タイリングしたいSpriteやUV指定で動かせるSpriteは割と欲しかったので、そういったケースで利用価値があるかもしれません。微粒子レベルで。
(2D9スライスとか入ったらお役御免ですね