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_ANDROID
next
ต้องเป็น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_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_HANDLE_INVALID
XR_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_ANDROID
next
ต้องเป็นNULL
หรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปใน ห่วงโซ่โครงสร้าง
ฟังก์ชัน xrDestroyLightEstimatorANDROID จะปล่อย estimator
และทรัพยากรพื้นฐาน
XrResult xrDestroyLightEstimatorANDROID(
XrLightEstimatorANDROID estimator);
คำอธิบายพารามิเตอร์
estimator
คือ XrLightEstimatorANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateLightEstimatorANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimation
ก่อนเรียกใช้ xrDestroyLightEstimatorANDROID estimator
ต้องเป็นแฮนเดิล XrLightEstimatorANDROID ที่ถูกต้อง
ความปลอดภัยของเธรด
- การเข้าถึง
estimator
และแฮนเดิลย่อยทั้งหมดต้องซิงค์ภายนอก
รหัสการคืนสินค้า
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
เข้าถึงข้อมูลการประมาณแสง
ฟังก์ชัน xrGetLightEstimateANDROID มีคำจำกัดความดังนี้
XrResult xrGetLightEstimateANDROID(
XrLightEstimatorANDROID estimator,
const XrLightEstimateGetInfoANDROID* input,
XrLightEstimateANDROID* output);
คำอธิบายพารามิเตอร์
estimator
: แฮนเดิลของ XrLightEstimatorANDROID ที่สร้างไว้ก่อนหน้า ด้วยxrCreateLightEstimatorANDROID
input
: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateGetInfoANDROIDoutput
: พอยน์เตอร์ไปยังโครงสร้าง XrLightEstimateANDROID
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimation
ก่อนเรียกใช้ xrGetLightEstimateANDROID estimator
ต้องเป็นแฮนเดิล XrLightEstimatorANDROID ที่ถูกต้องinput
ต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateGetInfoANDROID ที่ถูกต้องoutput
ต้องเป็นตัวชี้ไปยังโครงสร้าง XrLightEstimateANDROID
รหัสการคืนสินค้า
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_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_ANDROID
next
ต้องเป็น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_ANDROID
next
ต้องเป็น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_ANDROID
next
ต้องเป็น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_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, XrEnvironmentLightingCubemapANDROID, และ XrDirectionalLightANDROIDstate
คือ XrLightEstimateStateANDROID ที่แสดงสถานะของ การประมาณค่าแสงkind
คือ XrSphericalHarmonicsKindANDROID ที่แอปพลิเคชันร้องขอcoefficients
คืออาร์เรย์float
แบบ 2 มิติที่มีมิติข้อมูลเป็น 9 แถวและ 3 คอลัมน์ คอลัมน์ 3 คอลัมน์ที่สอดคล้องกับแชแนลสีแดง เขียว และน้ำเงิน ตามลำดับ แต่ละแชแนลมีสัมประสิทธิ์ฮาร์มอนิกทรงกลม 9 รายการ
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_light_estimation
ก่อนใช้ XrSphericalHarmonicsANDROID type
ต้องเป็นXR_TYPE_SPHERICAL_HARMONICS_ANDROID
next
ต้องเป็น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_ANDROID
next
ต้องเป็น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_ANDROID
XR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID
XR_TYPE_LIGHT_ESTIMATE_ANDROID
XR_TYPE_DIRECTIONAL_LIGHT_ANDROID
XR_TYPE_SPHERICAL_HARMONICS_ANDROID
XR_TYPE_AMBIENT_LIGHT_ANDROID
XR_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. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร