忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 19:48 】 |
Unity描画負荷
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
【2016/09/27 11:52 】 | UNITY | 有り難いご意見(0)
<<aws注意 | ホーム | ngnix>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>