XR_ANDROID_light_estimation_cubemap

Name String

XR_ANDROID_light_estimation_cubemap

نوع الإضافة

إضافة مثيل

رقم الإضافة المسجَّل

722

المراجعة

1

حالة التصديق

لم تتم المصادقة عليها

الاعتماد على الإضافات والإصدارات

XR_ANDROID_light_estimation

تاريخ آخر تعديل

2025-08-06

حالة الملكية الفكرية

ما مِن مطالبات معروفة بشأن الملكية الفكرية.

المساهمون

"سالار خان"، Google
"سكوت تشانغ"، Google
"جاريد فايندر"، Google
"سبنسر كوين"، Google
"ليفانا تشن"، Google
"نيهاف جاين"، Google
"يورغن شتورم"، Google

نظرة عامة

تستند هذه الإضافة إلى إضافة XR_ANDROID_light_estimation الأساسية. ويضيف هذا الإصدار إمكانية الحصول على تقديرات إضاءة الخريطة المكعبة، ما يوفّر تقديرات أكثر تفصيلاً حول الإضاءة في البيئة المادية.

ملاحظة

إنّ آلية الحصول على بيانات تقدير الإضاءة هي نفسها آلية الإضافة الأساسية، باستثناء أنّه يجب ربط XrCubemapLightEstimatorCreateInfoANDROID بـ XrLightEstimatorCreateInfoANDROID عند إنشاء مؤشر تقدير الإضاءة.

فحص إمكانات النظام

typedef struct XrSystemCubemapLightEstimationPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsCubemapLightEstimation;
} XrSystemCubemapLightEstimationPropertiesANDROID;

أوصاف الأعضاء

  • ‫type هو XrStructureType لهذه البنية.
  • ‫next هو NULL أو مؤشر إلى البنية التالية في سلسلة البنى. لا يتم تحديد مثل هذه البُنى في OpenXR الأساسية أو هذه الإضافة.
  • ‫supportsCubemapLightEstimation هي قيمة XrBool32 تشير إلى ما إذا كان النظام الحالي يتيح تقدير الإضاءة باستخدام خريطة مكعّبة.

يمكن للتطبيق فحص ما إذا كان النظام قادرًا على إتاحة تقدير الإضاءة في الخريطة المكعبة من خلال توسيع XrSystemProperties باستخدام بنية XrSystemCubemapLightEstimationPropertiesANDROID عند استدعاء xrGetSystemProperties .

إذا عرض وقت التشغيل XR_FALSE لـ supportsCubemapLightEstimation وتم ربط XrCubemapLightEstimatorCreateInfoANDROID بـ XrLightEstimatorCreateInfoANDROID، يجب أن يعرض وقت التشغيل XR_ERROR_FEATURE_UNSUPPORTED من xrCreateLightEstimatorANDROID .

الاستخدام الصالح (ضمني)

جارٍ الحصول على درجات دقة الخريطة المكعبة المتوافقة

XrResult xrEnumerateCubemapLightingResolutionsANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    resolutionCapacityInput,
    uint32_t*                                   resolutionCountOutput,
    uint32_t*                                   resolutions);

أوصاف المَعلمات

  • ‫instance هو XrInstance تم إنشاؤه سابقًا.
  • ‫systemId هو XrSystemId الذي تم استرداده سابقًا من خلال xrGetSystem للحصول على درجات دقة الخريطة المكعبة المتوافقة.
  • ‫resolutionCapacityInput هو uint32_t يشير إلى الحد الأقصى لعدد العناصر التي يمكن تخزينها في الصفيفة resolutions.
  • ‫resolutionCountOutput هو مؤشر إلى uint32_t يتم ضبطه من خلال وقت التشغيل ويشير إلى عدد العناصر التي تمت كتابتها في مصفوفة resolutions من خلال وقت التشغيل.
  • ‫resolutions هي مصفوفة من uint32_t تتم تعبئتها من خلال وقت التشغيل بدقة خريطة المكعب المتوافقة.

تشير دقة الخريطة المكعبة إلى عرض كل وجه من أوجه الخريطة المكعبة وارتفاعه بالبكسل. أسلوب الاستدعاء المزدوج: يمكن للتطبيق بعد ذلك اختيار استخدام إحدى درجات الدقة المتوافقة في XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution عند إنشاء مؤشر تقدير الإضاءة. يجب أن يخصّص التطبيق مقدارًا مناسبًا من الذاكرة لعناصر مخزن الصور المؤقت في XrCubemapLightingDataANDROID استنادًا إلى درجة الدقة التي تم اختيارها وتنسيق الألوان.

