ホロライブの二次創作ゲーを作りたい (953レス)
1-

483: 名前は開発中のものです。 [] 2024/01/30(火) 08:16:39.24 ID:sbR3UD9S(2/3) AAS
>>481
481(3): 名前は開発中のものです。 [] 2024/01/30(火) 05:58:14.77 ID:DCr4w4dC(2/9) AAS
長老法!!!!
わいのカスタムシェーダの開発者さんがシェーダ起因のCPUバウンドの原因を特定してくれてパフォーマンスがどちゃくそ改善されました!!!

ビフォー
画像リンク


アフター
画像リンク


パフォーマンスが低かった理由も教えてくれたけどわいだったら絶対気づけなかった、流石プロ
確かUniversal Render Pipeline/Litだと150fpsとかだったから、ここまでくればもう十分まである
でも折角なのでウィニングラン(?)として>>474>>479の検証だけはやりきりたい
やったじゃん
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体の不要なボーンを精査するのは時間帯効果が低そうなので優先度低めのタスクとして頭の片隅においておきます・・・
495
(1): 名前は開発中のものです。 [] 2024/01/30(火) 17:22:01.84 ID:DCr4w4dC(8/9) AAS
ちなみに>>481のパフォーマンスが上がった理由は「マテリアルに対してSetVectorしたフレームではConstantBufferの更新が走るので、SetVectorしたマテリアルの数に比例してパフォーマンスが低下する」とのこと

外部リンク:note.com
> UnityのSRP Batcherとは何なのか
> 一言でいえば、Draw Call毎にConstant Bufferを更新するという非効率な仕組みをやめたということです。これによりレンダリングに関連するCPUコストが削減されます。

毎フレームSetVectorするとSRP Batcherの強みを殺すことになる
勉強になりました
496: 名前は開発中のものです。 [] 2024/01/30(火) 20:09:55.73 ID:8GAA7lp1(1) AAS
>>495
なるほどサンクス
497
(1): 名前は開発中のものです。 [] 2024/01/30(火) 20:21:29.65 ID:DCr4w4dC(9/9) AAS
ん?SetVectorがダメならfloatに分割してSetFloatを3、4回走らせればいいだけの気がする・・・
それで許されるのならなんかガバガバだな
もしかして今回の犯人がSetVectorだったというだけで、Set系は全部アウトなのかも
要検証
498
(1): 名前は開発中のものです。 [] 2024/01/30(火) 22:43:19.95 ID:ZUYV+zXn(2/2) AAS
シェーダー最適化してもまともなAI組んだらCPUバウンドで動かなくなるから
単調なアニメーションさせることしか出来ないけどそれは大丈夫なのかな
499
(1): 名前は開発中のものです。 [] 2024/01/31(水) 03:53:20.43 ID:vVhRDcrl(1/6) AAS
>>498
AIって他の雑多な処理と同じくC#でコーディングしたもの?
毎フレーム走るC#の処理が多すぎるとCPUバウンドになるってこと?
どうなんだろう・・・IL2CPPやJobSystem+Burstとかで処理時間を詰めていけば乗り切れたりするのかな
500
(1): 名前は開発中のものです。 [] 2024/01/31(水) 04:43:02.64 ID:vVhRDcrl(2/6) AAS
>>497
やっぱり
SetFloatで試したけど、毎フレームSetFloatしたら70fpsまで落ちた
このカスタムシェーダ、マテリアルの値を毎フレーム更新しなきゃいけない機能を搭載してるから、その機能を一時的に殺すことで130fpsくらいまで上昇した
今のところわい個人はその機能に用がないからいいけど先方はそういうわけにもいかないだろうから、お礼がてら対策できないか検証してみるか
501: 名前は開発中のものです。 [] 2024/01/31(水) 10:33:27.78 ID:T8K+yJgS(1/3) AAS
>>499
Job Burstでかなり早く処理できるよ
502
(1): 名前は開発中のものです。 [] 2024/01/31(水) 10:35:59.05 ID:T8K+yJgS(2/3) AAS
>>500
Set系が難ありって感じかな
C#スクリプトからその時の状況の変化でイベント発行してシェーダーはその値を使う
状況の変化がない場合はその値をずっと使い続けるみたいなことができればいいと思う
503
(1): 名前は開発中のものです。 [] 2024/01/31(水) 11:09:28.53 ID:vVhRDcrl(3/6) AAS
>>502
パフォーマンスはかなり最適化されてて、値をキャッシュできるものは元からキャッシュが実装されてた
このシェーダにはPerspectiveRemovalっていう機能があって、カメラとキャラクターの向きや位置関係をリアルタイムでシェーダに教えてあげる必要があるのでキャッシュが使えない
PerspectiveRemovalが何者か正確に理解できてないけど違いはこんな感じ↓

PerspectiveRemovalオフ(そこら辺のシェーダでも通常はこっち)
画像リンク


PerspectiveRemovalオン
画像リンク

504: 名前は開発中のものです。 [] 2024/01/31(水) 11:25:56.94 ID:3RPE9L0m(1/2) AAS
>>503
顔がこっち向く的な?
505: 名前は開発中のものです。 [] 2024/01/31(水) 11:26:47.66 ID:3RPE9L0m(2/2) AAS
その機能削除して普通にIKとかでよくね?
AnimationRiggingはデフォルトでBurst対応してたと思う
506
(1): 名前は開発中のものです。 [] 2024/01/31(水) 11:35:08.35 ID:vVhRDcrl(4/6) AAS
削除っていうか、このシェーダは購入したもので不定期的にあるアプデの恩恵を受けたい
&いつか自分がこの機能を使いたい時が出てくるかもしれないから、正式に修正してもらったほうが嬉しい
先方もわいが出したパフォーマンス最適化の提案を度々取り入れてくれてるので今回も直したソースコード送り付けてお願いしてみる
507: 名前は開発中のものです。 [] 2024/01/31(水) 11:55:33.80 ID:T8K+yJgS(3/3) AAS
>>506
なるほどね
1-
あと 446 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s