リリース 3.7.1
概要
今回のアップデートでは、多くの要望が寄せられていたいくつかの機能をUdonで利用可能にし、高品質なDPIDミップマッピングのサポート(オプトインベータ)を追加しました。また、PhysBoneギズモの最適化を行いました。
新機能
- Udonで以下のC#機能を利用できるようになりました。
Array.Sort()を使用すると、Udonで配列をさまざまな方法でソートできます。これはUdonワールド内のプレイヤーを管理する際に便利です。こちらのCanny投稿に対応しました。System.Randomを使用すると、決定論的な乱数シードの作成や、ランダムなバイト値およびDouble値の生成が可能になります。これにより、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)ミップマップをサポートするようになりました。これにより、ワールドやアバターのテクスチャの鮮明さが大幅に向上します。
- ⚠️ 本機能は現在開発中のベータ機能です。SDKコントロールパネルの「Settings」パネルから明示的に有効にする必要があります。
- DPIDは、「Kaiser」フィルタリングアルゴリズムが選択されているすべてのテクスチャのミップマップアルゴリズムを置き換えます。「Box」フィルタリングには影響しません。
- SDKのビルドパネルでは以前より「Kaiser」フィルタリングの有効化を推奨してきましたが、現在はこれを有効にすることでDPIDが使用されるようになります。
- オリジナルのアルゴリズムとは異なり、VRChat版のDPIDは透過をサポートしています。透明なテクスチャの境界線で発生するフィルタリングのアーティファクトを防ぐには、Alpha is Transparencyを有効にしてください。
- オリジナルのアルゴリズムはBSD 3-Clause(MITのような寛容なライセンス)で公開されていました。その精神を受け継ぎ、当社が実装したコンピュートシェーダー版も同じライセンスで公開しています!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コントロールパネルの設定で、IMGUIの再描画ごとにスクリプトの定義が行われていた問題を修正しました(パフォーマンスがわずかに向上します)。
- 環境光が強い状況におけるLightprobe Hackの挙動を改善しました。
- 空のExpression Parameterリストがデフォルトのパラメータで埋められていた問題を修正しました。再び空のExpression Parameterリストを使用できるようになります。
- プロジェクトを開いた際やスクリプトを再コンパイルした際に、PhysBoneおよびConstraint Burstジョブに関連する内部警告メッセージが表示されることがあった問題を修正しました。
DPIDに関する修正と変更:3.7.1-beta.2
alphaIsTransparentが不正確なディテールを過度に強調してしまう問題を修正しました。- 非sRGBテクスチャ(ノーマルマップなど)が、高いミップレベルで乖離していた問題を修正しました。
- これにより、sRGBの挙動と一致するようになります。
- 他のピクセルがすべて同じ色である場合に、完全に透明な単一のピクセルがカウントされてしまうエッジケースを修正しました。
- SDK 3.7.1を初めてインポートした際に、null参照例外がログに大量出力されていた問題を修正しました。
- DPIDが、以前Kaiserを使用していたすべてのミップマップに正しく適用されるようになりました。
- コンピュートシェーダーを簡素化および効率化しました。
- DPIDに関連するログのスパムを削減しました。
最終版におけるDPIDの修正および変更
- DPIDを「BETA」と明記し、オプトイン方式に変更しました。
- 全体的により良い結果が得られるため、「conservative mode」をデフォルト設定にしました。
- 法線マップ(ノーマルマップ)を(再度)修正しました。
- ライトマップのサポートを修正しました。
- HDRおよびFloat形式のテクスチャにおいて、DPIDのミップマップをサポートしました。
既知の問題
- U# Behaviourを含むプレハブ内のGameObjectを初めて選択し、そのU# Behaviourのすぐ下にあるコンポーネントのGUIを表示しようとすると、GUIが表示されないことがあります。一度選択を解除してから再度プレハブを選択し直すと解消されます。
- Buffer ParticlesがUnity 2019の時と同じように動作しません。コミュニティメンバーのhfcRed氏による修正のための回避策はこちら。
- Unity 2022では、UnityのIMGUI内でハンドルされない例外が発生した際、Riderのデバッガーが停止することがあります。
- 詳細については、こちらの回避策およびJetbrainsのバグトラッカーを参照してください。
