ホロライブの二次創作ゲーを作りたい (953レス)
上下前次1-新
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
なんかもう>>481481(3): 名前は開発中のものです。 [] 2024/01/30(火) 05:58:14.77 ID:DCr4w4dC(2/9) AAS
長老法!!!!
わいのカスタムシェーダの開発者さんがシェーダ起因のCPUバウンドの原因を特定してくれてパフォーマンスがどちゃくそ改善されました!!!
ビフォー
画像リンク
アフター
画像リンク
パフォーマンスが低かった理由も教えてくれたけどわいだったら絶対気づけなかった、流石プロ
確かUniversal Render Pipeline/Litだと150fpsとかだったから、ここまでくればもう十分まである
でも折角なのでウィニングラン(?)として>>474と>>479の検証だけはやりきりたい
で満足しちゃったので(他力本願)
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
なるほどね
508: 名前は開発中のものです。 [] 2024/01/31(水) 13:45:40.82 ID:vVhRDcrl(5/6) AAS
修正できたからウッキウキでお願いの連絡しようとしたら、とっくに修正終わってるからリリース待っててちょと一蹴された、さすがプロ
509(1): 名前は開発中のものです。 [] 2024/01/31(水) 20:48:03.16 ID:YUKGGu/H(1/2) AAS
素朴な質問だけどシェーダー何使ってるの?
MMDはどうやってUnityにインポートしてる?MMD4Mecanim?
510: 名前は開発中のものです。 [] 2024/01/31(水) 20:48:05.51 ID:YUKGGu/H(2/2) AAS
素朴な質問だけどシェーダー何使ってるの?
MMDはどうやってUnityにインポートしてる?MMD4Mecanim?
511(2): 名前は開発中のものです。 [] 2024/01/31(水) 23:21:39.42 ID:vVhRDcrl(6/6) AAS
>>509
シェーダ公式ページ 画像多いので通信量とか注意
外部リンク:github.com
MMD4Mecanimでインポートしてる
正確には同梱されてるpmx2fbx.exeでfbxに変換するだけで、それ以降はMMD4Mecanimの機能は全く使ってない
512: 名前は開発中のものです。 [] 2024/02/01(木) 01:07:18.15 ID:950QpuXW(1) AAS
>>511
あーこれ気になってた
売ってるのかこのシェーダー
513(1): 名前は開発中のものです。 [] 2024/02/01(木) 18:34:04.15 ID:7MENY3uE(1/3) AAS
今日も今日とて、みみっちぃ最適化をする人生
・(Skinned)MeshRendererにはBoundsというプロパティがある
・Boundsとはモデルを覆う箱の大きさを設定するプロパティで、この箱がカメラの描画範囲にあるかどうかでカリング処理が施される
・Boundsの初期値はモデルの初期ポーズを覆う最低限の大きさしかない
→アニメーションでポーズが変わると初期値の箱から手足がはみ出ることがある
→結果として、本来カメラに映るはずの手足がカリングで非表示にされる
・これの簡単な対策はBoundsをクソでかくすることだが、でかすぎるとカメラにモデルが映ってないのにカリングされなくなる確率が高まる
→そこでわいはボーンの位置を全部読み取ってBoundsのサイズを毎フレーム更新する実装を施していた
→ボーンは1キャラあたり300以上、つまりTransform.positionのアクセスが300以上×キャラクターの数発生する
これをBurstで最適化する
見込みとしては2msしか短縮されないけど、今のわいは1msでも最適化したい
514: 名前は開発中のものです。 [] 2024/02/01(木) 18:37:10.31 ID:7MENY3uE(2/3) AAS
UIの実装を進めてる時よりみみっちぃ最適化に熱を上げてる時のほうがイキイキしてるわいって・・・
515(1): 名前は開発中のものです。 [] 2024/02/01(木) 19:00:27.95 ID:V9fYybJx(1) AAS
>>511
さんくす
これって超高価なシェーダーだよね。
デモが重かったのもあって、自分は買わなかった
>>513
手足がはみ出ない程度の大きさにすれば十分だと思うが・・・
516: 名前は開発中のものです。 [] 2024/02/01(木) 19:10:05.01 ID:7MENY3uE(3/3) AAS
>>515
本来は企業向けのシェーダだから普通は個人で買わないわな
確かにここまでBoundsの大きさを緻密に制御する必要ないかも・・・まずはそこから見直してみる
517: 名前は開発中のものです。 [] 2024/02/01(木) 20:18:11.43 ID:Rt8Mi+6/(1) AAS
トゥーンシェーダー色々あるけど機能が微妙に違っておもろいね
上下前次1-新書関写板覧索設栞歴
あと 436 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.019s