Unity

描画最適化

More than 1 year has passed since last update.

描画

  • 表示用のメモリ領域を、ピクセル情報で埋める作業
  • 画面全体の色情報が記録されたメモリ領域のことをフレームバッファと呼ぶ

Set Pass Call

  • Draw Callと同義
  • CPUからGPUに送る描画命令
  • MaterialやShaderのPassが多いと増える
  • Shaderのプロパティを動的に変えても増える
  • CPU側の負担となる

Draw Call

  • グラフィックスAPIを使用して、画面に描画を行う際に呼び出す命令の事

DrawCall (ドローコール) って何? 描画パフォーマンスを考える一つの指標を見る

GPU側の描画の問題

Rendererがいっぱい(ピクセル描画が重い)

  • fragment shaderが複雑すぎる
  • テクスチャのキャッシュミスがひどい
  • PVRTCなどのフォーマットの方がテクスチャのキャッシュにヒットしやすい
  • Cube mapのようにランダムアクセスするテクスチャはキャッシュミスがひどい
  • ピクセル描きすぎ(オーバードロー)

Tilerがいっぱい

  • 送信している頂点数が多すぎる

【Unity】Unity Performance Casual Talk 「ドローコール伝説の終わり」 レポート

VSync

  • ディスプレイの更新タイミングに合わせて処理を行う仕組み
  • またの名を垂直同期と呼ぶ
  • VSyncをオフにするとパフォーマンスは良くなるが、ティアリングという描画ズレが起きる可能性がある
  • ティアリングとは、ディスプレイの更新と、描画の更新が被って、描画途中のものが表示されてしまう現象

【速いぜ!】スマホ向けUnity高速化Tips

Matcap

  • 事前にレンダリングした画像を使用して、ライト表現を行う手法
  • 材質と光を表現した球の絵を使用して疑似的にライティングを行う
  • 比較的軽く、モバイルでも動く

【Unity】Matcap、事前に用意した綺麗な光表現を利用する
[Unity] Shader ForgeをつかってMatCapシェーダーを作る

batching

Mobile Optimization – Batching in Unity

Profiler

(殴り書き)UnityのVRサポートでパフォーマンスとかプロファイルとか

Texture Format

  • ETC2 : 全てのAndroid機種が対応できるフォーマットの中でOpenGLES3.0対応の機種で使用可能、Alphaチャンネルもサポート

【Unity】Texture Format

Asset

【Unity アセット真夏のアドベントカレンダー 2017】世界をローポリにしてやろうか!

Draw Call Minimizer

  • Shader Forgeの出力はVertex ShaderとFragment Shader
  • Amplity Shader Editorの出力はSurface Shader