Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)

Enlighten SDK 3.10 ドキュメンテーション
Results will update as you type.
  • Enlighten SDK 3.10 JP
    • 1. Enlighten へようこそ
    • 2. Enlighten のしくみ
    • 3. アーティストのワークフロー
    • 4. Enlighten のインストール
    • 5. ライブラリ
    • 6. 実装ガイド
    • 7. テクニカル リファレンス
      • 7.1. 出力形式
      • 7.2. アルベドの取り扱い
      • 7.3. ライトマップ ライティング モデル
      • 7.4. ライト プローブの評価
      • 7.5. ローカル IBL 反射
      • 7.6. ライト可視性データ
      • 7.7. カスタムの直接光
      • 7.7b. プリコンピュート パイプライン
      • 7.8. 低レベル プリコンピュート API
      • 7.9. プリコンピュートのデバッグ
      • 7.1. 低レベル ランタイム
        • 7.1.1. 低レベル ランタイムのウォークスルー
          • 7.1.1.1. ランタイムの準備
          • 7.1.1.2. フレームごとのウォークスルー
            • 7.1.1.2.1. 入力ライティングの提供
            • 7.1.1.2.2. イラディアンスのための解決
            • 7.1.1.2.3. ディレクショナル イラディアンスのための解決
            • 7.1.1.2.4. プローブ ポイントのための解決
            • 7.1.1.2.5. プローブの補間
            • 7.1.1.2.6. バウンスのリサンプリング
          • 7.1.1.3. 実行時に複数のシステムがある場合
          • 7.1.1.4. 低レベル キューブマップ API
        • 7.1.2. 入力ライティング
        • 7.1.3. 低レベル ランタイムのデバッグ
      • 7.11. ベイクされたライティング
      • 7.12. パフォーマンス チューニング
      • 7.13. 技術的トラブルシューティング
      • 7.14. テレイン LOD
      • 7.15. プローブ LOD
      • 7.16. ライトマップ LOD
    • 8. 高度なテクニック
    • 9. ツール
    • 10. Enlighten Mobile
    • 11. ホワイト ペーパー
    • Third-party licences
    • 13. リリース ノート
    Calendars

You‘re viewing this with anonymous access, so some content might be blocked.
/
7.1.1.2.1. 入力ライティングの提供

    This is the documentation for Enlighten.

    7.1.1.2.1. 入力ライティングの提供

    Mar 15, 2021


    ライティングは直接入力ライティングと間接入力ライティングの 2 つのステージで提供されます。直接入力ライティング ステージでは、提供されたすべてのライトからサーフェスのライティングを計算し、間接入力ライティング ステージでは、直接入力ライティング ステージの結果に対し、バウンス、アルベド、一時的コヒーレンスの計算を適用します。その結果が InputLightingBuffer です。

    直接入力ライティング

    間接入力ライティング ステージでは、ライト ポインターのソートされていないアレイ、ライトのアレイと一致する可視性ポインターのアレイ、有効な入力ワークスペース、トランスフォーム (ワールド空間で独立したシステムを移動させるために使用)、出力として使用される有効な IncidentLightingBuffer を入力として受け取ります。

    IncidentLightingBuffer の作成
    Geo::u32 incidentLightingBufferSize = CalcIncidentLightingBufferSize(m_InputWorkspace);
        void* incidentLightingMemory = GEO_ALIGNED_MALLOC(incidentLightingBufferSize, 16);
        IncidentLightingBuffer* incidentLightingBuffer = CreateIncidentLightingBuffer(incidentLightingMemory, m_InputWorkspace);
        m_LightBankBuffers.Push(incidentLightingBuffer);

    以下の関数を呼び出して一連のライトの直接光を計算します。

    直接入力ライティングの例
    Enlighten::DirectInputLightingParameters params;
                        params.m_InputWorkspace                 = system->GetInputWorkspace();
                        params.m_NumLights                      = m_TotalNumLights;
                        params.m_InputLights                    = lightsArray;
                        params.m_Transform                      = NULL;
                        params.m_IncidentLightingBufferResult   = system->GetLightBankBuffer(bankIter->first);
                        params.m_ThreadVisibilityPointers       = wtd->m_ThreadVisibilityPointers;
     
                        // 可視性ポインターのリストを記述します
                        WriteVisibilityPointers(wtd->m_ThreadVisibilityPointers, system, bankIter->first);
     
    Geo::u32 timeUs = 0;
                        DoDirectInputLighting(¶ms, wtd->m_WorkingMemory, scrathSpaceSize, timeUs);

    間接入力ライティング

    以下の関数を呼び出して一連の入射光バッファから間接光を計算します。

    間接入力ライティングの例
    Enlighten::IndirectInputLightingParameters params;
     
                IncidentLightingBuffer* incidentLightingBuffer = cpuDynamicObject->GetIncidentLightingBuffer();
                params.m_IncidentLightingBuffers            = &incidentLightingBuffer;
                params.m_NumIncidentInputLightingBuffers    = 1;
                params.m_EmissiveTextureData                = NULL;
                params.m_AlbedoTextureData                  = NULL;
                params.m_EmissiveScale                      = Geo::VZero();
                params.m_BounceData                         = NULL;
                params.m_BounceScale                        = Geo::VBroadcast(m_GlobalState.m_BounceScale);
                params.m_InputWorkspace                     = dynamicObject->m_InputWorkspace;
                params.m_ClusterAlbedoWorkspace             = dynamicObject->m_ClusterAlbedoWorkspace;
                params.m_InputLightingBufferResult          = dynamicObject->m_InputLightingBuffer;
                params.m_InputLightingSurroundings          = dynamicObject->m_InputLightingSurroundings;
     
                Geo::u32 timeUs=0;
                DoIndirectInputLighting(¶ms, timeUs);

    カスタム入力ライティング

    GPU などで独自に入力ライティングを計算する場合、以下の関数で一連のダスター値から入射光バッファを提供します。

    bool GEO_CALL       AddDusterValuesToInputWorkspace(const InputWorkspace* workspaceMemory, Enlighten::IncidentLightingBuffer* output, const Geo::v128* dusterValues);
    , multiple selections available,
    {"serverDuration": 17, "requestCorrelationId": "b35f64c506354af69edb876636c7f7f4"}