XR_ANDROID_global_passthrough_dimming
Name String
XR_ANDROID_global_passthrough_dimming
Tipo di estensione
Estensione dell'istanza
Numero di interno registrato
797
Revisione
1
Stato della ratifica
Non ratificato
Dipendenze di estensioni e versioni
Data ultima modifica
2026-03-10
Stato IP
Nessuna rivendicazione di PI nota.
Collaboratori
Brian Chen, Google
Kyle Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Panoramica
Con l'introduzione dei dispositivi ottici trasparenti, è importante non solo consentire alle applicazioni di regolare l'oscurità del passthrough per fornire all'utente la migliore combinazione con il contesto dell'app, ma anche consentire al sistema di disattivare l'oscuramento del passthrough per motivi di sicurezza.
Questa estensione fornisce due funzioni per consentire alle app di impostare e ottenere il livello di oscuramento corrente, nonché un evento da trasmettere quando il livello di oscuramento cambia.
Ispeziona la funzionalità del sistema
La struttura XrSystemGlobalDimmingPropertiesANDROID è definita come:
typedef struct XrSystemGlobalDimmingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.supportsGlobalDimmingè unXrBool32che indica se il sistema attuale supporta l'attenuazione globale.
Un'applicazione può verificare se il sistema supporta l'oscuramento globale concatenando una struttura XrSystemGlobalDimmingPropertiesANDROID a XrSystemProperties quando chiama xrGetSystemProperties .
Se il runtime restituisce XR_FALSE per supportsGlobalDimming , il runtime deve restituire XR_ERROR_FEATURE_UNSUPPORTED quando viene chiamato xrGetGlobalDimmingLevelANDROID.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_global_passthrough_dimmingdeve essere attivata prima di utilizzare XrSystemGlobalDimmingPropertiesANDROID -
typedeve essereXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture
Enumera i livelli di attenuazione globale supportati
La struttura xrEnumerateSupportedGlobalDimmingLevelsANDROID è definita come:
XrResult xrEnumerateSupportedGlobalDimmingLevelsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedGlobalDimmingLevelCapacityInput,
uint32_t* supportedGlobalDimmingLevelCountOutput,
float* supportedGlobalDimmingLevels);
Descrizioni dei membri
instanceè l'istanza da cui è stato recuperatosystemId.systemIdè ilXrSystemIddi cui verranno enumerati i livelli supportati.supportedGlobalDimmingLevelCapacityInputè la capacità dell'arraysupportedGlobalDimmingLevelso 0 per indicare una richiesta di recupero della capacità richiesta.supportedGlobalDimmingLevelCountOutputè un puntatore al conteggio disupportedGlobalDimmingLevelsscritti o un puntatore alla capacità richiesta nel caso in cuisupportedGlobalDimmingLevelCapacityInputnon sia sufficiente.supportedGlobalDimmingLevelsè un puntatore a un array di livelli supportati, ma può essere NULL sesupportedGlobalDimmingLevelCapacityInputè 0.
Se il valore supportedGlobalDimmingLevelCountOutput restituito è 0, sono supportati tutti i livelli di attenuazione globale compresi tra 0,0 e 1,0.
xrEnumerateSupportedGlobalDimmingLevelsANDROID enumera i livelli di oscuramento globale supportati da XrSystemId . I livelli supportati non devono cambiare durante la durata della relativa XrInstance . L'elenco dei livelli restituito deve essere ordinato in ordine crescente.
I runtime devono sempre restituire contenuti del buffer identici da questa enumerazione per il systemId specificato e per la durata del instance .
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_global_passthrough_dimmingdeve essere abilitata prima di chiamare xrEnumerateSupportedGlobalDimmingLevelsANDROID -
instancedeve essere un handle XrInstance valido -
supportedGlobalDimmingLevelCountOutputdeve essere un puntatore a un valoreuint32_t - Se
supportedGlobalDimmingLevelCapacityInputnon è0,supportedGlobalDimmingLevelsdeve essere un puntatore a un array di valorisupportedGlobalDimmingLevelCapacityInputfloat
Codici di risposta
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Configura il livello di abbassamento globale
La struttura XrGlobalDimmingFrameEndInfoANDROID è definita come:
typedef struct XrGlobalDimmingFrameEndInfoANDROID {
XrStructureType type;
const void* next;
float globalDimmingLevel;
} XrGlobalDimmingFrameEndInfoANDROID;
Descrizioni dei parametri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.globalDimmingLevelè un valore compreso tra 0,0 (trasparente) e 1,0 (opaco). Il runtime può mappare questo valore al livello di attenuazione globale supportato più vicino. L'applicazione può impostare questo valore su -1.0 per indicare che è preferibile il livello di oscuramento attuale.
Il valore globalDimmingLevel specifica la percentuale di luce bloccata, dove un valore pari a 0,0 corrisponde allo 0% di luce bloccata e 1,0 corrisponde al 100% di luce bloccata. La percentuale di luce bloccata può essere rappresentata in generale come:
100% - Light Transmittance%
La percentuale di trasmissione della luce, secondo lo standard ISO 8980-3:2022 , può essere misurata come il rapporto tra il flusso radiante trasmesso e il flusso radiante incidente alle lunghezze d'onda della luce visibile (da 380 nm a 780 nm).
XrGlobalDimmingFrameEndInfoANDROID è una struttura che un'applicazione può concatenare in XrFrameEndInfo per richiedere un livello di attenuazione globale preferito.
Il runtime deve rispettare il livello di oscuramento richiesto se è diverso da quello attuale.
Il runtime avrà il controllo del livello di oscuramento globale e potrebbe ignorare il livello di oscuramento globale preferito per motivi di sicurezza.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_global_passthrough_dimmingdeve essere attivata prima di utilizzare XrGlobalDimmingFrameEndInfoANDROID -
typedeve essereXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROID -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture
La funzione xrGetGlobalDimmingLevelANDROID è definita come:
XrResult xrGetGlobalDimmingLevelANDROID(
XrSession session,
float* dimmingLevel);
Descrizioni dei parametri
sessionè un handle XrSession valido.dimmingLevelè un puntatore al livello di luminosità attuale.
Il valore dimmingLevel restituito deve essere compreso tra 0,0 e 1,0, dove 0,0 indica la trasparenza totale e 1,0 l'oscuramento totale.
Se il livello di oscuramento non è stato impostato, il runtime deve impostarlo su 0,0 quando il passthrough è attivo e su 1,0 quando è disattivato.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_global_passthrough_dimmingdeve essere attivata prima di chiamare xrGetGlobalDimmingLevelANDROID -
sessiondeve essere un handle XrSession valido -
dimmingLeveldeve essere un puntatore a un valorefloat
Codici di risposta
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
Evento di modifica del livello di regolazione della luminosità
La struttura XrEventDataGlobalDimmingLevelChangedANDROID è definita come:
typedef struct XrEventDataGlobalDimmingLevelChangedANDROID {
XrStructureType type;
const void* next;
XrSession session;
} XrEventDataGlobalDimmingLevelChangedANDROID;
Descrizioni dei membri
typeè l'XrStructureType di questa struttura.nextèNULLo un puntatore alla struttura successiva in una catena di strutture. Nessuna struttura di questo tipo è definita in OpenXR di base o in questa estensione.sessionè un handle XrSession valido.
L'applicazione può recuperare questo evento utilizzando xrPollEvent . Questo evento verrà inviato quando il livello di oscuramento viene modificato dalle app o dai pulsanti fisici sui dispositivi.
Questo evento non viene inviato quando l'app attiva passa a un'altra.
L'applicazione dovrebbe rispondere all'evento chiamando xrGetGlobalDimmingLevelANDROID per ottenere il nuovo livello di oscuramento e aggiornare XrGlobalDimmingFrameEndInfoANDROID :: globalDimmingLevel di conseguenza. La risposta all'evento garantisce che il runtime riceva un segnale quando l'applicazione modifica il livello di attenuazione preferito.
Utilizzo valido (implicito)
- L'estensione
XR_ANDROID_global_passthrough_dimmingdeve essere attivata prima di utilizzare XrEventDataGlobalDimmingLevelChangedANDROID -
typedeve essereXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID -
nextdeve essereNULLo un puntatore valido alla struttura successiva in una catena di strutture
Esempio di codice
Controlla la funzionalità del sistema ed enumera i livelli di attenuazione globale supportati
Il seguente codice di esempio mostra come verificare se l'oscuramento globale è supportato.
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedGlobalDimmingLevelsANDROID xrEnumerateSupportedGlobalDimmingLevelsANDROID;
XrSystemGlobalDimmingPropertiesANDROID dimmingControlSystemProperties { XR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID };
XrSystemProperties systemProperties; // Chain dimmingControlSystemProperties
// ...
// Run xrGetSystemProperties()
// ...
if (!dimmingControlSystemProperties.supportsGlobalDimming) {
// The system does not support global dimming
return;
}
// Enumerate supported levels
uint32_t count = 0;
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, nullptr));
std::vector<float> supportedLevels(count);
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, supportedLevels.data()));
Evento di modifica del livello di regolazione della luminosità del sondaggio
Il seguente codice di esempio mostra come eseguire il polling dell'evento di modifica del livello di regolazione della luminosità.
XrEventDataBuffer event{ XR_TYPE_EVENT_DATA_BUFFER };
// ...
// Run xrPollEvent()
// ...
switch (event.type) {
// This event will not be sent when focused app switches
case XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID:
{
const XrEventDataGlobalDimmingLevelChangedANDROID &dimmingLevelChangedEvent =
*reinterpret_cast<XrEventDataGlobalDimmingLevelChangedANDROID *>(&event);
// Query new dimming level using xrGetGlobalDimmingLevelANDROID()
}
}
Nuovi comandi
Nuove strutture
- XrEventDataGlobalDimmingLevelChangedANDROID
Estensione di XrFrameEndInfo :
Estensione di XrSystemProperties :
Nuove costanti enum
XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAMEXR_ANDROID_global_passthrough_dimming_SPEC_VERSIONEstensione di XrStructureType :
XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID
Problemi
Cronologia delle versioni
Revisione 1, 7 ottobre 2025 (Brian Chen)
- Descrizione iniziale dell'estensione.