تخمین_نور_XR_ANDROID_cubemap

رشته نام

XR_ANDROID_light_estimation_cubemap

نوع افزونه

افزونه نمونه

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

۷۲۲

بازنگری

۱

وضعیت تصویب

تصویب نشده

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

XR_ANDROID_light_estimation

آخرین تاریخ اصلاح

۲۰۲۵-۰۸-۰۶

وضعیت آی‌پی

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

مشارکت‌کنندگان

سالار خان، گوگل
اسکات چانگ، گوگل
جارد فایندر، گوگل
اسپنسر کوئین، گوگل
لوانا چن، گوگل
نیهاو جین، گوگل
یورگن اشتورم، گوگل

نمای کلی

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

توجه داشته باشید

مکانیزم دریافت داده‌های تخمین نور مشابه افزونه‌ی پایه است، با این تفاوت که XrCubemapLightEstimatorCreateInfoANDROID هنگام ایجاد دسته‌ی تخمین نور، باید به XrLightEstimatorCreateInfoANDROID زنجیر شود.

بررسی قابلیت سیستم

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

توضیحات اعضا

  • type نوع XrStructureType این ساختار است.
  • next با NULL یا اشاره‌گری به ساختار بعدی در یک زنجیره ساختار است. چنین ساختارهایی در هسته OpenXR یا این افزونه تعریف نشده‌اند.
  • supportsCubemapLightEstimation یک XrBool32 است که نشان می‌دهد آیا سیستم فعلی از تخمین نور cubemap پشتیبانی می‌کند یا خیر.

یک برنامه می‌تواند با بسط XrSystemProperties با ساختار XrSystemCubemapLightEstimationPropertiesANDROID هنگام فراخوانی xrGetSystemProperties ، بررسی کند که آیا سیستم قادر به پشتیبانی از تخمین نور cubemap است یا خیر.

اگر زمان اجرا XR_FALSE برای supportsCubemapLightEstimation برگرداند و XrCubemapLightEstimatorCreateInfoANDROID به XrLightEstimatorCreateInfoANDROID زنجیر شده باشد، زمان اجرا باید XR_ERROR_FEATURE_UNSUPPORTED از xrCreateLightEstimatorANDROID برگرداند.

کاربرد معتبر (ضمنی)

دریافت رزولوشن‌های پشتیبانی‌شده در cubemap

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

توضیحات پارامتر

  • instance یک XrInstance است که قبلاً ایجاد شده است.
  • systemId همان XrSystemId است که قبلاً توسط xrGetSystem بازیابی شده و برای دریافت رزولوشن‌های پشتیبانی‌شده cubemap استفاده می‌شود.
  • resolutionCapacityInput یک uint32_t است که حداکثر تعداد عناصری را که می‌توانند در آرایه resolutions ذخیره شوند، نشان می‌دهد.
  • resolutionCountOutput یک اشاره‌گر به uint32_t است که توسط زمان اجرا تنظیم می‌شود و تعداد عناصر نوشته شده در آرایه resolutions توسط زمان اجرا را نشان می‌دهد.
  • resolutions is an array of uint32_t which is populated by the runtime with the supported cubemap resolutions.

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

enum ها معانی زیر را دارند:

توضیحات شمارشی

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 بازیابی شده و برای دریافت رزولوشن‌های پشتیبانی‌شده cubemap استفاده می‌شود.
  • colorFormatCapacityInput یک uint32_t است که حداکثر تعداد عناصری را که می‌توانند در آرایه colorFormats ذخیره شوند، نشان می‌دهد.
  • colorFormatCountOutput یک اشاره‌گر به uint32_t است که توسط زمان اجرا تنظیم می‌شود و تعداد عناصر نوشته شده در آرایه colorFormats توسط زمان اجرا را نشان می‌دهد.
  • colorFormats آرایه‌ای از XrCubemapLightingColorFormatANDROID است که توسط زمان اجرا با فرمت‌های رنگی cubemap پشتیبانی‌شده پر می‌شود.

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

ایجاد یک دسته تخمین‌گر نور cubemap

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

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

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

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

طرح‌بندی cubemap نورپردازی مشابه طرح‌بندی cubemap در OpenGL است، همانطور که در تصویر زیر نشان داده شده است.

طرح مکعبی تخمین نور XR اندروید

شکل ۲۴. طرح‌بندی نقشه مکعبی.

کاربرد معتبر (ضمنی)

  • افزونه‌ی XR_ANDROID_light_estimation_cubemap باید قبل از استفاده از XrCubemapLightingDataANDROID فعال باشد.
  • type باید XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID باشد.
  • next باید NULL یا یک اشاره‌گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد.
  • state باید یک مقدار معتبر XrLightEstimateStateANDROID باشد.
  • imageBufferRight باید یک اشاره‌گر به آرایه‌ای از مقادیر uint8_t imageBufferSize باشد.
  • imageBufferLeft باید یک اشاره‌گر به آرایه‌ای از مقادیر uint8_t imageBufferSize باشد.
  • imageBufferTop باید یک اشاره‌گر به آرایه‌ای از مقادیر uint8_t imageBufferSize باشد.
  • imageBufferBottom باید یک اشاره‌گر به آرایه‌ای از مقادیر uint8_t imageBufferSize باشد.
  • imageBufferFront باید یک اشاره‌گر به آرایه‌ای از مقادیر uint8_t imageBufferSize باشد.
  • imageBufferBack must be a pointer to an array of imageBufferSize uint8_t values
  • پارامتر 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));

دستورات جدید

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

Enum های جدید

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

  • 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

مسائل

تاریخچه نسخه

  • نسخه ۱، ۲۰۲۵-۱۲-۰۵ (سالار خان)

    • توضیحات اولیه افزونه