Unity AssetStoreまとめ

アセットストア日替わりタイムセールの記事を書いていきます。

【新作アセット】大量にStandardシェーダを活用しているシーンが軽くなる!テクスチャをアトラス化せず、結合してレンダリング回数を劇的に減らす最適化エディタ「One Batch」

スポンサーリンク

f:id:assetsale:20180927171428j:plain

One Batch

エディタ拡張/ユーティリティ

Jason Booth

$27.00  ベータ版  【リリース日】2018年9月26日

 

Unity標準の「Standard」シェーダが大量にあるシーンが軽くなる!

マテリアルの数が多いとレンダリングコストが増えてゲームが重たくなります。資料

 

複数のマテリアルとテクスチャを結合して、

描画回数を劇的に減らす最適化エディタです。

 

One Batchを使用すると、何百もの素材とテクスチャを1つの描画呼び出しに結合できます。 これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。

 その代わりに、One Batchはテクスチャ配列を使用してこれらの制限を克服し、結合する各オブジェクトの標準シェーダのすべてのプロパティを保持することができます。 これにより、特にキットベースの資産や静的シーンデータを使用して、ドローコールやパスのコールを大幅に削減できます。

 


 

 

作家さん情報

f:id:assetsale:20180927234114j:plain

 

Terrain作成エディタの大人気作家さんによる、新作アセットです。

 

 2018年9月9日に紹介しました。

 

アセットの特徴

 

One Batchの強みは「テクスチャのアトラス化をしない」ことにあります。

 

ドローコール数を減らすエディタによくある「複数のテクスチャのアトラス化」

f:id:assetsale:20180927202459j:plain ←3枚の画像をアトラス化

 

これには問題があって、複数のテクスチャを1枚に合体(アトラス化)した後では「タイリング」することが出来なくなります。

 

それに限られたスペースを使い果たさないように制限の中でやりくりする制約がある。

 

これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。

 

One Batch

「テクスチャの配列化」で最適化する方式を採用しました。

f:id:assetsale:20180927200815j:plain

f:id:assetsale:20180927200811j:plain

テクスチャそのものを配列として持つからタイリングも可能。

アトラス化の空きスペースも気にする必要がありません。

(配列可能な枚数は、確か最大200か、255枚までの制限がある可能性あり)

 

結合前の「Standard」シェーダのプロパティもマテリアル毎に保持するため、見た目に変化がありません。(結合後の解像度が同じであれば)

 

 

One Batch - YouTube(18:10)

 

 

最適化例

f:id:assetsale:20180927171913j:plain

Batches:32→9

SetPass calls:32→9

 

約72%の最適化に成功しました。

 

使い方

① Configデータを作る

f:id:assetsale:20180927225051j:plain

Projectにて、Create > OneBatch > Configを実行してConfigデータを作ります。

 

f:id:assetsale:20180927225221p:plain

 

 

② Prefabをセットする

f:id:assetsale:20180927225219p:plain

Prefabs 0になってる部分に、Prefabをドロップする。

 

f:id:assetsale:20180927231827j:plain

 

Project内のPrefabを複数選択した状態でD&Dすれば、一気に登録されます。

 

f:id:assetsale:20180927225513j:plain

7つのPrefabがセットされた状態↑

 

 

③ Extract From Prefabsを実行

f:id:assetsale:20180927225603p:plain

Prefabからテクスチャを抽出するため、↑のボタンをクリックします。

 

f:id:assetsale:20180927225742j:plain

このように、マテリアル毎にセットされてるテクスチャがズラッと一覧で表示される。

ここで追加することもできますよ。

 

 

④ プラットフォーム毎の設定を作る

f:id:assetsale:20180927230005j:plain

サイズを決めます。配列は全て同じテクスチャが同じサイズになるみたい。

 

 

⑤ プラットフォーム毎の設定(任意)

f:id:assetsale:20180927230428j:plain

Platform Compression Overridesを利用すれば、プラットフォーム毎の設定で出力することができます。

 

 

⑥ 結合

f:id:assetsale:20180927230645j:plain

「Combine」を実行して結合しましょう。

ちなみに「Revert」で結合前に素早くやり直せます。

 

 

⑦ 完成データ確認

f:id:assetsale:20180927230852j:plain

Albedo、ao、height、normal、propsの配列化されたテクスチャが作られました。

 

f:id:assetsale:20180927200811j:plain

※ 別の動画のものですが、配列化されるとこのような画面で表示されます。

 

 

⑧ マテリアルを確認

f:id:assetsale:20180927231331j:plain

マテリアルのシェーダーは「OneBatchStandard」に置き換わります。

配列化されたテクスチャに置き換わっている所にも注目です。

 

ここでどの配列が適応されるかは、シェーダに直接書かれるのか、

①で作ったConfigファイルを参照するのかちょっとわかりませんでした。

f:id:assetsale:20180927231456p:plain

Prefab毎に指定されたテクスチャが使われる事は間違いない。

 

 

f:id:assetsale:20180927231714j:plain

最適化前↑

最適化後↓

f:id:assetsale:20180927231632j:plain

 

 

⑨ パラメータの再設定

f:id:assetsale:20180927231456p:plain

Configファイルを開くと、Prefab毎のパラメータを開くことができます。

ここでStandardのパラメータをいつでも再設定できる。

f:id:assetsale:20180927232230j:plain

 

以上、動画のダイジェスト解説でした。

 

 

