× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
http://unity3d.com/support/documentation/Manual/iphone-DrawCall-Batching.html
unityで負荷を減らすためにすべき3つのこと http://www.cratesmith.com/archives/183 ・Update()関数での処理を減らす ・強制的にGCする ・トライアングルは7500以下、drawcallは20以下 ・同じマテリアルを使い回す ・動かないモデルならstatic指定をする ・オーバードローや複雑なシェーダにも気を配れ ・profilerを使って調べるのがもっともよい方法 http://answers.unity3d.com/questions/14578/whats-the-best-way-to-reduce-draw-calls.html ・マテリアルもテクスチャも違うメッシュを1つにまとめることもできる テクスチャアトラス マテリアルは1つになってしまうけど、drawcallは1で済む http://www.google.co.jp/search?client=safari&rls=en&q=unity3d+drawcallを減らす&ie=UTF-8&oe=UTF-8&redir_esc=&ei=oiDFTrrZBe2amQXF_YyXCw#sclient=psy-ab&hl=ja&client=safari&rls=en&source=hp&q=unity3d+draw%E3%80%80call&pbx=1&oq=unity3d+draw%E3%80%80call&aq=f&aqi=&aql=&gs_sm=e&gs_upl=13610l13610l5l13826l1l1l0l0l0l0l192l192l0.1l1l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=75cd20b0589e05c6&biw=1250&bih=649 メッシュをコンバインするスクリプト http://unity3d.com/support/documentation/ScriptReference/Mesh.CombineMeshes.html メッシュ生成 http://answers.unity3d.com/questions/10249/combining-meshes-with-submeshes.html http://www.unifycommunity.com/wiki/index.php?title=MeshCreationHelper 最初に見つけた、material,meshをまとめる http://forum.unity3d.com/threads/88604-One-draw-call-for-each-shader-with-dynamic-meshes-The-Bob-script.?highlight=draw+call オブジェクトごとに必ずdrawcallが1回呼ばれるという証言(マテリアルの共有に関わらず) http://unity3d.qatohost.com/questions/16098/draw-call-reduction-for-a-stream-of-bullets.html particle system1つにつき1回draw callが呼ばれる 公式の説明文 http://unity3d.com/support/documentation/Manual/iphone-DrawCall-Batching.html CombineChildrenScriptというのがある batchというUNITYの自動処理があり、これによってdrawcallの回数を節約できる batchが効くのは、同じマテリアルを使用しているオブジェクト同士 textureだけが違うマテリアルを使っている場合は、アトラス化すれば同マテリアルにできる スクリプトからsharedMaterialにアクセスする場合、Renderer.sharedMaterialを使うこと。Renderer.materialを使うとコピーしてしまう dynamic batchingもできるが、頂点数300以内のmeshに対してのみ行われる。自動で行われる CombineChildrenスクリプトについても調べておく必要がある(調べたがちょっと出てこない) static batchingもある。マテリアル共有で、一切動かないmeshに対して指定できる。Inspectorの右上、staticチェックボックスを有効にする。ただし、メモリ消費が増えるので、やらないほうがいいときもある。。。これはiOS advancedでのみ使用可 パフォーマンス関連公式 http://unity3d.com/support/documentation/Manual/Optimizing%20Graphics%20Performance.html#iPhoneOptimizingGraphicsPerformance iPhone系のテク アルファテストはアルファブレンドに変える 頂点数は40000以下に。旧世代なら10000以下 モデル…過剰なフェイスを使わない,UVマップの数をできるだけ減らす。実際に処理する頂点数は、見えている数ではなく、モデルを形作るのに必要な数。法線やUVマップなんかを複数持っている頂点は分割される。 テクスチャ圧縮…iOSネイティブのPVRT圧縮フォーマットが使われる。 マテリアル…計算を減らす、小オブジェクトをバッチしてdraw call減らす、staticオブジェクトをバッチするなどを行う。テクスチャをまとめてマテリアルを同一にする その他チェックポイント Mobile/VertexLitが最速のシェーダ。 同一シーン内のマテリアルはできるだけ統一 動かないオブジェクトはstatic指定 PVRTCフォーマットにする、16bitにする テクスチャはまとめる シェーダの型、pow,sin,conの使用を減らす、 pixel lightはひとつだけ、ライトはベイクしたほうがいい アルファテストよりアルファブレンド フォグは不要なら使わない オクルージョンカリングを生かす http://unity3d.com/support/documentation/Manual/Modeling%20Optimized%20Characters.html インポートしたモデルには、スキンメッシュレンダラーが付く。これは1モデルに1つにすべし マテリアルは1つ。複数のマテリアルを使うというのは、複数のシェーダを使いたいときに限るべし 骨は少なく。30本くらいが最高 ポリゴン数は300−1500(三角形)くらい インポート時にIKはFKにベイクされる。だからノードは不要 MeshMerger http://www.unifycommunity.com/wiki/index.php?title=MeshMerger 3.5でも行けるのでは PR |
|