מחרוזת שם
XR_ANDROID_light_estimation
סוג התוסף
תוסף למכונה
מספר תוסף רשום
701
גרסה
1
תלות בתוספים ובגרסאות
תאריך השינוי האחרון
2024-09-18
סטטוס כתובת ה-IP
לא ידוע על תלונות על הפרת זכויות יוצרים בנושא כתובת IP.
שותפים ביצירת התוכן
Jared Finder, Google
קארן אוברטורף (Cairn Overturf), Google
ספנסר קווין (Spencer Quin), Google
לבנה צ'ן, Google
Nihav Jain, 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
הוא הפניה למזהה (handle) שבו מוחזר האובייקט שנוצר של XrLightEstimatorANDROID.
האפליקציה יכולה להשתמש בפונקציה xrCreateLightEstimatorANDROID כדי ליצור מעריך תאורה.
- הפונקציה xrCreateLightEstimatorANDROID תחזיר את הערך
XR_ERROR_FEATURE_UNSUPPORTED
אם המערכת לא תומכת במדידה של עוצמת התאורה. - הפונקציה xrCreateLightEstimatorANDROID תחזיר את הערך
XR_ERROR_PERMISSION_INSUFFICIENT
אם לא הוקצו לאפליקציה הקוראת את ההרשאות הנדרשות.
יכול להיות שייעשה שימוש במזהה של מעריך האור החזק שהוחזרו בקריאות API. אם אפליקציה רוצה להצביע לסביבת זמן הריצה שהיא סיימה לגשת לנתוני האומדן של התאורה, היא חייבת להשמיד את ה-handle באמצעות 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
: ה-handle של XrLightEstimatorANDROID שנוצר קודם באמצעותxrCreateLightEstimatorANDROID
.input
: הפניה למבנה XrLightEstimateGetInfoANDROID.output
: הפניה למבנה XrLightEstimateANDROID.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_light_estimation
לפני שמפעילים את xrGetLightEstimateANDROID. estimator
חייב להיות מזהה XrLightEstimatorANDROID חוקיinput
חייב להיות הפניה למבנה תקין של XrLightEstimateGetInfoANDROIDoutput
חייב להיות מפנה למבנה 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 ו-XrDirectionalLightANDROID.state
הוא XrLightEstimateStateANDROID שמייצג את המצב של האומדן של התאורה.lastUpdatedTime
הוא הערך שלXrTime
שמייצג את מועד החישוב האחרון של האומדן.
כדי לקבל מידע על אומדן התאורה של תאורת האווירה, פולימוניומים ספרוליים והתאורה הראשית הישירה, אפליקציות יכולות לשרשר מכונות של המבנים הבאים, XrAmbientLightANDROID, XrSphericalHarmonicsANDROID ו-XrDirectionalLightANDROID, בהתאמה, אל XrLightEstimateANDROID::next.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_light_estimation
לפני שמשתמשים ב-XrLightEstimateANDROID. - הערך של
type
חייב להיותXR_TYPE_LIGHT_ESTIMATE_ANDROID
next
חייב להיותNULL
או מצביע תקין להמבנה הבא בשרשרת המבנים. מידע נוסף זמין במאמרים הבאים: XrAmbientLightANDROID, XrDirectionalLightANDROID, XrSphericalHarmonicsANDROIDstate
חייב להיות ערך חוקי של 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
הוא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 ו-XrDirectionalLightANDROID.state
הוא XrLightEstimateStateANDROID שמייצג את המצב של האומדן של התאורה.kind
הוא הערך של XrSphericalHarmonicsKindANDROID שהבקשה ביקשה.coefficients
הוא מערךfloat
דו-מימדי בגודל 9 שורות ו-3 עמודות. 3 העמודות התואמות לערוצי הצבע אדום, ירוק וכחול, בהתאמה. לכל ערוץ יש 9 גורמים הרמוניים ספרוליים.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_light_estimation
לפני שמשתמשים ב-XrSphericalHarmonicsANDROID - הערך של
type
חייב להיותXR_TYPE_SPHERICAL_HARMONICS_ANDROID
next
חייב להיותNULL
או מצביע תקין למבנה הבא בשרשרת המבניםstate
חייב להיות ערך חוקי של XrLightEstimateStateANDROIDkind
חייב להיות ערך חוקי של XrSphericalHarmonicsKindANDROID
המבנה 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
הואXrVector3
שמייצג את עוצמת האור המכוון. כל רכיב של הווקטור תואם לערוצים האדום, הירוק והכחול.direction
הואXrVector3
שמייצג את כיוון האור.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_light_estimation
לפני שמשתמשים ב-XrDirectionalLightANDROID - הערך של
type
חייב להיותXR_TYPE_DIRECTIONAL_LIGHT_ANDROID
next
חייב להיותNULL
או מצביע תקין למבנה הבא בשרשרת המבניםstate
חייב להיות ערך חוקי של XrLightEstimateStateANDROID
המניין XrSphericalHarmonicsKindANDROID מזהה בסביבת זמן הריצה את סוג ה-spherical harmonics שהאפליקציה מבקשת.
typedef enum XrSphericalHarmonicsKindANDROID {
XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID = 0,
XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID = 1
} XrSphericalHarmonicsKindANDROID;
למאפייני enum יש את המשמעויות הבאות:
Enum |
תיאור |
|
הגורמים החזרים הספיריים מייצגים את פונקציית הקרינה של תאורת הסביבה, לא כולל התרומה של האור הראשי. |
|
הגורמים החזויים של התנודה הסימטרית הכדורית מייצגים את פונקציית הקרינה של תאורת הסביבה, כולל התרומה של המנורה הראשית. |
המניין XrLightEstimateStateANDROID מזהה בסביבת זמן הריצה את סוג ה-spherical harmonics שהאפליקציה מבקשת.
typedef enum XrLightEstimateStateANDROID {
XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID = 0,
XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID = 1
} XrLightEstimateStateANDROID;
למאפייני enum יש את המשמעויות הבאות:
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,
};
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));
סוגי אובייקטים חדשים
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
משתני Enum חדשים
מבנים חדשים
- XrLightEstimatorCreateInfoANDROID
- XrLightEstimateGetInfoANDROID
- XrLightEstimateANDROID
- XrDirectionalLightANDROID
- XrSphericalHarmonicsANDROID
- XrAmbientLightANDROID
- XrSystemLightEstimationPropertiesANDROID
פונקציות חדשות
בעיות
היסטוריית הגרסאות
- גרסה 1, 16 בספטמבר 2024 (Cairn Overturf)
- תיאור ראשוני של התוסף