diff --git a/Assets/VRM10/Runtime/Components/Expression/MorphTargetBindingMerger/MorphTargetBindingMerger2.cs b/Assets/VRM10/Runtime/Components/Expression/MorphTargetBindingMerger/MorphTargetBindingMerger2.cs
index 95e305f3a..9441ba8b9 100644
--- a/Assets/VRM10/Runtime/Components/Expression/MorphTargetBindingMerger/MorphTargetBindingMerger2.cs
+++ b/Assets/VRM10/Runtime/Components/Expression/MorphTargetBindingMerger/MorphTargetBindingMerger2.cs
@@ -5,16 +5,26 @@ using UnityEngine;
namespace UniVRM10
{
+ ///
+ /// Optimized implementation of MorphTarget binding merger.
+ ///
+ /// Dictionary を使用すると、その GetEnumerator()(foreach) や get/set を 100,1000 オーダーで呼び出すことになる。
+ /// するとモバイル環境ではかなりの定常負荷になってしまうため、その使用を避けて実装する。
+ ///
internal sealed class MorphTargetBindingMerger2
{
private readonly ExpressionKey[] _keyOrder;
- // NOTE: Dictionary Access is very slow. So we use this only.
private readonly Dictionary _keyIndexReverseMap = new(ExpressionKey.Comparer);
- // NOTE: idx dimension0: _keyOrder, idx dimension1: no specific order
- private readonly RuntimeMorphTargetBinding[][] _bindings;
+ ///
+ /// index access with [_keyOrder][*]
+ ///
+ private readonly RuntimeMorphTargetBinding[][] _bindings;
private readonly MorphTargetIdentifier[] _morphTargetOrder;
- // NOTE: idx: _morphTargetOrder
+
+ ///
+ /// index access with [_morphTargetOrder]
+ ///
private readonly float?[] _accumulatedWeights;
public MorphTargetBindingMerger2(Dictionary expressions, Transform modelRoot)