エディタ拡張/ユーティリティ
$27.00 ベータ版 【リリース日】2018年9月26日
Unity標準の「Standard」シェーダが大量にあるシーンが軽くなる!
マテリアルの数が多いとレンダリングコストが増えてゲームが重たくなります。資料
複数のマテリアルとテクスチャを結合して、
描画回数を劇的に減らす最適化エディタです。
One Batchを使用すると、何百もの素材とテクスチャを1つの描画呼び出しに結合できます。 これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。
その代わりに、One Batchはテクスチャ配列を使用してこれらの制限を克服し、結合する各オブジェクトの標準シェーダのすべてのプロパティを保持することができます。 これにより、特にキットベースの資産や静的シーンデータを使用して、ドローコールやパスのコールを大幅に削減できます。
作家さん情報
Terrain作成エディタの大人気作家さんによる、新作アセットです。
2018年9月9日に紹介しました。
アセットの特徴
One Batchの強みは「テクスチャのアトラス化をしない」ことにあります。
ドローコール数を減らすエディタによくある「複数のテクスチャのアトラス化」
←3枚の画像をアトラス化
これには問題があって、複数のテクスチャを1枚に合体(アトラス化)した後では「タイリング」することが出来なくなります。
それに限られたスペースを使い果たさないように制限の中でやりくりする制約がある。
これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。
「テクスチャの配列化」で最適化する方式を採用しました。
テクスチャそのものを配列として持つからタイリングも可能。
アトラス化の空きスペースも気にする必要がありません。
(配列可能な枚数は、確か最大200か、255枚までの制限がある可能性あり)
結合前の「Standard」シェーダのプロパティもマテリアル毎に保持するため、見た目に変化がありません。(結合後の解像度が同じであれば)
One Batch - YouTube(18:10)
最適化例
Batches:32→9
SetPass calls:32→9
約72%の最適化に成功しました。
使い方
① Configデータを作る
Projectにて、Create > OneBatch > Configを実行してConfigデータを作ります。
② Prefabをセットする
Prefabs 0になってる部分に、Prefabをドロップする。
Project内のPrefabを複数選択した状態でD&Dすれば、一気に登録されます。
7つのPrefabがセットされた状態↑
③ Extract From Prefabsを実行
Prefabからテクスチャを抽出するため、↑のボタンをクリックします。
このように、マテリアル毎にセットされてるテクスチャがズラッと一覧で表示される。
ここで追加することもできますよ。
④ プラットフォーム毎の設定を作る
サイズを決めます。配列は全て同じテクスチャが同じサイズになるみたい。
⑤ プラットフォーム毎の設定(任意)
Platform Compression Overridesを利用すれば、プラットフォーム毎の設定で出力することができます。
⑥ 結合
「Combine」を実行して結合しましょう。
ちなみに「Revert」で結合前に素早くやり直せます。
⑦ 完成データ確認
Albedo、ao、height、normal、propsの配列化されたテクスチャが作られました。
※ 別の動画のものですが、配列化されるとこのような画面で表示されます。
⑧ マテリアルを確認
マテリアルのシェーダーは「OneBatchStandard」に置き換わります。
配列化されたテクスチャに置き換わっている所にも注目です。
ここでどの配列が適応されるかは、シェーダに直接書かれるのか、
①で作ったConfigファイルを参照するのかちょっとわかりませんでした。
Prefab毎に指定されたテクスチャが使われる事は間違いない。
最適化前↑
最適化後↓
⑨ パラメータの再設定
Configファイルを開くと、Prefab毎のパラメータを開くことができます。
ここでStandardのパラメータをいつでも再設定できる。
以上、動画のダイジェスト解説でした。
プレハブを追加し、抽出物を押し出す
プレスコンバイン
すべてのStandard Shaderプロパティ
保存および編集可能
Amplify Shader Editor製のシェーダ
One BatchのシェーダはAmplify Shader Editorで編集可能なカスタムシェーダです。
ASEを利用すれば追加機能の拡張も可能っぽいですね。
動画ラストでチラッと紹介されています。
One BatchはStandard Shaderで動作するように設計されていますが、Amplify Shader Editorのサンプルと関数も含まれています。
One Batchは、Standard Shaderを、テクスチャ配列をサポートするカスタムバージョン、およびParallax Occlusion Mappingなどの追加機能で置き換えました。
Amplify Shader Editorはサーフェイスシェーダーをノードベースでエディットできるように拡張されたツールです。
2017年11月27日にサンプルシーンを紹介しました。
MeshBakerのアトラスでタイリングできるか検証
アセット説明にあった「タイリング」できない。がちょっと気になったので、
Mesh Bakerのテクスチャアトラス化でどうなるか検証してみました。
タイリング素材といえば、
日本作家のNoseamsさんがリリースした高品質マテリアル素材を使います(無料版)
全部「Standard」だから条件は同じ。
Planeの地面に5x5のタイリングして、
奥の方のマテリアル24枚を1枚のテクスチャに結合してみます。
Mesh Bakerのターン
テクスチャのみチェックするため、全てのメッシュは一体化しません。
マテリアルがついたもののみPrefab化して結合候補に入れました。
Atlas Sizeは4096
Tiling Bake Sizeは1024
この状態でベイクすると、下記テクスチャができあがりました。
どうやらMesh Bakerはタイリング済みの状態でアトラス化されるみたい。
3x3と5x5の混在状態です。
メッシュも一体化しており、マテリアルとテクスチャは1つです。
ここでパラメータや、Tilingを増やすと当然全てに影響してしまいます。
作家さんがいう「タイリングすることはできません。」とはこの事なのかなと思います。
これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。
その代わりに、One Batchはテクスチャ配列を使用してこれらの制限を克服し、結合する各オブジェクトの標準シェーダのすべてのプロパティを保持することができます。 これにより、特にキットベースの資産や静的シーンデータを使用して、ドローコールやパスのコールを大幅に削減できます。
テクスチャを配列化することにより、
タイリングやパラメータが個別で制御可能な最適化になると考えられます。
アトラス化による空きスペース節約も解消しますね。
フォーラムはこちら
https://forum.unity.com/threads/one-batch-combine-hundreds-of-materials-into-one-draw-call.555643/
One Batchを使用すると、何百もの素材とテクスチャを1つの描画呼び出しに結合できます。 これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。
その代わりに、One Batchはテクスチャ配列を使用してこれらの制限を克服し、結合する各オブジェクトの標準シェーダのすべてのプロパティを保持することができます。 これにより、特にキットベースの資産や静的シーンデータを使用して、ドローコールやパスのコールを大幅に削減できます。
Q. Unity5.6をサポートしてください
古いUnityで利用したい方からコメントがあって、その回答は、
残念ながら、Unityは、何らかの形のガンマが適用されていない状態で、線形の16ビットテクスチャをディスクに保存することはできません。 そこで、これを回避するために、新しいScriptableImportパイプラインを使用して独自のテクスチャ形式を作成しました。
「残念ながら出来ません」
アセットストアの紹介には掲載されてない動画ですが、
初期の動画はUnity5.6時代のものでした。(これも結構参考になる)
理由となる原因はここから読み取れるかも。
One Batch - YouTube(14:14)
アセット説明(機械翻訳)
このアセットは同時に利用する人数分のライセンスが必要です
Unity 2018.1.0以降のバージョンが必要
One Batchでは、複数のオブジェクトのマテリアルとテクスチャを、テクスチャ配列を持つ単一のマテリアルに結合することによって描画呼び出しを大幅に減らすことができます。
他のアトラスシステムとは異なり、1つのバッチは、1つのテクスチャシートに複数のテクスチャをパッキングすることによって生じるテクスチャ解像度の制限がなく、タイリングテクスチャを使用して作業することができます。 セットアップは後期の生産でうまく機能し、プレハブのリストを自動的に変換するように設計されています。
One BatchはStandard Shaderで動作するように設計されていますが、Amplify Shader Editorのサンプルと関数も含まれています。
One Batchは、標準シェーダを、テクスチャ配列をサポートするカスタムバージョン、およびParallax Occlusion Mappingなどの追加機能で置き換えました。
One Batchは、サブメッシュを1つのメッシュとマテリアルに自動的に結合して追加の節約を行い、SkinRendererでも機能します。
1つのバッチをメッシュ結合技術とともに使用することができます。静的バッチングやストア上の他のアセットのように、通常可能なものよりも多くのメッシュを組み合わせることができます。
One Batchは現在ベータ版です。
パブリッシャーのアセット(記録用)
流行の最適化エディタはこれだ!
自動的にセルベースでメッシュを結合してくれるエディタです。
シーンにPrefabを投入するだけだからお手軽。
あらゆる角度からカメラで撮影してくれて、
どの角度から見ても大丈夫になる「だまし絵」のような3Dビルボード化エディタ
山や家など、遠くに見えるオブジェクトに向いています。
複数のメッシュを一体化してレンダリングにかかる負荷を軽減するMesh Bakerタイプの最適化エディタです。
※ Mesh Baker Freeと比較検証付き。
地形とか大量のオブジェクトに有効
GPUの力で大量のオブジェクトをレンダリングするエディタ。
バラバラで複数にわかれたテクスチャ&マテリアルを1枚にまとめて、無駄なドローコールを減らす最適化の要となるエディタ
無料版もあります。「Pro Draw call Optimizer Light」
もはや定番
複数のメッシュ・マテリアルを結合する最適化エディタです。
テクスチャのアトラス化を行うタイプです。
【毎日更新】アセット割引情報サイト
リアルタイムでセール情報を毎日更新しています。
「作家セール、無料アセット、新作アセット」の最新情報を入手しよう!
※ 土曜・日曜・月曜はアセットストアのお休み。
今年のイチオシアセット
バーチャルYoutuberシロがご紹介する2018年度のオススメアセット
過去セールから神アセットを探す
過去大セールで登場したタグです。ぜひご活用下さい。
- MADNESS SALE カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Back to School セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Unite 2017 Tokyo記念セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Biggest Sale Ever カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Wishlist Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Holiday Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。
アセットの検索方法
検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。
【2018年度】無料化&無料アセットまとめ
【3Dモデル】
【シェーダ・パーティクル・Skybox】
【テクスチャ&マテリアル】
【過去ログ】無料アセット
【過去ログ】作者セール&注目アセット