人気の記事一覧

シーン中のUI CameraオブジェクトのInput Managerコンポーネントの設定にMobileかDesktopかの判定を自動で行うパラメータがあり、そこでforcedで強制的にモバイル指定を行うと、webgl出力でもUIカメラ配下のジョイスティックやボタンを活性化できます

Unityで有料アセットのコーギーエンジンを使って自作ゲームをwebGLビルドで出力したものを圧倒的に軽くしてユーザー満足度を高める為の方法を調べた時のつぶやきをまとめただけの記事

静的バッチ処理は、動かない(静的な)オブジェクトをひとまとめの大きなメッシュと結合してレンダリングする。 動的バッチ処理は、今のところよく分からない…小さいメッシュ用に頂点をひとまとめにして描画するらしい 欠点もある。 静的はメモリとストレージを消費し、 動的はCPUを消費する。

AltEdu2022 Day18とDay19の解説記事

2年前

webGL2.0の機能について今更ながら調べてみた

2021/01/01-03 started the road to VJ!

2年前

コピペで慣れる生WebGL#02パーティクル

スプライトパッキングモードは、デフォルトがディセーブルで、Enabled for builds(パッキングはビルドの時に有効、プレイモードでは無効)とAlways Enabled(ビルドの時もプレイモードの時もどちらもパッキングする)が選択できる。

重たい処理としては、スキンドメッシュレンダー、ポストプロセッシング、アルファブレンディング、高解像度があります。本当に必要かどうかを検討して不要なら影やカメラ制御のように、パフォーマンスを得るために、ゲームシーンからカットしたり、最適化しても問題ないかを検討するのが良さそうです。

ゲームの軽量化につながる為の処置として、簡単なものは、影の廃止、ポストプロセスの廃止、マテリアルの統合、テクスチャアトラスの使用、メッシュの結合、テクスチャ圧縮形式の変更、サイズを減らす等がある。品質は下がるがFPSは良くなると思われるのでバランスをみて調整したい。

マテリアルをオブジェクトあたりで減らす事がパフォーマンス改善につながるのは、SetPassCallの呼び出し回数の削減に繋がっている為だと思われる。有料アセットのメッシュベイカーなどを利用すると、この辺りの仕組みをうまく最適化するので、ドローコール処理が軽くなり、軽量化につながる

バッチの回数はStatsの画面から確認する事ができ、Batchesがバッチ処理の回数を表して各バッチごとにSetPass Call→DrawCallの順に呼ばれレンダリング処理を行う。1バッチに1回のドローコール処理があるがマテリアルの指示がない場合はSetPassCallが省略

ゲームのパフォーマンスを向上させるにはドローコールを減らす必要があります。ドローコールはオブジェクトやテクスチャをGPUがレンダリングする時に呼ばれます。ドローコールはCPUからAPIを使って呼ばれるので、ドローコールが多くなればなるほどゲームのパフォーマンスが落ちます。

ドローコールはUnityでは一回の処理としてまとめる機能がある。ドローコールバッチング機能によってドローコール負荷をひとまとめにして、ゲームのパフォーマンスが出るようにしている。バッチ処理には二種類あって、動的バッチ処理と静的バッチ処理がある。

OpenGLやDirectXはグラフィックスAPIというソフトウェアに描画命令を行うアプリケーション・プログラミング・インタフェースの名称で、描画命令はCPU→グラフィックスAPIに指示が行われている。ドローコールが重たい時=CPUに負荷がかかる。ではドローコール表示はどうするか

Unityのスプライトアトラスというアセットを使って複数のテクスチャを1つのテクスチャに統合することが出来るため、この統合されたテクスチャを参照することでUnityのドローコールを抑える事ができ、プロジェクトのパフォーマンスの改善に有効かも知れません。

パーティクルシステムは小さな2D画像からそれらをアニメーションさせることで様々な表現をすることができる、(流体、雲、炎など)しかも大量のオブジェクトに見えて1つの塊扱いなのでWebGLのドローコールが少なくリッチな表現をするのに都合の良い仕組みだった様子(知らなかったよ…)

webGLでモバイルの負荷が高まる理由としてはドローコール回数が大きく影響していて、処理速度や消費電力量にも影響する。ドローコール回数を減らすためには、シーン内のオブジェクト数を減らすこととオブジェクトを構成するマテリアル数も減らすのが良いらしい。1オブジェクトにつき1マテリアル

AltEdu2022 Day28の解説記事

2年前