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 .
الاستخدام الصالح (ضمني)
- يجب تفعيل الإضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrSystemCubemapLightEstimationPropertiesANDROID - يجب أن يكون
typeXR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID -
nextيجب أن تكونNULLأو مؤشرًا صالحًا إلى البنية التالية في سلسلة البنية
جارٍ الحصول على درجات دقة الخريطة المكعبة المتوافقة
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مؤشرًا إلى مصفوفة من قيمresolutionCapacityInputuint32_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 لوقت التشغيل تنسيق لون إضاءة الخريطة المكعبة الذي يجب استخدامه.
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يجب أن تكون مؤشرًا لمصفوفة من قيمcolorFormatCapacityInputXrCubemapLightingColorFormatANDROID
رموز الإرجاع
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_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 .
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrCubemapLightEstimatorCreateInfoANDROID - يجب أن يكون
typeXR_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 عند إنشاء مؤشر تقدير الإضاءة. يجب أن يضبط التطبيق XrCubemapLightingDataANDROID :: imageBufferSize على سعة كل مخزن مؤقت لصورة الوجه بالبايت. إذا كان التطبيق لا يستخدم ميزة تقدير الإضاءة في الخريطة المكعبة أو إذا لم يكن XrCubemapLightingDataANDROID :: imageBufferSize كبيرًا بما يكفي لكي يملأ وقت التشغيل مخازن الصور المؤقتة، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: state على XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID .
إذا ضبط التطبيق XrCubemapLightEstimatorCreateInfoANDROID :: reproject على XR_TRUE عند إنشاء مؤشر تقدير الإضاءة، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: rotation على تدوير الهوية والتأكّد من إعادة إسقاط خريطة المكعبات الداخلية التي تم تدويرها على وجوه خريطة مكعبات الهوية في المساحة الأساسية للتطبيق.
تخطيط خريطة الإضاءة المكعبة هو نفسه تخطيط خريطة OpenGL المكعبة، كما هو موضّح في الصورة التالية
الشكل 31: تنسيق Cubemap
الاستخدام الصالح (ضمني)
- يجب تفعيل الإضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrCubemapLightingDataANDROID - يجب أن يكون
typeXR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID -
nextيجب أن تكونNULLأو مؤشرًا صالحًا إلى البنية التالية في سلسلة البنية -
stateيجب أن تكون قيمة XrLightEstimateStateANDROID صالحة -
imageBufferRightيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t -
imageBufferLeftيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t -
imageBufferTopيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t -
imageBufferBottomيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t -
imageBufferFrontيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t -
imageBufferBackيجب أن يكون مؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_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 :
توسيع XrSystemProperties :
عمليات تعداد جديدة
ثوابت تعداد جديدة
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، 05-12-2025 (سالار خان)
- الوصف الأولي للإضافة