XR_ANDROID_light_estimation
Name String
XR_ANDROID_light_estimation
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียน
701
การแก้ไข
1
สถานะการให้สัตยาบัน
ยังไม่ให้สัตยาบัน
การขึ้นต่อกันของส่วนขยายและเวอร์ชัน
วันที่แก้ไขล่าสุด
2025-03-13
สถานะ IP
ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ
ผู้เขียน
Jared Finder, Google
Cairn Overturf, Google
Spencer Quin, Google
Levana Chen, Google
Nihav Jain, Google
Salar Khan, Google
Scott Chung, Google
ภาพรวม
ส่วนขยายนี้ช่วยให้แอปพลิเคชันขอข้อมูลที่แสดงถึงแสงของสภาพแวดล้อมจริงรอบๆ ชุดหูฟังได้ แอปพลิเคชันสามารถใช้ข้อมูลนี้เพื่อส่องสว่างออบเจ็กต์เสมือนภายใต้สภาวะเดียวกันกับฉากในโลกจริงที่วางออบเจ็กต์เสมือนไว้
สิทธิ์
แอปพลิเคชัน Android ต้องมีสิทธิ์ android.permission.SCENE_UNDERSTANDING_COARSE แสดงอยู่ในไฟล์ Manifest เนื่องจากส่วนขยายนี้แสดงข้อมูลแสงสว่างเกี่ยวกับสภาพแวดล้อม สิทธิ์ android.permission.SCENE_UNDERSTANDING_COARSE ถือเป็นสิทธิ์ที่เป็นอันตราย แอปพลิเคชันต้องขอสิทธิ์ขณะรันไทม์เพื่อใช้ฟังก์ชันต่อไปนี้
(ระดับการป้องกัน: อันตราย)
ตรวจสอบความสามารถของระบบ
โครงสร้าง XrSystemLightEstimationPropertiesANDROID มีคำจำกัดความดังนี้
typedef struct XrSystemLightEstimationPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsLightEstimation;
} XrSystemLightEstimationPropertiesANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน 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_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
สร้างแฮนเดิลเครื่องประมาณแสง
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
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimationก่อนที่จะเรียกใช้ xrCreateLightEstimatorANDROID -
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หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimationก่อนจึงจะใช้ XrLightEstimatorCreateInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ดูเพิ่มเติม: XrCubemapLightEstimatorCreateInfoANDROID , XrPointLightsEstimatorCreateInfoANDROIDX1
ฟังก์ชัน xrDestroyLightEstimatorANDROID มีคำจำกัดความดังนี้
XrResult xrDestroyLightEstimatorANDROID(
XrLightEstimatorANDROID estimator);
คำอธิบายพารามิเตอร์
estimatorคือ XrLightEstimatorANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateLightEstimatorANDROID
ฟังก์ชัน xrDestroyLightEstimatorANDROID จะปล่อย estimator และทรัพยากรพื้นฐาน
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้
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เป็น Pointer ไปยังโครงสร้าง XrLightEstimateANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้
XR_ANDROID_light_estimationส่วนขยายก่อนที่จะเรียกใช้ xrGetLightEstimateANDROID -
estimatorต้องเป็นแฮนเดิล XrLightEstimatorANDROID ที่ถูกต้อง -
inputต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateGetInfoANDROID ที่ถูกต้อง -
outputต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateANDROID
รหัสการคืนสินค้า
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หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างspaceคือ XrSpace ที่กำหนดพื้นที่อ้างอิงซึ่งจะแสดงทิศทางแสงและฮาร์มอนิกทรงกลมที่ส่งคืนtimeคือXrTimeที่อธิบายเวลาที่แอปพลิเคชันต้องการค้นหาการประมาณแสง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimationก่อนจึงจะใช้ XrLightEstimateGetInfoANDROID ได้ -
typeต้องเป็นXR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
spaceต้องเป็นแฮนเดิล XrSpace ที่ถูกต้อง
โครงสร้าง XrLightEstimateANDROID มีข้อมูลการประมาณแสงดังนี้
typedef struct XrLightEstimateANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrTime lastUpdatedTime;
} XrLightEstimateANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง โครงสร้างที่ถูกต้อง ได้แก่ XrAmbientLightANDROID , XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของการประมาณแสงlastUpdatedTimeคือXrTimeที่แสดงเวลาที่มีการคำนวณค่าประมาณครั้งล่าสุด
สำหรับโครงสร้างการประมาณแสงทุกรายการ หาก state เป็น XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID ช่องอื่นๆ ทั้งหมดในโครงสร้างจะไม่มีค่า ซึ่งหมายความว่าค่าของช่องเหล่านั้นไม่ได้กำหนดไว้
หากต้องการรับข้อมูลการประมาณแสงสำหรับแสงแวดล้อม ฮาร์มอนิกทรงกลม และแสงทิศทางหลัก แอปพลิเคชันสามารถเชื่อมโยงอินสแตนซ์ของโครงสร้างต่อไปนี้ XrAmbientLightANDROID, XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROID ตามลำดับกับ XrLightEstimateANDROID :: next
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimationก่อนจึงจะใช้ XrLightEstimateANDROID ได้ -
typeต้องเป็นXR_TYPE_LIGHT_ESTIMATE_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ดูเพิ่มเติมที่ 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หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง โครงสร้างที่ถูกต้อง ได้แก่ XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROIDstateคือ 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.
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้
XR_ANDROID_light_estimationส่วนขยายXrAmbientLightANDROIDก่อนจึงจะใช้งานได้ -
typeต้องเป็นXR_TYPE_AMBIENT_LIGHT_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
stateต้องเป็นค่า XrLightEstimateStateANDROID ที่ถูกต้อง
โครงสร้าง XrSphericalHarmonicsANDROID มีฮาร์มอนิกทรงกลมที่แสดงถึงแสงของฉาก
typedef struct XrSphericalHarmonicsANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
XrSphericalHarmonicsKindANDROID kind;
float coefficients[9][3];
} XrSphericalHarmonicsANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง โครงสร้างที่ถูกต้อง ได้แก่ XrAmbientLightANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของการประมาณแสงkindคือ XrSphericalHarmonicsKindANDROID ที่แอปพลิเคชันขอcoefficientsคืออาร์เรย์floatแบบ 2 มิติที่มีขนาด 9 แถวและ 3 คอลัมน์ คอลัมน์ 3 คอลัมน์ที่สอดคล้องกับช่องสีแดง เขียว และน้ำเงินตามลำดับ แต่ละแชแนลมีสัมประสิทธิ์ฮาร์มอนิกทรงกลม 9 รายการ
coefficients ใช้ในฟังก์ชันพิเศษที่รับทิศทางเป็นอินพุตและแสดงผลสีของแสงที่มาจากทิศทางนั้น ดูรายละเอียดเพิ่มเติมได้ในเอกสารนี้
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimationก่อนใช้ XrSphericalHarmonicsANDROID -
typeต้องเป็นXR_TYPE_SPHERICAL_HARMONICS_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
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หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง โครงสร้างที่ถูกต้อง ได้แก่ XrAmbientLightANDROID , XrSphericalHarmonicsANDROID และ XrDirectionalLightANDROIDstateคือ XrLightEstimateStateANDROID ที่แสดงสถานะของการประมาณแสงintensityคือ XrVector3f ที่แสดงความเข้มของแสงแบบกำหนดทิศทาง คอมโพเนนต์แต่ละรายการของเวกเตอร์จะสอดคล้องกับแชแนลสีแดง สีเขียว และสีน้ำเงินdirectionคือ XrVector3f ที่แสดงทิศทางของแสง
การใช้งานที่ถูกต้อง (โดยนัย)
- คุณต้องเปิดใช้
XR_ANDROID_light_estimationส่วนขยายก่อนจึงจะใช้ XrDirectionalLightANDROID ได้ -
typeต้องเป็นXR_TYPE_DIRECTIONAL_LIGHT_ANDROID -
nextต้องเป็นNULLหรือ Pointer ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
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 ใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_LIGHT_ESTIMATION_EXTENSION_NAMEXR_ANDROID_light_estimation_SPEC_VERSIONการขยาย XrObjectType :
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
ปัญหา
ประวัติเวอร์ชัน
การแก้ไขครั้งที่ 1, 2024-09-16 (Cairn Overturf)
- คำอธิบายส่วนขยายเริ่มต้น