Name String
XR_ANDROID_light_estimation
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียน
701
การแก้ไข
1
การขึ้นต่อกันของส่วนขยายและเวอร์ชัน
วันที่แก้ไขล่าสุด
2025-01-17
สถานะ IP
ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ
ผู้เขียน
Jared Finder, Google
Cairn Overturf, Google
Spencer Quin, Google
Levana Chen, Google
Nihav Jain, Google
Salar Khan, Google
Scott Chung, Google
ภาพรวม
ส่วนขยายนี้ช่วยให้แอปพลิเคชันขอข้อมูลที่แสดงถึงแสงสว่าง ของสภาพแวดล้อมจริงรอบๆ ชุดหูฟังได้ ข้อมูลนี้สามารถใช้ได้ เมื่อแสดงผลออบเจ็กต์เสมือนเพื่อส่องสว่างภายใต้เงื่อนไขเดียวกันกับ ฉากที่วางออบเจ็กต์
ตรวจสอบความสามารถของระบบ
แอปพลิเคชันสามารถตรวจสอบว่าระบบรองรับการประมาณแสงหรือไม่โดย เชื่อมต่อโครงสร้าง XrSystemLightEstimationPropertiesANDROID กับ XrSystemProperties เมื่อเรียกใช้ xrGetSystemProperties
typedef struct XrSystemLightEstimationPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsLightEstimation;
} XrSystemLightEstimationPropertiesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ไม่มี โครงสร้างดังกล่าวที่กำหนดไว้ใน OpenXR หลักหรือส่วนขยายนี้supportsLightEstimationคือXrBool32ที่ระบุว่าระบบปัจจุบันรองรับการประมาณค่าแสงหรือไม่
แอปพลิเคชันสามารถตรวจสอบว่าระบบรองรับการประมาณแสงหรือไม่โดยขยาย XrSystemProperties ด้วยโครงสร้าง XrSystemLightEstimationPropertiesANDROID เมื่อเรียกใช้ xrGetSystemProperties
หากระบบไม่รองรับการประมาณแสง ระบบจะแสดง
XR_FALSE สำหรับ supportsLightEstimation และ XR_ERROR_FEATURE_UNSUPPORTED
จาก xrCreateLightEstimatorANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย XR_ANDROID_light_estimation ก่อน ใช้ XrSystemLightEstimationPropertiesANDROID
 typeต้องเป็นXR_TYPE_SYSTEM_LIGHT_ESTIMATION_PROPERTIES_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้าง
สร้างแฮนเดิลเครื่องมือประมาณแสง
XR_DEFINE_HANDLE(XrLightEstimatorANDROID)
แฮนเดิล XrLightEstimatorANDROID แสดงถึงเครื่องมือประมาณค่าแสง คุณใช้แฮนเดิลนี้เพื่อเข้าถึงข้อมูลการประมาณแสงโดยใช้ฟังก์ชันอื่นๆ ในส่วนขยายนี้ได้
ฟังก์ชัน xrCreateLightEstimatorANDROID มีคำจำกัดความดังนี้
XrResult xrCreateLightEstimatorANDROID(
    XrSession                                   session,
    XrLightEstimatorCreateInfoANDROID*          createInfo,
    XrLightEstimatorANDROID*                    outHandle);
คำอธิบายพารามิเตอร์
sessionคือ XrSession ที่สร้างเครื่องมือประมาณแสงcreateInfoคือตัวชี้ไปยังโครงสร้าง XrLightEstimatorCreateInfoANDROID ซึ่งมีพารามิเตอร์ที่จะใช้สร้างเครื่องมือประมาณแสงoutHandleเป็นตัวชี้ไปยังแฮนเดิลที่ระบบส่ง XrLightEstimatorANDROID ที่สร้างขึ้น
แอปพลิเคชันสามารถใช้ฟังก์ชัน xrCreateLightEstimatorANDROID เพื่อ สร้างตัวประมาณแสง
- xrCreateLightEstimatorANDROID จะแสดงผล 
XR_ERROR_FEATURE_UNSUPPORTEDหากระบบไม่รองรับการประมาณค่าแสง - xrCreateLightEstimatorANDROID จะแสดง
XR_ERROR_PERMISSION_INSUFFICIENTหากไม่ได้ให้สิทธิ์ที่จำเป็นแก่แอปพลิเคชันที่เรียกใช้ 
จากนั้นคุณอาจใช้แฮนเดิลเครื่องมือประมาณแสงที่ส่งคืนในการเรียก API ได้ หากแอปพลิเคชันต้องการระบุต่อรันไทม์ว่าเข้าถึงข้อมูลการประมาณแสงเสร็จแล้ว ต้องทำลายแฮนเดิลโดยใช้ xrDestroyLightEstimatorANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนเรียกใช้ xrCreateLightEstimatorANDROID sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้องcreateInfoต้องเป็นพอยน์เตอร์ไปยังโครงสร้าง XrLightEstimatorCreateInfoANDROIDoutHandleต้องเป็นตัวชี้ไปยังแฮนเดิล XrLightEstimatorANDROID
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_HANDLE_INVALIDXR_ERROR_LIMIT_REACHED
โครงสร้าง XrLightEstimatorCreateInfoANDROID อธิบายข้อมูล เพื่อสร้างแฮนเดิล XrLightEstimatorANDROID
typedef struct XrLightEstimatorCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrLightEstimatorCreateInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ไม่มี โครงสร้างดังกล่าวที่กำหนดไว้ใน OpenXR หลักหรือส่วนขยายนี้
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrLightEstimatorCreateInfoANDROID typeต้องเป็นXR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้าง
ฟังก์ชัน xrDestroyLightEstimatorANDROID จะปล่อย estimator และทรัพยากรพื้นฐาน
 
