XR_ANDROID_light_estimation_cubemap

رشته نام

XR_ANDROID_light_estimation_cubemap

نوع افزونه

افزونه نمونه

شماره داخلی ثبت‌شده

722

بازبینی

1

وضعیت تصویب

تصویب‌نشده

وابستگی‌های افزونه و نسخه

XR_ANDROID_light_estimation

تاریخ آخرین تغییر

2025-08-06

وضعیت IP

هیچ ادعای مالکیت فکری شناخته‌شده‌ای وجود ندارد.

همیاران

Salar Khan،‏ Google
Scott Chung،‏ Google
Jared Finder،‏ Google
Spencer Quin،‏ Google
Levana Chen،‏ Google
Nihav Jain،‏ Google
Jürgen Sturm،‏ Google

نمای کلی

این افزونه براساس افزونه پایه XR_ANDROID_light_estimation ساخته شده است. این نسخه پشتیبانی از دریافت تخمین‌های نورپردازی cubemap را اضافه می‌کند که تخمین‌های دقیق‌تری درباره نورپردازی در محیط فیزیکی ارائه می‌دهد.

توجه

سازوکار دریافت داده‌های تخمین نور همانند افزونه پایه است، با این تفاوت که هنگام ایجاد دسته تخمین‌گر نور، 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 است که توسط زمان اجرا با وضوح‌های cubemap پشتیبانی‌شده پر می‌شود.

وضوح cubemap نشان‌دهنده عرض و ارتفاع هر وجه cubemap به پیکسل است. اصطلاح ۲-فراخوانی سپس برنامه می‌تواند هنگام ایجاد دسته تخمین‌زننده نور، یکی از وضوح‌های پشتیبانی‌شده در XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution را انتخاب کند. برنامه باید مقدار مناسبی از حافظه را برای اعضای میان‌گیر تصویر XrCubemapLightingDataANDROID براساس وضوح انتخاب‌شده و قالب رنگ اختصاص دهد.

استفاده معتبر (ضمنی)

  • افزونه XR_ANDROID_light_estimation_cubemap باید قبل‌از فراخوانی xrEnumerateCubemapLightingResolutionsANDROID فعال شود
  • instance باید شناسه XrInstance معتبری باشد
  • resolutionCountOutput باید اشاره‌گری به مقدار uint32_t باشد
  • اگر resolutionCapacityInput 0 نباشد، resolutions باید اشاره‌گری به آرایه‌ای از مقادیر resolutionCapacityInput uint32_t باشد

کدهای برگشتی

موفقیت‌آمیز بود

  • 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

دریافت قالب‌های رنگی cubemap پشتیبانی‌شده

شمارش XrCubemapLightingColorFormatANDROID قالب رنگ نورپردازی cubemap را برای استفاده به زمان اجرا شناسایی می‌کند.

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

قالب رنگی با ۳ کانال که هر کانال یک مقدار ممیز شناور ۳۲ بیتی است.

XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID

قالب رنگی با ۴ کانال که هر کانال یک مقدار ممیز شناور ۳۲ بیتی است.

XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID

قالب رنگی با ۴ کانال که هر کانال یک مقدار ممیز شناور ۱۶ بیتی است.

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 باشد

کدهای برگشتی

موفقیت‌آمیز بود

  • 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 است که وضوح نورپردازی cubemap را برای استفاده نشان می‌دهد.
  • ‫colorFormat یک XrCubemapLightingColorFormatANDROID است که قالب رنگ داده‌های نورپردازی cubemap را برای استفاده نشان می‌دهد.
  • reproject یک XrBool32 است که نشان می‌دهد آیا نورپردازی مکعب‌نگاشت باید به فضای پایه برنامه بازتابانده شود یا نه.

ساختار XrCubemapLightEstimatorCreateInfoANDROID اطلاعات لازم برای ایجاد دسته XrLightEstimatorANDROID را شرح می‌دهد تا بتواند تخمین‌های نورپردازی مکعب‌نگاشت را ارائه دهد. عضو XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution باید روی یکی از وضوح‌های برگردانده‌شده توسط xrEnumerateCubemapLightingResolutionsANDROID تنظیم شود. عضو XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat باید روی یکی از قالب‌های رنگی برگردانده‌شده توسط 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 است که تصویر وجه راست cubemap را دربردارد.
  • ‫imageBufferLeft یک میان‌گیر uint8_t است که حاوی تصویر وجه چپ نقشه مکعبی است.
  • imageBufferTop یک میان‌گیر uint8_t است که حاوی تصویر وجه بالایی cubemap است.
  • ‫imageBufferBottom یک میان‌گیر uint8_t است که تصویر وجه پایینی نگاشت مکعبی را دربرمی‌گیرد.
  • ‫imageBufferFront یک میان‌گیر uint8_t است که حاوی تصویر نمای جلویی نقشه مکعبی است.
  • imageBufferBack یک میان‌گیر uint8_t است که حاوی تصویر وجه پشتی نگاشت مکعبی است.
  • ‫rotation یک XrQuaternionf است که چرخش cubemap را نشان می‌دهد.
  • centerExposureTime یک XrTime است که زمان ضبط نقشه مکعبی را نشان می‌دهد.

این ساختار می‌تواند به XrLightEstimateANDROID زنجیر شود. اگر از XrCubemapLightEstimatorCreateInfoANDROID برای ایجاد دسته تخمین‌زننده نور استفاده شده باشد، زمان اجرا باید فقط این ساختار را در xrGetLightEstimateANDROID پر کند. برنامه باید مقدار مناسبی از حافظه را برای میان‌گیرهای تصویر اختصاص دهد که به مقادیر تنظیم‌شده در XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution و XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat هنگام ایجاد دسته تخمین‌گر نور بستگی دارد. برنامه باید XrCubemapLightingDataANDROID :: imageBufferSize را روی ظرفیت هر میان‌گیر تصویر وجه برحسب بایت تنظیم کند. اگر برنامه از تخمین نور cubemap استفاده نمی‌کند یا اگر XrCubemapLightingDataANDROID :: imageBufferSize برای زمان اجرا به‌اندازه کافی بزرگ نیست تا میان‌گیرهای تصویر را پر کند، زمان اجرا باید XrCubemapLightingDataANDROID :: state را روی XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID تنظیم کند.

اگر برنامه XrCubemapLightEstimatorCreateInfoANDROID :: reproject را روی XR_TRUE تنظیم کند، هنگام ایجاد دسته تخمین‌زننده نور، زمان اجرا باید XrCubemapLightingDataANDROID :: rotation را روی چرخش هویت تنظیم کند و مطمئن شود که مکعب‌نگاشت چرخانده‌شده داخلی دوباره روی وجوه مکعب‌نگاشت هویت در فضای پایه برنامه بازتابانده می‌شود.

چیدمان نقشه مکعبی نورپردازی همانند چیدمان نقشه مکعبی OpenGL است، همان‌طور که در تصویر زیر نشان داده شده است

چیدمان مکعب‌نگاشت تخمین نور واقعیت گسترده ANDROID

شکل ۳۱. چیدمان نگاشت مکعبی.

استفاده معتبر (ضمنی)

  • افزونه 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));

فرمان‌های جدید

سازه‌های جدید

Enums جدید

ثابت‌های شمارشی جدید

  • 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

مشکلات

سابقه نسخه

  • بازبینی ۱، ۲۰۲۵-۱۲-۰۵ (سالار خان)

    • شرح اولیه افزونه