3Dゲーム制作独学レポート

3D初心者が独学をしてVR3Dゲーム作りを目指すためのレポート記録です。

【unity learn】 Create with VR tutorial3.2 - Optimization

概要

unityの公式の教材で学習した内容を復習もこめてまとめる。
https://learn.unity.com/tutorial/3-2-optimization-1?uv=2020.3&courseId=60183276edbc2a2e6c4c7dae&projectId=6018353dedbc2a0f634b7918


総評

・レンダリングの最適化方法


このチュートリアルで出てきたコンポーネントなど

・fpsに影響を与える工程
 ・polycount:オブジェクトのポリゴン数を数える工程
 ・draw call:オブジェクトの描写をグラフィクスAPIに依頼する工程 
 ・particles
 ・textures



・デバイスでのパフォーマンス目標
 ・https://developer.oculus.com/documentation/unity/unity-perf/


・FPS Overray UIオブジェクト:
 ・概要:FPSの値を見ることができる。
 ・Render Cameraプロパティ:メインカメラに設定するとメインカメラを追従する。


・Statsメニュー:gemeウインドウの右上にある。(window>panels>gameでパネルを開ける。)統計情報が見れる。
 ・batches:1フレームあたりのドローコールの呼び出し回数、少ない方がよい。バッチとして集めてAPIに送っている。oculus quest2だと80-600の間が基準。
 ・tris:画面に描写さてている三角形ポリゴンの数   Quest 2 750k-1.0mが推奨値



・profilerウインドウ:windows>analysis>profilerで開ける。様々なデータをみれる。録画ボタンで録画できる。何が書いてあるのかはよくわからない。
 参考URL
 ・The Rendering Statistics window https://docs.unity3d.com/Manual/RenderingStatistics.html
 ・The Frame Debugger window    https://docs.unity3d.com/Manual/FrameDebugger.html
 ・The Profiler window       https://docs.unity3d.com/Manual/ProfilerWindow.html


・Frame debugウインドウ:window>analysis>frame debugで開ける。レンダーを順序通りに見ることができる。


・バッチ処理を軽くする方法
 ・universalRenderPipelineAsset:assetブラウザの中にある。これをいじると描写を軽減できる。advancedのSRP BatcherとDynamic Batchingをチェックすると減る。(バッチ処理をやってくれる)
 ・オブジェクトを静的にすると軽くなる
 ・鏡を消すと軽くなる(カメラが減ると軽くなる)


・wireframeモード:sceneウインドウの上のshading mode>wireframeから選べる。ワイヤフレームが見える。


・メッシュフィルターコンポーネント:オブジェクトのメッシュの情報が見れる。meshをクリックするとアセットブラウザで対応するメッシュが選択されるのでそれをクリックすると各種情報が表示される。
 ・triangles :三角形ポリゴンの数


・occlusion culling:レンダリング効率を落とすことができる。window>rendering>occlusion culling
公式ドキュメント
オクルージョンカリング
オクルージョンカリングは、あるオブジェクトが他のオブジェクトに隠されていて現在カメラに映らないときに、オブジェクトのレンダリングを無効にする機能です。これは、3D コンピュータグラフィックスでは自動的に行われません。カメラからもっとも遠いオブジェクトが最初に描かれ、近いオブジェクトは、それらの上に描画されるからです(これは “overdraw” と呼ばれています)。オクルージョンカリングは、フラスタムカリングとは違います。フラスタムカリングは、カメラの表示領域外にあるオブジェクトのレンダラーを無効にしますが、“overdraw”よって視界から隠されたものについては無効にしません。オクルージョンカリングを使用するときには、まだフラスタムカリングの効果も有効なことに注意してください。
https://docs.unity3d.com/ja/2018.4/Manual/OcclusionCulling.html


・マテリアルのベーステクスチャをクリックするとアセットブラウザでそのテクスチャを選べる。


・generate mipmapsプロパティ:textureアセット>advanced>Generate Mipmaps をオンにすると離れるつれてテクスチャの解像度が低くなり軽くなる


・aniso levelプロパティ:textureアセット>advanced>aniso level:異方性フィルタリング


・particle systemコンポーネント:
 ・start Lifetimeプロパティ:パーティクルの寿命を設定。
 ・maxparticlesプロパティ:粒子が出てくる量
 ・Rate over timeプロパティ:一秒間の密度?


・マテリアルのシェーダー:univcersal render pipelineのシェーダー>particle>Lit だとライトに反射する。unlitだと反射しなくなり軽くなる


・Camera>rendering>post Processingプロパティ:オンにすると後処理が有効になる


・volumeコンポーネント:後処理したカメラオブジェクトに追加する。profileで後処理プロファイルを追加できる。add overrideで適用。(このチュートリアルではvignetteとFilm Grainを追加している)(警告: 後処理効果を追加する場合は、カラー調整が適しています。レンズの歪みやモーションブラーはサイバー病を誘発します。これらの効果の使用は避けてください。)


・unicersalRenderpipelineAsset>Quality>anti aliasing(MSAA)プロパティ:アンチエイリアシングをかけられる。参考:http://cvalley.co.jp/ae_plugin/psoft/anti-aliasing/index.html


・maincameraオブジェクト>Cameraコンポーネント>rendering >anti_aliasint:アンチエイリアスを作れる。後処理で行うのでrendering>postprocssingをオンにする必要がある。