テラシュールブログスマートフォン用の表示で見るテラシュールブログ旧テラシュールウェアブログUnity記事。UnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。Instancingで遊んでみます。Instancingは、複数の「同一メッシュ」かつ「同一マテリアル」なオブジェクトがあった場合に、GPU側で一括で描画してくれる技術みたいです。扱いにかなりクセがありますが、上手く使えば面白い事が出来るかもしれません。InstancingはGPU側で纏めて処理を行う事に違いがありそうです。Instancingを使用せず色違いのメッシュを大量に配置した場合。Instancingを使用した場合です。Callの数が明らかに異なります。Instancingを試してみます。Instancingに対応しているシェーダーを用意します。Instancing対応の、通常のシェーダーとは少し異なるシェーダーが作れます。後は作成したシェーダーを使用してオブジェクトを描画すると、GPUが纏めて描画してくれます。InstancingはGraphics.DrawMeshとMeshRendererで使えるみたいです。Debuggerを使用することです。MeshにInstancedと表示されます。ProfilerのRendererの項目でも新しくInstancedの項目が追加されており、ここからもどの程度纏められているかを確認出来ます。Instancingで纏めて描画出来るオブジェクトは「メッシュが同じ」かつ「マテリアルが同一」なオブジェクトです。オブジェクトの色を変更したい場合、MaterialPropertyBlockを使用します。gist.github.com上のコードは、指定したレンダラーの色を一括で更新するサンプルです。これでマテリアルを増やさずシェーダーの色を変更しました。Rendererに対応していません。SkindMeshRendererで変形させたメッシュを取得してMeshRendererに流し込んでやります。下のアニメーションは3パターンのアニメーションをランダムに再生したものです。数が多くなると基礎となるメッシュを配布した方が全モデルにアニメーションさせるより遥かに安いです。2016年6月28日まあ、メインキャラクターには絶対使えませんが、街に居る(少し離れた)モブとかには使っても良いかもしれません。Instancingでない場合もかなり安いです。手前の3体がアニメーションの元となる動き、奥のキャラクター達はそのコピーです。分かりやすいように、走ってるモデルは緑、歩いてるモデルは青、アイドルモーションは赤としてみました。Instancingですが、使えない条件が結構あります。使用出来るのはMeshRendererとGraphics.DrawMeshのみ。その他のCanvasRendererやSkindMeshRendererやParticleRendererには使えない。4.1以降、コンソールの一部で使用可能。Metalは以降そりゃそうなんですが、描画時にGPUへ渡さなきゃいけない情報の多い表現には使用できないので、まぁ何というか、使いドコロに悩むですはい。Ba...今回はシェーダーで3Dモデルのアニメーションを行います。(1)月別アーカイブはてなブログをはじめよう!tsubaki_t1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。