الاستخدام الصالح (ضمني)

  • يجب تفعيل الإضافة XR_ANDROID_light_estimation_cubemap قبل استدعاء xrEnumerateCubemapLightingResolutionsANDROID
  • يجب أن يكون instance مقبض XrInstance صالحًا
  • يجب أن يكون resolutionCountOutput مؤشرًا إلى قيمة uint32_t
  • إذا لم تكن قيمة resolutionCapacityInput هي 0، يجب أن تكون قيمة resolutions مؤشرًا إلى مصفوفة من قيم resolutionCapacityInput uint32_t

رموز الإرجاع

Success

  • XR_SUCCESS

تعذّر الإجراء

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

الحصول على تنسيقات ألوان الخريطة المكعبة المتوافقة

يحدّد التعداد XrCubemapLightingColorFormatANDROID لوقت التشغيل تنسيق لون إضاءة الخريطة المكعبة الذي يجب استخدامه.

typedef enum XrCubemapLightingColorFormatANDROID {
    XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID = 1,
    XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID = 2,
    XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID = 3,
    XR_CUBEMAP_LIGHTING_COLOR_FORMAT_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrCubemapLightingColorFormatANDROID;

تحمل التعدادات المعاني التالية:

وصف التعداد

XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID

تنسيق ألوان يتضمّن 3 قنوات، وكل قناة هي قيمة نقطة عائمة بتنسيق 32 بت.

XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID

تنسيق ألوان يتضمّن 4 قنوات، حيث تكون كل قناة قيمة نقطة عائمة بتنسيق 32 بت.

XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID

تنسيق ألوان يتضمّن 4 قنوات، حيث تكون كل قناة قيمة نقطة عائمة بتنسيق 16 بت.

XrResult xrEnumerateCubemapLightingColorFormatsANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    colorFormatCapacityInput,
    uint32_t*                                   colorFormatCountOutput,
    XrCubemapLightingColorFormatANDROID*        colorFormats);

أوصاف المَعلمات

  • ‫instance هو XrInstance تم إنشاؤه سابقًا.
  • ‫systemId هو XrSystemId الذي تم استرداده سابقًا من خلال xrGetSystem للحصول على درجات دقة الخريطة المكعبة المتوافقة.
  • ‫colorFormatCapacityInput هو uint32_t يشير إلى الحد الأقصى لعدد العناصر التي يمكن تخزينها في الصفيفة colorFormats.
  • ‫colorFormatCountOutput هو مؤشر إلى uint32_t يتم ضبطه من خلال وقت التشغيل ويشير إلى عدد العناصر التي تمت كتابتها في مصفوفة colorFormats من خلال وقت التشغيل.
  • ‫colorFormats هي مصفوفة من XrCubemapLightingColorFormatANDROID تتم تعبئتها من خلال وقت التشغيل بتنسيقات ألوان الخريطة المكعبة المتوافقة.

تعبير الاستدعاء المزدوج: يمكن للتطبيق بعد ذلك اختيار استخدام أحد تنسيقات الألوان المتوافقة في XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat عند إنشاء مؤشر تقدير الإضاءة. يجب أن يخصّص التطبيق مقدار الذاكرة المناسب لعناصر مخزن الصور المؤقت في XrCubemapLightingDataANDROID استنادًا إلى تنسيق الألوان الذي تم اختياره.

الاستخدام الصالح (ضمني)

  • يجب تفعيل الإضافة XR_ANDROID_light_estimation_cubemap قبل استدعاء xrEnumerateCubemapLightingColorFormatsANDROID
  • يجب أن يكون instance مقبض XrInstance صالحًا
  • يجب أن يكون colorFormatCountOutput مؤشرًا إلى قيمة uint32_t
  • إذا لم تكن قيمة colorFormatCapacityInput هي 0، colorFormats يجب أن تكون مؤشرًا لمصفوفة من قيم colorFormatCapacityInput XrCubemapLightingColorFormatANDROID

رموز الإرجاع

Success

  • XR_SUCCESS

تعذّر الإجراء

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

إنشاء مقبض لتقدير الإضاءة في خريطة مكعّبة