XrResult xrDestroyLightEstimatorANDROID(
    XrLightEstimatorANDROID                     estimator);
คำอธิบายพารามิเตอร์
estimatorคือ XrLightEstimatorANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateLightEstimatorANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนเรียกใช้ xrDestroyLightEstimatorANDROID estimatorต้องเป็นแฮนเดิล XrLightEstimatorANDROID ที่ถูกต้อง
ความปลอดภัยของเธรด
- การเข้าถึง 
estimatorและแฮนเดิลย่อยทั้งหมดต้องซิงค์ภายนอก 
รหัสการคืนสินค้า
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
เข้าถึงข้อมูลการประมาณแสง
ฟังก์ชัน xrGetLightEstimateANDROID มีคำจำกัดความดังนี้
XrResult xrGetLightEstimateANDROID(
    XrLightEstimatorANDROID                     estimator,
    const XrLightEstimateGetInfoANDROID*        input,
    XrLightEstimateANDROID*                     output);
คำอธิบายพารามิเตอร์
estimator: แฮนเดิลของ XrLightEstimatorANDROID ที่สร้างไว้ก่อนหน้า ด้วยxrCreateLightEstimatorANDROIDinput: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateGetInfoANDROIDoutput: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนเรียกใช้ xrGetLightEstimateANDROID estimatorต้องเป็นแฮนเดิล XrLightEstimatorANDROID ที่ถูกต้องinputต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateGetInfoANDROID ที่ถูกต้องoutputต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateANDROID
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_TIME_INVALID
XrLightEstimateGetInfoANDROID อธิบายข้อมูลที่จำเป็นในการรับข้อมูลการประมาณค่าแสง
typedef struct XrLightEstimateGetInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrSpace            space;
    XrTime             time;
} XrLightEstimateGetInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้างspaceคือ XrSpace ที่กำหนดพื้นที่อ้างอิงซึ่ง แสดงทิศทางแสงที่ส่งคืน ฮาร์มอนิกทรงกลม และการหมุนคิวบ์แมปtimeคือXrTimeที่อธิบายเวลาที่แอปพลิเคชัน ต้องการค้นหาการประมาณแสง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrLightEstimateGetInfoANDROID typeต้องเป็นXR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้างspaceต้องเป็นแฮนเดิล XrSpace ที่ถูกต้อง
โครงสร้าง XrLightEstimateANDROID มีข้อมูลการประมาณแสง
typedef struct XrLightEstimateANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrTime                         lastUpdatedTime;
} XrLightEstimateANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ใช้ได้คือ XrAmbientLightANDROID, XrSphericalHarmonicsANDROID, XrEnvironmentLightingCubemapANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงlastUpdatedTimeคือXrTimeที่แสดงเวลาที่คำนวณค่าประมาณครั้งล่าสุด
หากต้องการรับข้อมูลการประมาณแสงสำหรับคิวบ์แมปแสงสภาพแวดล้อม แสงรอบข้าง ฮาร์มอนิกทรงกลม และ แสงส่องหลัก แอปพลิเคชันสามารถเชื่อมโยงอินสแตนซ์ของโครงสร้างต่อไปนี้ XrEnvironmentLightingCubemapANDROID XrAmbientLightANDROID XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROID ตามลำดับกับ XrLightEstimateANDROID::next
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrLightEstimateANDROID typeต้องเป็นXR_TYPE_LIGHT_ESTIMATE_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้าง ดูเพิ่มเติมที่ XrAmbientLightANDROID, XrDirectionalLightANDROID, XrEnvironmentLightingCubemapANDROID, XrSphericalHarmonicsANDROIDstateต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้อง
โครงสร้าง XrEnvironmentLightingCubemapANDROID มีข้อมูลการประมาณแสงในรูปแบบคิวบ์แมปเกี่ยวกับ แสงแวดล้อมของฉาก
typedef struct XrEnvironmentLightingCubemapANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    const float*                   cubemapRightImage;
    const float*                   cubemapLeftImage;
    const float*                   cubemapTopImage;
    const float*                   cubemapBottomImage;
    const float*                   cubemapFrontImage;
    const float*                   cubemapBackImage;
    uint32_t                       resolution;
    XrQuaternionf                  rotation;
    XrTime                         centerExposureTime;
} XrEnvironmentLightingCubemapANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ถูกต้องคือ XrSphericalHarmonicsANDROID, XrAmbientLightANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงcubemapRightImageคือfloat*ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านขวาของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0cubemapLeftImageคือfloat*ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านซ้ายของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0cubemapTopImageคือfloat*ที่แสดงถึงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านบนของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0cubemapBottomImageคือfloat*ที่แสดงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านล่างของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0cubemapFrontImageคือfloat*ที่แสดงบัฟเฟอร์ R32G32B32_SFLOAT ของ ด้านหน้าของคิวบ์แมป โปรดทราบว่านี่คือ HDR ดังนั้นค่าลอยจึงอาจมากกว่า 1.0resolutionคือuint32_tที่แสดงความกว้างและความสูงของรูปภาพของ แต่ละด้านของคิวบ์แมปrotationคือ XrQuaternionf ที่แสดงการหมุนของคิวบ์แมปcenterExposureTimeคือXrTimeที่แสดงเวลาที่บันทึกคิวบ์แมป มีประโยชน์สำหรับการประมาณค่าระหว่างคิวบ์แมป
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrEnvironmentLightingCubemapANDROID typeต้องเป็นXR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้างstateต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้องcubemapRightImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้องcubemapLeftImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้องcubemapTopImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้องcubemapBottomImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้องcubemapFrontImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้องcubemapBackImageต้องเป็นตัวชี้ไปยังค่า Float ที่ถูกต้อง
โครงสร้าง XrAmbientLightANDROID มีข้อมูลการประมาณแสงเกี่ยวกับ แสงแวดล้อมในฉาก
typedef struct XrAmbientLightANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrVector3f                     intensity;
    XrVector3f                     colorCorrection;
} XrAmbientLightANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ใช้ได้คือ XrSphericalHarmonicsANDROID, XrEnvironmentLightingCubemapANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงintensityคือXrVector3ที่แสดงถึงความเข้มของแสงแวดล้อม แต่ละองค์ประกอบของเวกเตอร์จะสอดคล้องกับช่องสีแดง สีเขียว และสีน้ำเงินcolorCorrectionคือXrVector3ที่มีค่าในพื้นที่แกมมา คูณสีของภาพที่เรนเดอร์ซึ่งมีการแก้ไขแกมมาด้วยค่าเหล่านี้
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrAmbientLightANDROID typeต้องเป็นXR_TYPE_AMBIENT_LIGHT_ANDROIDnextต้องเป็น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, XrEnvironmentLightingCubemapANDROID, และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงkindคือ XrSphericalHarmonicsKindANDROID ที่แอปพลิเคชันร้องขอcoefficientsคืออาร์เรย์floatแบบ 2 มิติที่มีมิติข้อมูลเป็น 9 แถวและ 3 คอลัมน์ คอลัมน์ 3 คอลัมน์ที่สอดคล้องกับแชแนลสีแดง เขียว และน้ำเงิน ตามลำดับ แต่ละแชแนลมีสัมประสิทธิ์ฮาร์มอนิกทรงกลม 9 รายการ
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrSphericalHarmonicsANDROID typeต้องเป็นXR_TYPE_SPHERICAL_HARMONICS_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้างstateต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้องkindต้องเป็นค่า XrSphericalHarmonicsKindANDROID ที่ถูกต้อง
โครงสร้าง XrDirectionalLightANDROID มีข้อมูลการประมาณแสง
typedef struct XrDirectionalLightANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrVector3f                     intensity;
    XrVector3f                     direction;
} XrDirectionalLightANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง โครงสร้างที่ถูกต้องคือ XrAmbientLightANDROID, XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงintensityคือXrVector3ที่แสดงถึงความเข้มของแสงแบบมีทิศทาง แต่ละองค์ประกอบของเวกเตอร์จะสอดคล้องกับช่องสีแดง สีเขียว และสีน้ำเงินdirectionคือXrVector3ที่แสดงทิศทางของแสง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย 
XR_ANDROID_light_estimationก่อนใช้ XrDirectionalLightANDROID typeต้องเป็นXR_TYPE_DIRECTIONAL_LIGHT_ANDROIDnextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้างstateต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้อง
การแจงนับ XrSphericalHarmonicsKindANDROID จะระบุให้รันไทม์ทราบ ว่าแอปพลิเคชันขอฮาร์มอนิกทรงกลมประเภทใด
typedef enum XrSphericalHarmonicsKindANDROID {
    XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID = 0,
    XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID = 1
} XrSphericalHarmonicsKindANDROID;
Enums มีความหมายดังนี้
Enum  | 
    คำอธิบาย  | 
  
  | 
    สัมประสิทธิ์ฮาร์มอนิกทรงกลมแสดงฟังก์ชันความสว่างของแสงสภาพแวดล้อม รวมถึงการมีส่วนร่วมจากแสงหลัก  | 
  
  | 
    สัมประสิทธิ์ฮาร์มอนิกทรงกลมแสดงฟังก์ชันความสว่างของแสงแวดล้อม โดยไม่รวมการมีส่วนร่วมจากแสงหลัก  | 
  
