docs.unity3d.com
    目次を表示する/隠す

    定数 intrinsic

    IsConstantExpression intrinsic を使用すると、特定の式がコンパイル時に定数になっているかチェックできます。

    using static Unity.Burst.CompilerServices.Constant;
    
    var somethingWhichWillBeConstantFolded = math.pow(42.0f, 42.0f);
    
    if (IsConstantExpression(somethingWhichWillBeConstantFolded))
    {
        // Burst は somethingWhichWillBeConstantFolded がコンパイル時に定数であることを認識します
    }
    

    これは複雑な式の定数畳み込みが常に行われるかチェックするのに便利であり、既知の定数値の最適化に使用できます。例えば、整数乗のための pow のような関数を実装したい場合は、以下のようになります。

    using static Unity.Burst.CompilerServices.Constant;
    
    public static float MyAwesomePow(float f, int i)
    {
        if (IsConstantExpression(i) && (2 == i))
        {
            return f * f;
        }
        else
        {
            return math.pow(f, (float)i);
        }
    }
    

    IsConstantExpression チェックでは、i が定数でない場合は if 条件が false になるため、Burst が常に分岐を除外します。i が定数で 2 に等しい場合は、より最適なシンプルな乗算を代わりに使用できます。

    Note

    定数畳み込みは最適化中にのみ行われます。最適化を無効にしている場合、intrinsic は false を返します。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)