typedef struct XrCubemapLightEstimatorCreateInfoANDROID {
    XrStructureType                        type;
    const void*                            next;
    uint32_t                               cubemapResolution;
    XrCubemapLightingColorFormatANDROID    colorFormat;
    XrBool32                               reproject;
} XrCubemapLightEstimatorCreateInfoANDROID;

أوصاف الأعضاء

  • ‫type هو XrStructureType لهذه البنية.
  • ‫next هو NULL أو مؤشر إلى البنية التالية في سلسلة البنى.
  • ‫cubemapResolution هو uint32_t يشير إلى دقة إضاءة الخريطة المكعبة التي يجب استخدامها.
  • ‫colorFormat هو XrCubemapLightingColorFormatANDROID يشير إلى تنسيق ألوان بيانات إضاءة الخريطة المكعبة المطلوب استخدامها.
  • ‫reproject هو XrBool32 يشير إلى ما إذا كان يجب إعادة عرض إضاءة الخريطة المكعبة على المساحة الأساسية للتطبيق.

تصف بنية XrCubemapLightEstimatorCreateInfoANDROID المعلومات اللازمة لإنشاء مؤشر XrLightEstimatorANDROID قادر على تقديم تقديرات إضاءة الخريطة المكعبة. يجب ضبط العضو cubemapResolution في XrCubemapLightEstimatorCreateInfoANDROID على إحدى درجات الدقة التي تعرضها الدالة xrEnumerateCubemapLightingResolutionsANDROID . يجب ضبط العضو colorFormat في XrCubemapLightEstimatorCreateInfoANDROID على أحد تنسيقات الألوان التي يعرضها xrEnumerateCubemapLightingColorFormatsANDROID . إذا لم يضبط التطبيق درجة الدقة على إحدى درجات الدقة المتوافقة أو تنسيق الألوان على أحد تنسيقات الألوان المتوافقة، يجب أن يعرض وقت التشغيل XR_ERROR_FEATURE_UNSUPPORTED من xrCreateLightEstimatorANDROID .

الاستخدام الصالح (ضمني)

تقديرات الإضاءة في الخريطة المكعّبة

typedef struct XrCubemapLightingDataANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    uint32_t                       imageBufferSize;
    uint8_t*                       imageBufferRight;
    uint8_t*                       imageBufferLeft;
    uint8_t*                       imageBufferTop;
    uint8_t*                       imageBufferBottom;
    uint8_t*                       imageBufferFront;
    uint8_t*                       imageBufferBack;
    XrQuaternionf                  rotation;
    XrTime                         centerExposureTime;
} XrCubemapLightingDataANDROID;

أوصاف الأعضاء

  • ‫type هو XrStructureType لهذه البنية.
  • ‫next هو NULL أو مؤشر إلى البنية التالية في سلسلة البنى. البُنى الصالحة هي XrAmbientLightANDROID وXrSphericalHarmonicsANDROID وXrDirectionalLightANDROID .
  • ‫state هو XrLightEstimateStateANDROID الذي يمثّل حالة تقدير الإضاءة.
  • ‫imageBufferSize هو uint32_t يشير إلى حجم البايت لكل مخزن مؤقت لصور الوجوه في خريطة المكعب.
  • ‫imageBufferRight هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه الأيمن لخريطة المكعب.
  • ‫imageBufferLeft هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه الأيسر لخريطة المكعب.
  • ‫imageBufferTop هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه العلوي للخريطة المكعبة.
  • ‫imageBufferBottom هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه السفلي لخريطة المكعب.
  • ‫imageBufferFront هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه الأمامي لخريطة المكعب.
  • ‫imageBufferBack هو مخزن مؤقت من النوع uint8_t يحتوي على صورة الوجه الخلفي للخريطة المكعبة.
  • ‫rotation هو XrQuaternionf يشير إلى دوران خريطة المكعب.
  • ‫centerExposureTime هو XrTime يشير إلى وقت التقاط خريطة المكعب.

يمكن ربط هذه البنية بـ XrLightEstimateANDROID . يجب أن تملأ بيئة التشغيل هذه البنية في xrGetLightEstimateANDROID فقط إذا تم استخدام XrCubemapLightEstimatorCreateInfoANDROID لإنشاء مؤشر تقدير الإضاءة. يجب أن يخصّص التطبيق مقدار الذاكرة المناسب لمخازن الصور المؤقتة، والذي يعتمد على القيم المحدّدة في XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution وXrCubemapLightEstimatorCreateInfoANDROID :: colorFormat عند إنشاء مؤشر تقدير الإضاءة. يجب أن يضبط التطبيق XrCubemapLightingDataANDROID :: imageBufferSize على سعة كل مخزن مؤقت لصورة الوجه بالبايت. إذا كان التطبيق لا يستخدم ميزة تقدير الإضاءة في الخريطة المكعبة أو إذا لم يكن XrCubemapLightingDataANDROID :: imageBufferSize كبيرًا بما يكفي لكي يملأ وقت التشغيل مخازن الصور المؤقتة، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: state على XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID .

إذا ضبط التطبيق XrCubemapLightEstimatorCreateInfoANDROID :: reproject على XR_TRUE عند إنشاء مؤشر تقدير الإضاءة، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: rotation على تدوير الهوية والتأكّد من إعادة إسقاط خريطة المكعبات الداخلية التي تم تدويرها على وجوه خريطة مكعبات الهوية في المساحة الأساسية للتطبيق.

تخطيط خريطة الإضاءة المكعبة هو نفسه تخطيط خريطة OpenGL المكعبة، كما هو موضّح في الصورة التالية

تخطيط الخريطة المكعبة لتقدير الإضاءة في XR ANDROID

الشكل 31: تنسيق Cubemap

الاستخدام الصالح (ضمني)

  • يجب تفعيل الإضافة XR_ANDROID_light_estimation_cubemap قبل استخدام XrCubemapLightingDataANDROID
  • يجب أن يكون type XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID
  • next يجب أن تكون NULL أو مؤشرًا صالحًا إلى البنية التالية في سلسلة البنية
  • state يجب أن تكون قيمة XrLightEstimateStateANDROID صالحة
  • imageBufferRight يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • imageBufferLeft يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • imageBufferTop يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • imageBufferBottom يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • imageBufferFront يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • imageBufferBack يجب أن يكون مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن تكون المَعلمة imageBufferSize أكبر من 0

مثال على رمز تقدير الإضاءة

يوضّح الرمز البرمجي في المثال التالي كيفية الحصول على جميع كميات تقدير الإضاءة الممكنة من وقت التشغيل

XrSession session;  // Created at app startup
XrInstance instance; // Created at app startup
XrSpace appSpace;   // Created previously.
XrSystemId systemId; // Retrieved previously by xrGetSystem
PFN_xrCreateLightEstimatorANDROID xrCreateLightEstimatorANDROID; // Created previously.
PFN_xrDestroyLightEstimatorANDROID xrDestroyLightEstimatorANDROID; // Created previously.
PFN_xrGetLightEstimateANDROID xrGetLightEstimateANDROID; // Created previously.
PFN_xrEnumerateCubemapLightingResolutionsANDROID xrEnumerateCubemapLightingResolutionsANDROID; // Created previously.
PFN_xrEnumerateCubemapLightingColorFormatsANDROID xrEnumerateCubemapLightingColorFormatsANDROID; // Created previously.

XrSystemCubemapLightEstimationPropertiesANDROID props = {
  .type = XR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID};
XrSystemProperties base = {.type = XR_TYPE_SYSTEM_PROPERTIES,
                           .next = &props};
CHK_XR(xrGetSystemProperties(instance, systemId, &base));
if (!props.supportsCubemapLightEstimation) {
   // Cubemap light estimation is not supported
}

uint32_t cubemapResolution = 0;
std::vector<uint32_t> supportedCubemapResolutions;
uint32_t resolutionCount;
CHK_XR(xrEnumerateCubemapLightingResolutionsANDROID(
  instance, systemId, 0, &resolutionCount, nullptr));
supportedCubemapResolutions.resize(resolutionCount);
if (resolutionCount == 0) {
  // No cubemap lighting supported
} else {
  CHK_XR(xrEnumerateCubemapLightingResolutionsANDROID(
    instance, systemId, 0, &resolutionCount, supportedCubemapResolutions.data()));
  cubemapResolution = supportedCubemapResolutions[0];
}

uint32_t pixelCount = cubemapResolution * cubemapResolution;

XrCubemapLightingColorFormatANDROID colorFormat;
std::vector<XrCubemapLightingColorFormatANDROID> supportedColorFormats;
uint32_t colorFormatCount;
CHK_XR(xrEnumerateCubemapLightingColorFormatsANDROID(
  instance, systemId, 0, &colorFormatCount, nullptr));
