Compatibility Notes with VRCFury VRCFuryとの互換性について #860
Replies: 4 comments
-
I have updated this announcement with NDMF 1.3.0 release. NDMF 1.3.0のリリースに伴い、このお知らせを更新しました。 |
Beta Was this translation helpful? Give feedback.
-
VRCFury 1.712.0 breaks NDMF again so I updated the announcement to suggest use 1.711.0. VRCFury 1.712.0でまたNDMFが破壊されたため、1.711.0を使用するようにアナウンスを更新しました。 |
Beta Was this translation helpful? Give feedback.
-
I have updated announcement as we have been informed that there is no problem with VRCFury 1.712.0 and VRCFury 1.715.0 is less problematic. VRCFury 1.712.0に関して問題なく、VRCFury 1.715.0のほうが問題がないとの情報があったため更新しました。 |
Beta Was this translation helpful? Give feedback.
-
I have updated documentation with latest NDMF and VRCFury information. |
Beta Was this translation helpful? Give feedback.
-
日本語が下にあります。
In English
This is notes about compatibility with VRCFury.
This information is heavily depends on version of NDMF and VRCFury.
Current information is based on NDMF 1.4.2 and VRCFury 1.859.0.
Since this information can be changed at any time, I put this on discussions. Please check the latest information.
If you have questions, Please ask in Q&A category.
Short notes for VRCFury users
Run Preprocess Avatar Hook
is enabled. It was not enabled by default for old Av3Emulator.Technical information
General information with non-NDMF tools
First, I do not guarantee compatibility with non-destructive tools that do not use NDMF, especially when starting Play Mode.
In general, for actual build time,
IVRCSDKPreprocessAvatarCallback.callbackOrder
works well for guaranteeing compatibility (processing ordering).For example, some shaders optimizes their shader or material in
IVRCSDKPreprocessAvatarCallback.OnPreprocessAvatar
and it works well with AAO.If you're using Av3Emulator, thanks to the feature in Av3Emulator that calls
IVRCSDKPreprocessAvatarCallback
when play mode,IVRCSDKPreprocessAvatarCallback.callbackOrder
works well even in play mode.If you're old user of Av3Emulator, please make sure
Run Preprocess Avatar Hook
is enabled. It was not enabled by default for old Av3Emulator.Improvements in NDMF 1.3.2 and VRCFury 1.712.0
Starting with NDMF 1.3.2 and VRCFury 1.712.0 or later, both NDMF and VRCFury were changed to use
IVRCSDKPreprocessAvatarCallback
for entering Play Mode.Both NDMF and VRCFury will calls
IVRCSDKPreprocessAvatarCallback
when entering Play Mode incallbackOrder
order.In addition, for environments with Av3Emulator, NDMF and VRCFury will automatically enable
Run Preprocess Avatar Hook
so thatIVRCSDKPreprocessAvatarCallback
is called when entering Play Mode.This makes AAO works correctly on Play Mode.
Improvements in NDMF 1.3.0
In NDMF 1.3.0, NDMF changed something to improves compatibility with VRCFury.
In NDMF 1.3.0, NDMF skips Optimizing phase when entering Play Mode including called by VRCFury as a hack.
This makes VRCFury's gimmick work properly with AAO during Play Mode.
However, as a result, AAO become not applied in Play Mode unless you use Av3Emulator.
VRCFury problems (until NDMF 1.3.0)
There was two big problems for compatibility with VRCFury.
Those problems are worked around in NDMF v1.3.0 so those problems are no longer a problem.
First, VRCFury has ordering difference between Play Mode and Build.
NDMF executes the process during initializing the scene and VRCFury executes after scene initialization.
So VRCFury is executed after NDMF when entering Play Mode.
However, VRCFury has lower
callbackOrder
than NDMF Optimizing phase.So, VRCFury is executed before NDMF Optimizing when entering Build.
This makes VRCFury's gimmick may not work properly when entering Play Mode.
Second, VRCFury calls NDMF in incorrect way and timing.
Since VRCFury 1.648.0, VRCFury calls NDMF in their process as a hack.
However, the call completely breaks the Avatar since it executes Optimizing phase before executing VRCFury process.
This made VRCFury's gimmick may not work properly with AAO.
Plesase refer issue on VRCFury for more details
日本語 (Japanese)
VRCFuryとの互換性についての情報です。
この情報はNDMFとVRCFuryのバージョンに大きく依存しています。
現在の情報はNDMF 1.4.2とVRCFury 1.859.0をベースにしています。
この情報はいつでも変更される可能性があるため、ディスカッションに書きました。最新の情報を確認してください。
もし質問があればQ&Aカテゴリで質問してください
VRCFuryユーザー向けの情報
Run Preprocess Avatar Hook
が有効であることを確認してください。古いAv3Emulatorでは規定で有効ではありませんでした。技術情報
NDMFを使わないツールとの一般的な情報
まずはじめに、私はNDMFを使わない非破壊ツールとの互換性について、特にPlay Mode開始時について保証しません。
一般には、実際のビルド時には、
IVRCSDKPreprocessAvatarCallback.callbackOrder
が互換性(処理順序)を保証してくれます。例えば、多くのシェーダーは
IVRCSDKPreprocessAvatarCallback.OnPreprocessAvatar
でシェーダーまたはマテリアルを最適化し、AAOとうまく動作します。Av3Emulatorを使用してる際には、Av3Emulatorのプレイモードに入るときに
IVRCSDKPreprocessAvatarCallback
を呼び出す機能のおかげで、IVRCSDKPreprocessAvatarCallback.callbackOrder
による互換性(処理順序)の保証がうまく動作します。もしAv3Emulatorの古いユーザの場合、
Run Preprocess Avatar Hook
が有効であることを確認してください。古いAv3Emulatorでは規定で有効ではありませんでした。NDMF 1.3.2とVRCFury 1.712.0での改善
NDMF 1.3.2とVRCFury 1.712.0以降から、NDMFとVRCFuryはPlay Modeに入るときに
IVRCSDKPreprocessAvatarCallback
を使用するように変更されました。NDMFとVRCFuryのどちらも、Play Modeに入るときに
IVRCSDKPreprocessAvatarCallback
をcallbackOrder
の順序で呼び出します。また、Av3Emulatorを使用している環境では、NDMFとVRCFuryはPlay Modeに入るときに
IVRCSDKPreprocessAvatarCallback
が呼び出されるように自動的にRun Preprocess Avatar Hook
を有効にします。これにより、Play ModeでAAOが正しく動作します。
NDMF 1.3.0 での改善
NDMF 1.3.0では、NDMFはVRCFuryとの互換性を改善するための変更しました。
NDMF 1.3.0では、VRCFuryによるハック呼び出しを含めて、Play Modeに入るときにOptimizingフェーズをスキップします。
したがって、Play Mode中にVRCFuryのし掛けがAAOと併用時に正しく動作するようになりました。
しかし、その結果、Av3Emulatorを使用しない場合にはPlay ModeではAAOが適用されません。
VRCFury固有の問題 (NDMF 1.2.0まで)
VRCFuryとの互換性には2つの大きな問題がありました。
NDMF 1.3.0ではこれらの問題に対する回避策が入りました。そのためこれらの問題は今は発生しないと考えられます。
はじめに、VRCFuryはPlay ModeとBuildで順序が異なりました。
NDMFはシーンの初期化中に処理を実行し、VRCFuryはシーンの初期化後に実行します。
そのため、Play Modeに入るときにはNDMFの後にVRCFuryが実行されます。
しかし、VRCFuryはNDMFのOptimizingフェーズよりも低い
callbackOrder
を持っています。そのため、Buildに入るときにはNDMFのOptimizingの前にVRCFuryが実行されます。
したがって、Play Modeに入るときにVRCFuryの機能が正しく動作しない可能性があります。
次に、VRCFuryはNDMFを間違った方法とタイミングで呼び出します。
VRCFury 1.648.0以降、VRCFuryはハックとして、自分の処理中にNDMFを呼び出します。
しかし、VRCFuryの処理を実行する前にOptimizingフェーズを実行するようにするため、この呼び出しは完全に間違っています。
したがって、VRCFuryの機能がAAOと併用時に正しく動作しない可能性がありました。
詳細はVRCFuryのissueを参照してください。
Beta Was this translation helpful? Give feedback.
All reactions