f:id:assetsale:20180927171917j:plain

 

プレハブを追加し、抽出物を押し出す
プレスコンバイン
すべてのStandard Shaderプロパティ
保存および編集可能

 

 

Amplify Shader Editor製のシェーダ

 

f:id:assetsale:20180927171908j:plain

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さんがリリースした高品質マテリアル素材を使います(無料版

f:id:assetsale:20180927210000j:plain

f:id:assetsale:20180927211941p:plain

全部「Standard」だから条件は同じ。

 

Planeの地面に5x5のタイリングして、

奥の方のマテリアル24枚を1枚のテクスチャに結合してみます。

 

 

Mesh Bakerのターン

f:id:assetsale:20180928000517j:plain

テクスチャのみチェックするため、全てのメッシュは一体化しません。

マテリアルがついたもののみPrefab化して結合候補に入れました。

f:id:assetsale:20180928000337j:plain

Atlas Sizeは4096

Tiling Bake Sizeは1024

f:id:assetsale:20180928000716p:plain

 

この状態でベイクすると、下記テクスチャができあがりました。

f:id:assetsale:20180927211656j:plain

どうやらMesh Bakerはタイリング済みの状態でアトラス化されるみたい。

3x3と5x5の混在状態です。

 

メッシュも一体化しており、マテリアルとテクスチャは1つです。

f:id:assetsale:20180928001156g:plain

f:id:assetsale:20180928001413j:plain

ここでパラメータや、Tilingを増やすと当然全てに影響してしまいます。

 

f:id:assetsale:20180928001746g:plain

作家さんがいう「タイリングすることはできません。」とはこの事なのかなと思います。

これを行う伝統的な方法は、複数のテクスチャを1つのテクスチャアトラスに結合することです。これには多くの問題があります。これらのテクスチャをタイリングにすることはできません。それにテクスチャ空間を使い果たしがち。

 その代わりに、One Batchはテクスチャ配列を使用してこれらの制限を克服し、結合する各オブジェクトの標準シェーダのすべてのプロパティを保持することができます。 これにより、特にキットベースの資産や静的シーンデータを使用して、ドローコールやパスのコールを大幅に削減できます。

 

テクスチャを配列化することにより、

タイリングやパラメータが個別で制御可能な最適化になると考えられます。

 

アトラス化による空きスペース節約も解消しますね。

f:id:assetsale:20180928002556j:plain

  

フォーラムはこちら

f:id:assetsale:20180927195034j:plain

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で利用したい方からコメントがあって、その回答は、

 

f:id:assetsale:20180927211143j:plain

残念ながら、Unityは、何らかの形のガンマが適用されていない状態で、線形の16ビットテクスチャをディスクに保存することはできません。 そこで、これを回避するために、新しいScriptableImportパイプラインを使用して独自のテクスチャ形式を作成しました。

  

「残念ながら出来ません」

 

アセットストアの紹介には掲載されてない動画ですが、

初期の動画はUnity5.6時代のものでした。(これも結構参考になる)

理由となる原因はここから読み取れるかも。

One Batch - YouTube(14:14)

 

f:id:assetsale:20180927210954p:plain

 

 

アセット説明(機械翻訳)

このアセットは同時に利用する人数分のライセンスが必要です

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は現在ベータ版です。

 

 

パブリッシャーのアセット(記録用)

f:id:assetsale:20180927171716j:plain

 

 

流行の最適化エディタはこれだ!

 

Mesh Combine Studio

自動的にセルベースでメッシュを結合してくれるエディタです。

シーンにPrefabを投入するだけだからお手軽。

 

Amplify Impostors [BETA]

あらゆる角度からカメラで撮影してくれて、

どの角度から見ても大丈夫になる「だまし絵」のような3Dビルボード化エディタ

山や家など、遠くに見えるオブジェクトに向いています。

 

Simplest Mesh Baker無料

複数のメッシュを一体化してレンダリングにかかる負荷を軽減するMesh Bakerタイプの最適化エディタです。

Mesh Baker Freeと比較検証付き。

 

GPU Instancer

地形とか大量のオブジェクトに有効

GPUの力で大量のオブジェクトをレンダリングするエディタ。

 

Pro Draw Call Optimizer

バラバラで複数にわかれたテクスチャ&マテリアルを1枚にまとめて、無駄なドローコールを減らす最適化の要となるエディタ

無料版もあります。「Pro Draw call Optimizer Light

Mesh Baker

もはや定番

複数のメッシュ・マテリアルを結合する最適化エディタです。

テクスチャのアトラス化を行うタイプです。

 

 


 

【毎日更新】アセット割引情報サイト

リアルタイムでセール情報を毎日更新しています。

「作家セール、無料アセット、新作アセット」の最新情報を入手しよう!

※ 土曜・日曜・月曜はアセットストアのお休み。

 

今年のイチオシアセット

バーチャルYoutuberシロがご紹介する2018年度のオススメアセット

 

 

過去セールから神アセットを探す

過去大セールで登場したタグです。ぜひご活用下さい。

f:id:assetsale:20180430173156j:plain

※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。

 

 

アセットの検索方法

検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。 

f:id:assetsale:20171128032556j:plain

 

 

 


 

 

【2018年度】無料化&無料アセットまとめ

 

【3Dモデル】

【シェーダ・パーティクル・Skybox】

【テクスチャ&マテリアル】

 

【過去ログ】無料アセット

【過去ログ】作者セール&注目アセット