supportedColorFormats.resize(colorFormatCount);
if (colorFormatCount == 0) {
  // No supported color formats for cubemap lighting. Cannot use cubemap
  // light estimation.
} else {
  CHK_XR(xrEnumerateCubemapLightingColorFormatsANDROID(
    instance, systemId, 0, &colorFormatCount, supportedColorFormats.data()));
  colorFormat = supportedColorFormats[0];
}

uint32_t pixelSize = 0;
switch (colorFormat) {
  case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID:
    pixelSize = 3 * sizeof(float);
    break;
  case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID:
    pixelSize = 4 * sizeof(float);
    break;
  case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID:
    pixelSize = 4 * sizeof(uint16_t);
    break;
  default:
    // Should not happen since the color format was validated previously.
    break;
}

uint32_t perFaceImageBufferSize = pixelCount * pixelSize;

XrLightEstimatorANDROID estimator;
XrCubemapLightEstimatorCreateInfoANDROID cubemapCreateInfo = {
    .type = XR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID,
    .cubemapResolution = cubemapResolution,
    .colorFormat = colorFormat,
    .reproject = XR_TRUE
};
XrLightEstimatorCreateInfoANDROID basicCreateInfo = {
    .type = XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID,
    .next = &cubemapCreateInfo};
CHK_XR(xrCreateLightEstimatorANDROID(session, &basicCreateInfo, &estimator));

std::vector<uint8_t> cubemapBuffer(perFaceImageBufferSize * 6); // 6 faces * perFaceImageBufferSize

// Every frame
XrTime updateTime;  // Time used for the current frame's simulation update.

XrLightEstimateGetInfoANDROID info = {
    .type = XR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID,
    .space = appSpace,
    .time = updateTime,
};

XrCubemapLightingDataANDROID cubemap = {
    .type = XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID,
    .next = nullptr,
    .imageBufferSize = perFaceImageBufferSize,
    .imageBufferRight = cubemapBuffer.data() + 0 * perFaceImageBufferSize,
    .imageBufferLeft = cubemapBuffer.data() + 1 * perFaceImageBufferSize,
    .imageBufferTop = cubemapBuffer.data() + 2 * perFaceImageBufferSize,
    .imageBufferBottom = cubemapBuffer.data() + 3 * perFaceImageBufferSize,
    .imageBufferFront = cubemapBuffer.data() + 4 * perFaceImageBufferSize,
    .imageBufferBack = cubemapBuffer.data() + 5 * perFaceImageBufferSize,
};

XrDirectionalLightANDROID directionalLight = {
    .type = XR_TYPE_DIRECTIONAL_LIGHT_ANDROID,
    .next = &cubemap,
};

XrSphericalHarmonicsANDROID totalSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .next = &directionalLight,
    .kind = XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID,
};

XrSphericalHarmonicsANDROID ambientSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .next = &totalSh,
    .kind = XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID,
};

XrAmbientLightANDROID ambientLight = {
    .type = XR_TYPE_AMBIENT_LIGHT_ANDROID,
    .next = &ambientSh,
};

XrLightEstimateANDROID estimate = {
    .type = XR_TYPE_LIGHT_ESTIMATE_ANDROID,
    .next = &ambientLight,
};

XrResult result = xrGetLightEstimateANDROID(estimator, &info, &estimate);
if (result == XR_SUCCESS &&
    estimate.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
  // use cubemap, directionalLight, totalSh, ambientSh, and
  // ambientLight if each struct has a valid state field

  if (cubemap.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
    // use cubemap
    if (cubemapCreateInfo.reproject == XR_TRUE) {
      XrQuaternionf identityQuaternion = {0.0f, 0.0f, 0.0f, 1.0f};
      assert(memcmp(&cubemap.rotation, &identityQuaternion, sizeof(XrQuaternionf)) == 0);
    }
  }
}

// When you want to disable light estimation
CHK_XR(xrDestroyLightEstimatorANDROID(estimator));

الأوامر الجديدة

منشآت جديدة

عمليات تعداد جديدة

ثوابت تعداد جديدة

  • XR_ANDROID_LIGHT_ESTIMATION_CUBEMAP_EXTENSION_NAME
  • XR_ANDROID_light_estimation_cubemap_SPEC_VERSION
  • توسيع XrStructureType :

    • XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID
    • XR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID
    • XR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID

المشاكل

سجلّ التعديلات

  • النسخة المنقحة 1، ‏05-12-2025 (سالار خان)

    • الوصف الأولي للإضافة