Release 3.7.1
概要
今回のアップデートでは、多くの要望が寄せられていたいくつかの機能をUdonで利用可能にしたほか、高品質なDPID mipmappingサポート(オプトインベータ)の追加、およびPhysBoneギズモの最適化を行いました。
新機能
- 以下のC#機能をUdonで利用可能にしました:
Array.Sort()を使用して、Udonで様々な方法で配列をソートできるようになりました。Udonワールドにおけるプレイヤーの管理に役立ちます。こちらのCanny投稿に対応しました。System.Randomを使用して、Udonで決定論的な乱数シードの作成や、ランダムなBytesやDoublesの生成が可能になりました。これにより、UnityEngine.Randomで可能な範囲を超えて、Udonワールドでの乱数の可能性が広がります。4つの新しい関数を追加し、こちらのCanny投稿に対応しました。System.Text.StringBuilderを使用して、既存の文字列関数よりも優れたパフォーマンスで文字列の構築や再フォーマットが行えるようになりました。18の新しい関数とプロパティを追加し、こちらのCanny投稿に対応しました。System.Text.RegularExpressions- RegEx は、テキスト文字列内のパターンを検索、照合、置換するための強力なシステムです。14の新しい関数とプロパティを追加し、こちらのCanny投稿に対応しました。System.Typeを使用して、Udonでデータ型を操作できるようになりました。実行時にオブジェクトの型を検証したい上級クリエイターに役立ちます。67の新しい関数とプロパティを追加し、こちらのCanny投稿に対応しました。
- SDKが「Detail Preserving Image Downscaling」(DPID) ミップマップをサポートしました。これにより、ワールドやアバターのテクスチャの鮮明さが大幅に向上します。
- :warning: 現在開発中の機能です!現在はベータ版機能であり、SDKコントロールパネルの「Settings」パネルから明示的に有効にする必要があります。
- DPIDは、「Kaiser」フィルタリングアルゴリズムが選択されているすべてのテクスチャにおいて、ミップマッピングアルゴリズムを置き換えます。「Box」フィルタリングには影響しません。
- SDKのビルドパネルでは以前より「Kaiser」フィルタリングの有効化が推奨されていましたが、これによりDPIDが有効になります。
- オリジナルのアルゴリズムとは異なり、VRChat版のDPIDは透過をサポートしています。透明なテクスチャの端にフィルタリングのアーティファクトが発生しないよう、Alpha is Transparency を有効にしてください。
- オリジナルのアルゴリズムの実装はBSD 3-Clause(MITのような寛容なライセンス)で公開されていました。この恩送りのため、私たちのCompute Shader版も同じライセンスでリリースしました!SDK内の
com.vrchat.base\Editor\VRCSDK\Dependencies\VRChat\Resources\PerceptualMipmapping\PerceptualPostProcessor.computeから確認できます。
- PhysBoneのギズモ描画を最適化しました。
- 半径が0ではないPhysBoneのエディタギズモの描画速度が2〜3倍になりました。
- 選択されたオブジェクトの階層にある複数のPhysBoneコンポーネントのエディタギズモの描画速度が1.5〜2倍になりました。
- こちらのCanny投稿に対応しました。
修正と変更
- 終了時に自身を破棄するように設定されたパーティクルシステムやトレイルレンダラーを含むアバターを、SDKでアップロードできないようにしました。また、終了時に自身を無効化するアバターのルート上のパーティクルシステムも許可されません。
- Expression Parametersのインスペクターで、使用メモリがビット単位ではなくバイト単位と表示されていた誤字を修正しました。
- SDK Control PanelがIMGUIの再描画ごとにスクリプトのdefine設定を行っていた問題を修正しました(パフォーマンスがわずかに向上します)。
- 環境光が多い状況における Lightprobe Hack の挙動を改善しました。
- 空のExpression Parametersリストがデフォルトのパラメーターで埋められてしまう問題を修正しました。これにより、Expression Parametersリストを再度空にできるようになりました。
- プロジェクトを開いたりスクリプトを再コンパイルしたりする際に、PhysBoneやConstraint Burstジョブに関連する内部的な警告メッセージが表示されることがあった問題を削除しました。
3.7.1-beta.2 におけるDPIDの修正と変更
alphaIsTransparentが不適切なディテールを過剰に強調していた問題を修正しました。- 非sRGBテクスチャ(ノーマルマップなど)が、高いミップレベルで乖離していた問題を修正しました。
- これにより、sRGBの挙動と一致するようになります。
- 他のピクセルがすべて同じ色である場合に、完全に透明な単一ピクセルがカウントされてしまうエッジケースを修正しました。
- SDK 3.7.1を初めてインポートした際に、ログにNullReferenceExceptionが大量に出力される問題を修正しました。
- これにより、以前Kaiserを使用していたすべてのミップマップに対してDPIDが正しく適用されるようになります。
- コンピュートシェーダーを簡素化および効率化しました。
- DPID関連のログ出力を削減しました。
最終版におけるDPIDの修正と変更点
- DPIDを「BETA」と明記し、オプトイン方式に変更しました。
- 全体的に良好な結果が得られるため、「conservative mode」をデフォルト設定にしました。
- 法線マップを(再度)修正しました。
- ライトマップへの対応を修正しました。
- HDRおよびFloat形式のテクスチャにおいて、DPIDのミップマップをサポートしました。
既知の不具合
- シーンを開いて初めて、U# Behaviour を持つプレハブ内の GameObject を選択した際、その U# Behaviour の直下にあるコンポーネントの GUI が表示されないことがあります。プレハブの選択を解除してから再度選択することで修正されます。
- Buffer Particles が Unity 2019 の時と同じように動作しません。コミュニティメンバーの hfcRed 氏による回避策がこちらにあります。
- Unity 2022 では、Unity の IMGUI 内で発生する未処理の例外により、Rider のデバッガーが停止することがあります。
- 詳細については、こちらの回避策および Jetbrains のバグトラッカーを参照してください。
最終更新: