XR_ANDROID_light_estimation
Name String
XR_ANDROID_light_estimation
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
701
बदलाव
1
पुष्टि की स्थिति
पुष्टि नहीं की गई
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव किए जाने की तारीख
2025-03-13
आईपी स्टेटस
आईपी से जुड़े किसी भी दावे की जानकारी नहीं है.
योगदान देने वाले
जेरेड फ़ाइंडर, Google
केर्न ओवरटर्फ़, Google
स्पेंसर क्विन, Google
लेवाना चेन, Google
निहाव जैन, Google
सलार ख़ान, Google
स्कॉट चुंग, Google
खास जानकारी
इस एक्सटेंशन की मदद से ऐप्लिकेशन, हेडसेट के आस-पास के माहौल की रोशनी के डेटा का अनुरोध कर सकता है. ऐप्लिकेशन इस जानकारी का इस्तेमाल करके, वर्चुअल ऑब्जेक्ट को उसी तरह से रौशनी दे सकता है जिस तरह से उन्हें असल दुनिया के सीन में रखा गया है.
अनुमतियां
Android ऐप्लिकेशन के मेनिफ़ेस्ट में, android.permission.SCENE_UNDERSTANDING_COARSE अनुमति का होना ज़रूरी है. ऐसा इसलिए, क्योंकि यह एक्सटेंशन, एनवायरमेंट की लाइटिंग की जानकारी दिखाता है. android.permission.SCENE_UNDERSTANDING_COARSE अनुमति को खतरनाक अनुमति माना जाता है. इन फ़ंक्शन का इस्तेमाल करने के लिए, ऐप्लिकेशन को रनटाइम के दौरान अनुमति का अनुरोध ज़रूर करना चाहिए:
(सुरक्षा का लेवल: खतरनाक)
सिस्टम की क्षमता की जांच करना
XrSystemLightEstimationPropertiesANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrSystemLightEstimationPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsLightEstimation;
} XrSystemLightEstimationPropertiesANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.supportsLightEstimationएकXrBool32है. इससे पता चलता है कि मौजूदा सिस्टम , रोशनी का अनुमान लगाने की सुविधा के साथ काम करता है या नहीं.
कोई ऐप्लिकेशन, xrGetSystemProperties को कॉल करते समय, XrSystemProperties को XrSystemLightEstimationPropertiesANDROID स्ट्रक्चर के साथ बढ़ाकर, यह देख सकता है कि सिस्टम में रोशनी का अनुमान लगाने की सुविधा काम करती है या नहीं .
अगर कोई रनटाइम, supportsLightEstimation के लिए XR_FALSE दिखाता है, तो रनटाइम को xrCreateLightEstimatorANDROID से XR_ERROR_FEATURE_UNSUPPORTED दिखाना ज़रूरी है .
मान्य इस्तेमाल (इंप्लिसिट)
- XrSystemLightEstimationPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_SYSTEM_LIGHT_ESTIMATION_PROPERTIES_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
लाइट का अनुमान लगाने वाला हैंडल बनाना
XR_DEFINE_HANDLE(XrLightEstimatorANDROID)
रोशनी का अनुमान लगाने से जुड़ा डेटा, रनटाइम के ज़रिए जनरेट किया जाता है. इसे XrLightEstimatorANDROID हैंडल का इस्तेमाल करके, ऐप्लिकेशन के साथ शेयर किया जाता है.
इस हैंडल का इस्तेमाल करके, इस एक्सटेंशन के अन्य फ़ंक्शन का इस्तेमाल करके, रोशनी का अनुमान लगाने से जुड़ी जानकारी को ऐक्सेस किया जा सकता है.
xrCreateLightEstimatorANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrCreateLightEstimatorANDROID(
XrSession session,
XrLightEstimatorCreateInfoANDROID* createInfo,
XrLightEstimatorANDROID* outHandle);
पैरामीटर की जानकारी
session, XrSession है, जो लाइट एस्टिमेटर बनाता है.createInfo, XrLightEstimatorCreateInfoANDROID स्ट्रक्चर का पॉइंटर है. इसमें लाइट एस्टिमेटर बनाने के लिए इस्तेमाल किए जाने वाले पैरामीटर शामिल होते हैं.outHandleएक ऐसे हैंडल का पॉइंटर है जिसमें बनाया गया XrLightEstimatorANDROID ऑब्जेक्ट दिखता है.
ऐप्लिकेशन, लाइट एस्टिमेटर बनाने के लिए xrCreateLightEstimatorANDROID फ़ंक्शन का इस्तेमाल करता है.
- अगर सिस्टम में रोशनी का अनुमान लगाने की सुविधा काम नहीं करती है, तो रनटाइम को
XR_ERROR_FEATURE_UNSUPPORTEDवैल्यू ज़रूर दिखानी चाहिए. - अगर कॉल करने वाले ऐप्लिकेशन को ज़रूरी अनुमतियां नहीं दी गई हैं, तो रनटाइम को
XR_ERROR_PERMISSION_INSUFFICIENTवैल्यू ज़रूर दिखानी चाहिए.
अगर कोई ऐप्लिकेशन, रनटाइम को यह बताना चाहता है कि उसने रोशनी का अनुमान लगाने वाले डेटा का ऐक्सेस पूरा कर लिया है, तो उसे xrDestroyLightEstimatorANDROID के ज़रिए हैंडल को मिटाना होगा .
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreateLightEstimatorANDROID को कॉल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
session, XrSession का एक मान्य हैंडल होना चाहिए -
createInfoको XrLightEstimatorCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए -
outHandle, XrLightEstimatorANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_PERMISSION_INSUFFICIENTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOST
XrLightEstimatorCreateInfoANDROID स्ट्रक्चर, XrLightEstimatorANDROID हैंडल बनाने के लिए ज़रूरी जानकारी के बारे में बताता है.
typedef struct XrLightEstimatorCreateInfoANDROID {
XrStructureType type;
const void* next;
} XrLightEstimatorCreateInfoANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrLightEstimatorCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDहोना चाहिए -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: XrCubemapLightEstimatorCreateInfoANDROID , XrPointLightsEstimatorCreateInfoANDROIDX1
xrDestroyLightEstimatorANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrDestroyLightEstimatorANDROID(
XrLightEstimatorANDROID estimator);
पैरामीटर की जानकारी
estimatorएक XrLightEstimatorANDROID है, जिसे पहले xrCreateLightEstimatorANDROID ने बनाया था .
xrDestroyLightEstimatorANDROID फ़ंक्शन, estimator और इससे जुड़े सभी संसाधनों को रिलीज़ करता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyLightEstimatorANDROID को कॉल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
estimator, XrLightEstimatorANDROID का एक मान्य हैंडल होना चाहिए
थ्रेड सेफ़्टी
estimatorऔर बच्चों के सभी हैंडल को बाहरी तौर पर सिंक किया जाना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
रोशनी का अनुमान लगाने से जुड़ा डेटा ऐक्सेस करना
xrGetLightEstimateANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrGetLightEstimateANDROID(
XrLightEstimatorANDROID estimator,
const XrLightEstimateGetInfoANDROID* input,
XrLightEstimateANDROID* output);
पैरामीटर की जानकारी
estimator, XrLightEstimatorANDROID का हैंडल है. इसे पहले xrCreateLightEstimatorANDROID की मदद से बनाया गया था.input, XrLightEstimateGetInfoANDROID स्ट्रक्चर का पॉइंटर है.output, XrLightEstimateANDROID स्ट्रक्चर का पॉइंटर है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetLightEstimateANDROID को कॉल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
estimator, XrLightEstimatorANDROID का एक मान्य हैंडल होना चाहिए -
inputmust be a pointer to a valid XrLightEstimateGetInfoANDROID structure -
outputmust be a pointer to an XrLightEstimateANDROID structure
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
XrLightEstimateGetInfoANDROID स्ट्रक्चर को इस तरह से परिभाषित किया गया है:
typedef struct XrLightEstimateGetInfoANDROID {
XrStructureType type;
const void* next;
XrSpace space;
XrTime time;
} XrLightEstimateGetInfoANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.space, XrSpace है. यह उस रेफ़रंस स्पेस को तय करता है जिसमें रोशनी की दिशा और स्फ़ेरिकल हार्मोनिक्स को दिखाया जाता है.time,XrTimeहै. इससे पता चलता है कि ऐप्लिकेशन को रोशनी का अनुमान लगाने के लिए किस समय क्वेरी करनी है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrLightEstimateGetInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
spaceमान्य XrSpace हैंडल होना चाहिए
XrLightEstimateANDROID स्ट्रक्चर में, रोशनी के अनुमान का डेटा शामिल होता है:
typedef struct XrLightEstimateANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrTime lastUpdatedTime;
} XrLightEstimateANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. मान्य स्ट्रक्चर में XrAmbientLightANDROID , XrSphericalHarmonicsANDROID और XrDirectionalLightANDROID शामिल हैं .state, XrLightEstimateStateANDROID है. यह रोशनी के अनुमान की स्थिति को दिखाता है.lastUpdatedTimeवहXrTimeहै जिससे पता चलता है कि अनुमान का हिसाब पिछली बार कब लगाया गया था.
अगर हर लाइट एस्टिमेट स्ट्रक्ट के लिए state फ़ील्ड की वैल्यू XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID है, तो स्ट्रक्ट के अन्य सभी फ़ील्ड की वैल्यू मनमुताबिक होती है. इसका मतलब है कि उनकी वैल्यू तय नहीं होती.
एम्बिएंट लाइट, स्फ़ेरिकल हार्मोनिक्स, और प्राइमरी डायरेक्शनल लाइट के लिए, लाइट का अनुमान लगाने से जुड़ी जानकारी पाने के लिए ऐप्लिकेशन, इन स्ट्रक्चर के इंस्टेंस को चेन कर सकते हैं: XrAmbientLightANDROID , XrSphericalHarmonicsANDROID, और XrDirectionalLightANDROID. ऐसा XrLightEstimateANDROID :: next के लिए किया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrLightEstimateANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_LIGHT_ESTIMATE_ANDROIDहोना चाहिए -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: XrAmbientLightANDROID , XrCubemapLightingDataANDROID , XrDirectionalLightANDROID , XrPointLightsANDROIDX1 , XrSphericalHarmonicsANDROID -
state, XrLightEstimateStateANDROID की मान्य वैल्यू होनी चाहिए
XrAmbientLightANDROID स्ट्रक्चर में, सीन में मौजूद आस-पास की रोशनी का अनुमान लगाने से जुड़ा डेटा होता है.
typedef struct XrAmbientLightANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrVector3f intensity;
XrVector3f colorCorrection;
} XrAmbientLightANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. मान्य स्ट्रक्चर में XrSphericalHarmonicsANDROID और XrDirectionalLightANDROID शामिल हैं .state, XrLightEstimateStateANDROID है. यह रोशनी के अनुमान की स्थिति को दिखाता है.intensityएक XrVector3f है, जो कमरे में मौजूद रोशनी की इंटेंसिटी को दिखाता है. वेक्टर का हर कॉम्पोनेंट, लाल, हरे, और नीले चैनल से जुड़ा होता है.colorCorrection, गामा स्पेस में वैल्यू वाला XrVector3f है. अगर गामा कलर स्पेस में रेंडर किया जा रहा है, तो रेंडरिंग के बाद कैलकुलेट किए गए फ़ाइनल कलर के साथ, उन्हें कॉम्पोनेंट के हिसाब से गुणा करें. अगर लीनियर स्पेस में रेंडर किया जा रहा है, तो सबसे पहले वैल्यू को 2.2 की पावर में बढ़ाकर लीनियर स्पेस में बदलें. इसके बाद, रेंडरिंग के बाद कैलकुलेट किए गए फ़ाइनल कलर से हर कॉम्पोनेंट को गुणा करें.The purpose of pname:colorCorrection is to make a scene appear natural and blend with the real world.
मान्य इस्तेमाल (इंप्लिसिट)
- XrAmbientLightANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_AMBIENT_LIGHT_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
state, XrLightEstimateStateANDROID की मान्य वैल्यू होनी चाहिए
XrSphericalHarmonicsANDROID स्ट्रक्चर में, स्फ़ेरिकल हार्मोनिक शामिल होते हैं. ये सीन की लाइटिंग को दिखाते हैं.
typedef struct XrSphericalHarmonicsANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrSphericalHarmonicsKindANDROID kind;
float coefficients[9][3];
} XrSphericalHarmonicsANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. मान्य स्ट्रक्चर में XrAmbientLightANDROID और XrDirectionalLightANDROID शामिल हैं .state, XrLightEstimateStateANDROID है. यह रोशनी के अनुमान की स्थिति को दिखाता है.kind, ऐप्लिकेशन के अनुरोध किया गया XrSphericalHarmonicsKindANDROID है.coefficients, 9 लाइनों और 3 कॉलम वाला दो डाइमेंशन वालाfloatअरे है. ये तीन कॉलम, लाल, हरे, और नीले रंग के चैनलों से जुड़े हैं. हर चैनल में नौ स्फ़ेरिकल हार्मोनिक कोएफ़िशिएंट होते हैं.
coefficients का इस्तेमाल एक खास फ़ंक्शन में किया जाता है. यह फ़ंक्शन, दिशा को इनपुट के तौर पर लेता है और उस दिशा से आने वाले हल्के रंग को आउटपुट के तौर पर दिखाता है. ज़्यादा जानकारी के लिए, यह पेपर पढ़ें .
मान्य इस्तेमाल (इंप्लिसिट)
- XrSphericalHarmonicsANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_SPHERICAL_HARMONICS_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
state, XrLightEstimateStateANDROID की मान्य वैल्यू होनी चाहिए -
kind, XrSphericalHarmonicsKindANDROID की मान्य वैल्यू होनी चाहिए
XrSphericalHarmonicsKindANDROID इन्यूमरेशन से रनटाइम को पता चलता है कि ऐप्लिकेशन किस तरह के स्फ़ेरिकल हार्मोनिक्स का अनुरोध कर रहा है.
typedef enum XrSphericalHarmonicsKindANDROID {
XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID = 0,
XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID = 1,
XR_SPHERICAL_HARMONICS_KIND_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSphericalHarmonicsKindANDROID;
गिनती की गई वैल्यू का मतलब यहां दिया गया है:
Enum की जानकारी
XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID
स्फ़ेरिकल हार्मोनिक कोएफ़िशिएंट, एनवायरमेंट लाइट रेडियंस फ़ंक्शन को दिखाते हैं. इसमें मुख्य लाइट का योगदान शामिल नहीं होता.
XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID
स्फ़ेरिकल हार्मोनिक कोएफ़िशिएंट, एनवायरमेंट लाइट रेडियंस फ़ंक्शन को दिखाते हैं. इनमें मुख्य लाइट का योगदान भी शामिल होता है.
XrDirectionalLightANDROID स्ट्रक्चर में, रोशनी का अनुमान लगाने से जुड़ा डेटा होता है.
typedef struct XrDirectionalLightANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrVector3f intensity;
XrVector3f direction;
} XrDirectionalLightANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. मान्य स्ट्रक्चर में XrAmbientLightANDROID , XrSphericalHarmonicsANDROID और XrDirectionalLightANDROID शामिल हैं .state, XrLightEstimateStateANDROID है. यह रोशनी के अनुमान की स्थिति को दिखाता है.intensityएक XrVector3f है, जो दिशात्मक रोशनी की तीव्रता को दिखाता है. वेक्टर का हर कॉम्पोनेंट, लाल, हरे, और नीले चैनल से मेल खाता है.direction, XrVector3f है. यह रोशनी की दिशा दिखाता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrDirectionalLightANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_light_estimationएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_DIRECTIONAL_LIGHT_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
state, XrLightEstimateStateANDROID की मान्य वैल्यू होनी चाहिए
XrLightEstimateStateANDROID इन्यूमरेशन, रनटाइम से मिली रोशनी के अनुमान की स्थिति दिखाता है.
typedef enum XrLightEstimateStateANDROID {
XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID = 0,
XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID = 1,
XR_LIGHT_ESTIMATE_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrLightEstimateStateANDROID;
गिनती की गई वैल्यू का मतलब यहां दिया गया है:
Enum की जानकारी
XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID
रोशनी का अनुमान मान्य है
XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID
रोशनी का अनुमान अमान्य है
रोशनी का अनुमान लगाने के लिए कोड का उदाहरण
यहां दिए गए उदाहरण कोड में, रनटाइम से रोशनी का अनुमान लगाने से जुड़ी सभी संभावित वैल्यू पाने का तरीका बताया गया है
XrSession session; // Created at app startup
XrSpace appSpace; // Created previously.
PFN_xrCreateLightEstimatorANDROID xrCreateLightEstimatorANDROID; // Created previously.
PFN_xrDestroyLightEstimatorANDROID xrDestroyLightEstimatorANDROID; // Created previously.
PFN_xrGetLightEstimateANDROID xrGetLightEstimateANDROID; // Created previously.
XrLightEstimatorANDROID estimator;
XrLightEstimatorCreateInfoANDROID createInfo = {
.type = XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID};
CHK_XR(xrCreateLightEstimatorANDROID(session, &createInfo, &estimator));
// 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,
};
XrDirectionalLightANDROID directionalLight = {
.type = XR_TYPE_DIRECTIONAL_LIGHT_ANDROID,
};
XrSphericalHarmonicsANDROID sphericalHarmonics = {
.type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
.next = &directionalLight,
};
// Querying both TOTAL or AMBIENT spherical harmonics in one call will result in an error because chaining two structs with the same type is not allowed
bool useTotalSH;
if (useTotalSH) {
sphericalHarmonics.kind = XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID;
} else {
sphericalHarmonics.kind = XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID;
}
XrAmbientLightANDROID ambientLight = {
.type = XR_TYPE_AMBIENT_LIGHT_ANDROID,
.next = &sphericalHarmonics,
};
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 directionalLight, totalSh, ambientSh, ambientLight if each
// struct has a valid state field
}
// When you want to disable light estimation
CHK_XR(xrDestroyLightEstimatorANDROID(estimator));
नए ऑब्जेक्ट टाइप
नए निर्देश
नई संरचनाएं
- XrLightEstimateANDROID
- XrLightEstimateGetInfoANDROID
- XrLightEstimatorCreateInfoANDROID
XrLightEstimateANDROID को बढ़ाना :
XrSystemProperties को बढ़ाना :
नए एनम
नए Enum कॉन्स्टेंट
XR_ANDROID_LIGHT_ESTIMATION_EXTENSION_NAMEXR_ANDROID_light_estimation_SPEC_VERSIONXrObjectType को बढ़ाना :
XR_OBJECT_TYPE_LIGHT_ESTIMATOR_ANDROID
XrStructureType को बढ़ाना :
XR_TYPE_AMBIENT_LIGHT_ANDROIDXR_TYPE_DIRECTIONAL_LIGHT_ANDROIDXR_TYPE_LIGHT_ESTIMATE_ANDROIDXR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROIDXR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDXR_TYPE_SPHERICAL_HARMONICS_ANDROIDXR_TYPE_SYSTEM_LIGHT_ESTIMATION_PROPERTIES_ANDROID
समस्याएं
वर्शन इतिहास
पहला संशोधन, 16-09-2024 (कैर्न ओवरटर्फ़)
- एक्सटेंशन की शुरुआती जानकारी