XR_ANDROID_light_estimation_cubemap
מחרוזת שם
XR_ANDROID_light_estimation_cubemap
סוג התוסף
הרחבת המכונה
מספר שלוחה רשום
722
Revision
1
סטטוס האישור
לא אושר
תלות בתוסף ובגרסה
XR_ANDROID_light_estimation
תאריך השינוי האחרון
2025-08-06
סטטוס כתובת ה-IP
לא ידוע על תלונות בנושא זכויות יוצרים שקשורות לכתובות IP.
שותפים ביצירת התוכן
סלאר חאן, Google
סקוט צ'אנג, Google
ג'ארד פינדר, Google
ספנסר קווין, Google
לבנה צ'ן, Google
ניחב ג'יין, Google
יורגן שטורם, 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, שמציין אם המערכת הנוכחית תומכת בהערכת אור של cubemap.
אפליקציה יכולה לבדוק אם המערכת יכולה לתמוך בהערכת אור של cubemap על ידי הרחבת XrSystemProperties עם מבנה XrSystemCubemapLightEstimationPropertiesANDROID כשקוראים ל-xrGetSystemProperties .
אם זמן הריצה מחזיר XR_FALSE עבור supportsCubemapLightEstimation ו-XrCubemapLightEstimatorCreateInfoANDROID שורשר אל XrLightEstimatorCreateInfoANDROID , זמן הריצה חייב להחזיר XR_ERROR_FEATURE_UNSUPPORTED מ-xrCreateLightEstimatorANDROID .
שימוש תקף (משתמע)
- צריך להפעיל את התוסף
XR_ANDROID_light_estimation_cubemapלפני שמשתמשים ב-XrSystemCubemapLightEstimationPropertiesANDROID -
typeחייב להיותXR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID -
nextחייב להיותNULLאו מצביע תקין אל המבנה הבא בשרשרת המבנים
קבלת רזולוציות נתמכות של cubemap
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 בפיקסלים. אידיום של 2 קריאות האפליקציה יכולה לבחור להשתמש באחת מהרזולוציות הנתמכות ב-XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution כשיוצרים את ה-handle של מעריך האור. האפליקציה חייבת להקצות את כמות הזיכרון המתאימה לחברי מאגר התמונות של XrCubemapLightingDataANDROID על סמך הרזולוציה שנבחרה ופורמט הצבע.
שימוש תקף (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_light_estimation_cubemapלפני הקריאה ל-xrEnumerateCubemapLightingResolutionsANDROID -
instanceחייב להיות ידית XrInstance תקינה -
resolutionCountOutputחייב להיות מצביע לערךuint32_t - אם
resolutionCapacityInputלא שווה ל-0,resolutionsחייב להיות מצביע למערך שלresolutionCapacityInputערכיuint32_t
קודי החזרה
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
קבלת פורמטים נתמכים של צבעים במפת קוביות
הספירה 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;
המשמעויות של ה-enums הן:
תיאור של טיפוס בן מנייה (enum)
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 שאוכלס על ידי זמן הריצה עם פורמטים נתמכים של צבעי cubemap.
ניב של 2 קריאות האפליקציה יכולה לבחור להשתמש באחד מפורמטי הצבע הנתמכים ב-XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat כשיוצרים את נקודת האחיזה של מעריך האור. האפליקציה חייבת להקצות את כמות הזיכרון המתאימה לחברי מאגר התמונות של XrCubemapLightingDataANDROID על סמך פורמט הצבע שנבחר.
שימוש תקף (משתמע)
- צריך להפעיל את התוסף
XR_ANDROID_light_estimation_cubemapלפני שמפעילים את xrEnumerateCubemapLightingColorFormatsANDROID -
instanceחייב להיות ידית XrInstance תקינה -
colorFormatCountOutputחייב להיות מצביע לערךuint32_t - אם
colorFormatCapacityInputלא שווה ל-0, colorFormatsחייב להיות מצביע למערך שלcolorFormatCapacityInputערכים מסוג XrCubemapLightingColorFormatANDROID
קודי החזרה
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_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 שמציין את פורמט הצבע של נתוני התאורה של המפה הקוביתית שבה רוצים להשתמש. -
reprojectהואXrBool32שמציין אם צריך לבצע הקרנה מחדש של התאורה של מפת הקוביות אל מרחב הבסיס של האפליקציה.
המבנה XrCubemapLightEstimatorCreateInfoANDROID מתאר את המידע ליצירת נקודת אחיזה XrLightEstimatorANDROID שיכולה לספק הערכות של תאורה במפת קוביות. חובה להגדיר את חבר cubemapResolution של XrCubemapLightEstimatorCreateInfoANDROID :: לאחת מהרזולוציות שמוחזרות על ידי xrEnumerateCubemapLightingResolutionsANDROID . חבר XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat חייב להיות מוגדר לאחד מפורמטי הצבע שמוחזרים על ידי xrEnumerateCubemapLightingColorFormatsANDROID . אם האפליקציה לא מגדירה את הרזולוציה לאחת מהרזולוציות הנתמכות או את פורמט הצבע לאחד מפורמטי הצבע הנתמכים, זמן הריצה חייב להחזיר XR_ERROR_FEATURE_UNSUPPORTED מ-xrCreateLightEstimatorANDROID .
שימוש תקף (משתמע)
- צריך להפעיל את התוסף
XR_ANDROID_light_estimation_cubemapלפני שמשתמשים ב-XrCubemapLightEstimatorCreateInfoANDROID -
typeחייב להיותXR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID -
nextחייב להיותNULLאו מצביע תקין אל המבנה הבא בשרשרת המבנים -
colorFormatחייב להיות ערך תקין של XrCubemapLightingColorFormatANDROID
הערכות של אור במיפוי קובייה
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 כשיוצרים את ה-handle של מעריך התאורה. באפליקציה חובה להגדיר את XrCubemapLightingDataANDROID :: imageBufferSize לקיבולת של כל מאגר תמונות של פנים בבייט. אם האפליקציה לא משתמשת בהערכת אור של cubemap או אם XrCubemapLightingDataANDROID :: imageBufferSize לא גדול מספיק כדי שהסביבה בזמן הריצה תאכלס את מאגרי התמונות, הסביבה בזמן הריצה חייבת להגדיר את XrCubemapLightingDataANDROID :: state ל-XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID .
אם האפליקציה מגדירה את XrCubemapLightEstimatorCreateInfoANDROID :: reproject ל-XR_TRUE כשיוצרים את נקודת האחיזה של מעריך האור, זמן הריצה חייב להגדיר את XrCubemapLightingDataANDROID :: rotation לסיבוב הזהות ולוודא שההיטל של מפת הקוביות הפנימית המסובבת מחושב מחדש על הפאות של מפת קוביות הזהות במרחב הבסיסי של האפליקציה.
פריסת המפה הקובייתית של התאורה זהה לפריסת המפה הקובייתית של OpenGL, כמו שמוצג בתמונה הבאה
איור 31. פריסת תמונת קובייה.
שימוש תקף (משתמע)
-
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));
פקודות חדשות
מבנים חדשים
הרחבה של XrLightEstimateANDROID :
הרחבה של XrLightEstimatorCreateInfoANDROID :
הרחבה של XrSystemProperties :
New Enums
New Enum Constants
XR_ANDROID_LIGHT_ESTIMATION_CUBEMAP_EXTENSION_NAMEXR_ANDROID_light_estimation_cubemap_SPEC_VERSIONהרחבה של XrStructureType :
XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROIDXR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID
בעיות
היסטוריית הגרסאות
גרסה 1, 2025-12-05 (סלאר חאן)
- תיאור ראשוני של התוסף