การแจงนับ XrLightEstimateStateANDROID จะระบุต่อรันไทม์ ว่าแอปพลิเคชันขอฮาร์มอนิกทรงกลมประเภทใด
typedef enum XrLightEstimateStateANDROID {
    XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID = 0,
    XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID = 1
} XrLightEstimateStateANDROID;
Enums มีความหมายดังนี้
Enum  | 
    คำอธิบาย  | 
  
  | 
    การประมาณการการใช้งานไฟถูกต้อง  | 
  
  | 
    ค่าประมาณแสงไม่ถูกต้อง  | 
  
ตัวอย่างโค้ดสำหรับการประมาณค่าแสง
โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับค่าประมาณแสงที่เป็นไปได้ทั้งหมดจากรันไทม์
XrSession session;  // Created at app startup
XrSpace appSpace;   // 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 totalSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .kind = XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID,
    .next = &directionalLight,
};
XrSphericalHarmonicsANDROID ambientSh = {
    .type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
    .kind = XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID,
    .next = &totalSh,
};
XrAmbientLightANDROID ambientLight = {
    .type = XR_TYPE_AMBIENT_LIGHT_ANDROID,
    .next = &ambientSh,
};
XrEnvironmentLightingCubemapANDROID lightingCubemap {
    .type = XR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROID,
    .next = &ambientLight,
}
XrLightEstimateANDROID estimate = {
    .type = XR_TYPE_LIGHT_ESTIMATE_ANDROID,
    .next = &lightingCubemap,
};
XrResult result = xrGetLightEstimateANDROID(estimator, &info, &estimate);
if (result == XR_SUCCESS &&
    estimate.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
  // use directionalLight, totalSh, ambientSh, ambientLight,
  // lightingCubemap, if each
  // struct has a valid state field
}
// When you want to disable light estimation
CHK_XR(xrDestroyLightEstimatorANDROID(estimator));
ประเภทออบเจ็กต์ใหม่
XrLightEstimator
มีการขยายการแจงนับ XrObjectType ด้วยรายการต่อไปนี้
XR_OBJECT_TYPE_LIGHT_ESTIMATOR_ANDROID
มีการขยายการแจงนับ XrStructureType ด้วยรายการต่อไปนี้
XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDXR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROIDXR_TYPE_LIGHT_ESTIMATE_ANDROIDXR_TYPE_DIRECTIONAL_LIGHT_ANDROIDXR_TYPE_SPHERICAL_HARMONICS_ANDROIDXR_TYPE_AMBIENT_LIGHT_ANDROIDXR_TYPE_ENVIRONMENT_LIGHTING_CUBEMAP_ANDROID
Enums ใหม่
โครงสร้างใหม่
- XrLightEstimatorCreateInfoANDROID
 - XrLightEstimateGetInfoANDROID
 - XrLightEstimateANDROID
 - XrDirectionalLightANDROID
 - XrSphericalHarmonicsANDROID
 - XrAmbientLightANDROID
 - XrSystemLightEstimationPropertiesANDROID
 - XrEnvironmentLightingCubemapANDROID
 
ฟังก์ชันใหม่
ปัญหา
ประวัติเวอร์ชัน
- การแก้ไขครั้งที่ 2, 2025-01-17 (Salar Khan)
- เพิ่มการรองรับคิวบ์แมปการจัดแสงสภาพแวดล้อม
 
 - การแก้ไขครั้งที่ 1, 16-09-2024 (Cairn Overturf)
- คำอธิบายส่วนขยายเริ่มต้น
 
 
OpenXR™ และโลโก้ OpenXR เป็นเครื่องหมายการค้าของ The Khronos Group Inc. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร