ホロライブの二次創作ゲーを作りたい (953レス)
上下前次1-新
470: 名前は開発中のものです。 [] 2024/01/28(日) 05:19:36.46 ID:I69l8S6B(1/3) AAS
>>469あれ?複数種類のモデルやアニメーションに対しても強いなら6万でも普通にほしい
Unityで欲しかったな・・・
471: 名前は開発中のものです。 [] 2024/01/28(日) 16:00:44.34 ID:I69l8S6B(2/3) AAS
今シェーダ開発者さんにパフォーマンスの調査を依頼してるのもそうだけど、専門家に丸投げしたほうが時間効率が良いことは頭では分かってるのに
パフォーマンス最適化への未練を断ち切れずにせっかくの日曜日を地味な性能検証で潰す人生
472: 名前は開発中のものです。 [] 2024/01/28(日) 20:22:21.54 ID:I69l8S6B(3/3) AAS
今日の性能検証延長戦の成果
外部リンク:qiita.com
色々な記事を巡り巡って辿り着いたこの記事で、SkinnedMeshRendererをComputeShaderでミラーリングする方法を覚えました!!!!
SkinnedMeshRendererなしでボーンを制御したかったはずなのに結局SkinnedMeshRendererありき。ドウシテ・・・
473: 名前は開発中のものです。 [] 2024/01/29(月) 11:09:41.21 ID:J/zXr0Lj(1/4) AAS
> Batch cause
> This material has custom buffer override
マテリアルのプロパティにComputeBufferを指定するとSRP Batcherが無効化する問題と喧嘩中
この喧嘩に勝てばパフォーマンスが爆上がりする可能性があってちょっとワクワク
474(2): 名前は開発中のものです。 [] 2024/01/29(月) 15:55:59.16 ID:J/zXr0Lj(2/4) AAS
従来のSkinnedMeshRendererを殺してBatchRendererGroupベースでモデルを描画することに成功しました
ボーンのTransformを操作することでモデルも変形するので、アニメーションも従来のAnimatorで再生できる
ただし肝心の本命のパフォーマンスが従来のSkinnedMeshRendererより低い
従来のSkinnedMeshRendererでアニメーション再生中 ≒ BatchRendererGroup描画でアニメーション停止中
画像の左が従来のSkinnedMeshRendererでアニメーション再生
真ん中の山がBatchRendererGroup描画でアニメーション再生
右がBatchRendererGroup描画でアニメーション停止
画像リンク
まだJobSystem+Burstとかで改善できる余地はあるので、まだ希望を捨てずに検証を続けます
475(1): 名前は開発中のものです。 [] 2024/01/29(月) 17:11:25.49 ID:ibDcrJvt(1) AAS
>>474
そういうのはBurst、JobSystemだね
476(1): 名前は開発中のものです。 [] 2024/01/29(月) 19:25:41.44 ID:J/zXr0Lj(3/4) AAS
>>475
ぶっちゃけネットの海に落ちてるソースコードをいい感じに結合しただけなんだけど
元々のコードが結構最適化されてて詰める余地がなくて割とピンチ
そもそも従来のSkinnedMeshRendererはモデルのメッシュに対するRead/Writeが無効でもスキニングできるのに
BatchRendererGroupでスキニングするためにはメッシュのvertices/normals/tangentsの取得が避けて通れなくてRead/Writeを有効にせざるを得ない時点で勝てない気がしてきた
でもなんか勝ってる人(企業?)もいるっぽいんだよなあ・・・
外部リンク:www.infiniteloop.co.jp
477: 名前は開発中のものです。 [] 2024/01/29(月) 20:07:32.48 ID:J/zXr0Lj(4/4) AAS
やべ、今の実装だとBlendShape対応してなかった
既にパフォーマンス負けてるのにここから更に落ちるのか・・・
478: 名前は開発中のものです。 [] 2024/01/29(月) 21:23:04.00 ID:24olBCr9(1) AAS
>>476
なるほど
すごいことやってる人多いね
479(2): 名前は開発中のものです。 [] 2024/01/30(火) 00:56:34.80 ID:sbR3UD9S(1/3) AAS
このDOMOTIONってどうなんだろうか?
外部リンク:github.com
現在の機能(v0.3.4)
完全にバーストされたランタイム
ステートマシンビジュアルエディタ
遷移: Boolean、Int、Enum、End Time
コードでクリップを再生するためのシンプルな API (サンプルを参照)
1D ブレンド ツリー
アニメーション イベント
ルートモーション(デフォルトの動作をオーバーライドする必要がある場合、WriteGroupのサポートあり)
オブジェクトアタッチメント
最適化されたスケルトンと最適化されていないスケルトンのサポート
ステートマシンのビジュアルデバッグ
計画されている機能
2D ブレンド ツリー (デカルト/フリーフォーム)
ステートマシンオーバーライド(別名:アニメーターオーバーライドコントローラー)
サブステート
IK サポート
複数レイヤー
スケルトンマスク
480: 名前は開発中のものです。 [] 2024/01/30(火) 05:39:07.92 ID:DCr4w4dC(1/9) AAS
>>479
あざます!
使ってみた所感
・URP、Unity.Entities、Unity.Entities.Graphics等の依存してるパッケージの必要なバージョンが良くわからない
特定のパッケージが新しすぎるとそんなクラス無いと怒られるし、それを直すために特定のパッケージのバージョンを落とすと別のクラスが無いと怒られたりする
一部のエラーを握りつぶしてごり押したので不完全な状態
・ホロライブのMMDモデルだとボーンの数が多すぎて怒られた
原文:Skeleton entity Unity.Entities.Entity has 376 bones. Skinned mesh entity Latios.EntityWith`1<Latios.Kinemation.SkeletonDependent> has 371 bone references. The sum of these exceed the max shader capacity of 682.
・DMotion Proがアセットストアでリリース予定らしいので期待
そしてやはりShaderGraph限定の機能を使っている(Linear Blend Skinning)
サンプルに含まれてるシェーダだと結構いいパフォーマンス出たけど、わいのカスタムシェーダに置き換えてどこまで落ちるか・・・
そもそもLinear Blend Skinningをカスタムシェーダに移植できるのか試すぞ!というところで超朗報
481(3): 名前は開発中のものです。 [] 2024/01/30(火) 05:58:14.77 ID:DCr4w4dC(2/9) AAS
長老法!!!!
わいのカスタムシェーダの開発者さんがシェーダ起因のCPUバウンドの原因を特定してくれてパフォーマンスがどちゃくそ改善されました!!!
ビフォー
画像リンク
アフター
画像リンク
パフォーマンスが低かった理由も教えてくれたけどわいだったら絶対気づけなかった、流石プロ
確かUniversal Render Pipeline/Litだと150fpsとかだったから、ここまでくればもう十分まである
でも折角なのでウィニングラン(?)として>>474と>>479の検証だけはやりきりたい
482: 名前は開発中のものです。 [] 2024/01/30(火) 06:15:32.02 ID:25oO7Vfp(1/2) AAS
結局シェーダーの違いやったんか
トゥーンシェーダ色々あるけど結構違いありそうやな
483: 名前は開発中のものです。 [] 2024/01/30(火) 08:16:39.24 ID:sbR3UD9S(2/3) AAS
>>481
やったじゃん
484: 名前は開発中のものです。 [] 2024/01/30(火) 08:19:48.69 ID:sbR3UD9S(3/3) AAS
てかBone376あるとか書いてあるけどこれって全部でってこと?
1つのモデルで376ってありすぎじゃね?
485: 名前は開発中のものです。 [] 2024/01/30(火) 10:02:36.71 ID:DCr4w4dC(3/9) AAS
1つのモデルで371だった それをDOTS用に変換すると376になる?
スカートとか髪のボーン1つ1つにモデルを変形させるための本物のボーンとは別で
用途が分からないダミーのボーンがあったりするせいか頭数が多い
そしてこのボーンの上限超過エラーをコメントアウトして握りつぶしてみたけど表示が破綻してダメだった
このライブラリに同梱されてるシェーダでも表示が崩れるので、上限には意味があるらしい
Proがリリースされたら上限が上がることを祈りつつこのライブラリは一旦保留・・・
486: 名前は開発中のものです。 [] 2024/01/30(火) 11:08:42.21 ID:ZUYV+zXn(1/2) AAS
Unityって何々と何々は共存出来ないって多すぎじゃないですか
487(1): 名前は開発中のものです。 [] 2024/01/30(火) 11:16:32.01 ID:DCr4w4dC(4/9) AAS
わかる JobSystem+Burstみたいな値型限定で高速化とかするくらいならいっそC++でコーディングさせてくれとは思う
仮にC++で書けたとして本当に速くなるのかは分らんけど
488: 名前は開発中のものです。 [] 2024/01/30(火) 11:21:52.49 ID:25oO7Vfp(2/2) AAS
UEの最適化も結構大変そうだよ
スクエニとか自社の描画システムに切り替えて標準機能ガン無視とかしてる
外部リンク:www.docswell.com
489: 名前は開発中のものです。 [] 2024/01/30(火) 12:30:46.72 ID:DCr4w4dC(5/9) AAS
やっぱどこのゲームエンジンも低レベルなAPIを酷使して自前で全部実装するのが最強なのか
490: 名前は開発中のものです。 [] 2024/01/30(火) 15:36:01.77 ID:DCr4w4dC(6/9) AAS
BatchRendererGroupでモデルを描画するためには
1. BatchRendererGroupにメッシュとマテリアルを登録する
2. 実際に描画するために他にも色々登録する
必要があるんだけど、2をやらずにメッシュとマテリアルを登録するだけで登録数に比例した負荷が発生してしまう
描画しなくともこの負荷だけで従来のSkinnedMeshRendererにパフォーマンスで負ける
メッシュとマテリアルを登録せず描画処理だけ走らせると150fpsくらい出る
登録することで発生する負荷を追求したいのにProfiler君さあ・・・
画像リンク
491: 名前は開発中のものです。 [] 2024/01/30(火) 16:30:46.65 ID:AjZdEr3a(1/2) AAS
>>487
結局IRにするなら普通にC#使ったほうがいいと思うわ
C++だとしても変わらんし多分Burstのほうが早いまである
492: 名前は開発中のものです。 [] 2024/01/30(火) 16:32:12.53 ID:AjZdEr3a(2/2) AAS
基本的にボーン数はパフォーマンスに影響あるからできるならいらないボーンは削除したほうがいいと思う
493: 名前は開発中のものです。 [sage] 2024/01/30(火) 16:59:29.90 ID:HWvPLj+X(1) AAS
あくたんと天月(´;ω;`)
494: 名前は開発中のものです。 [] 2024/01/30(火) 17:21:10.35 ID:DCr4w4dC(7/9) AAS
なんかもう>>481で満足しちゃったので(他力本願)
BatchRendererGroupは異なるメッシュやマテリアルの大量描画には向かない可能性があるということで一旦置いておく
300以上のボーンを持つキャラクター30体の不要なボーンを精査するのは時間帯効果が低そうなので優先度低めのタスクとして頭の片隅においておきます・・・
上下前次1-新書関写板覧索設栞歴
あと 459 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s