XR_ANDROID_light_estimation OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_light_estimation

এক্সটেনশন প্রকার

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

701

রিভিশন

1

এক্সটেনশন এবং সংস্করণ নির্ভরতা

OpenXR 1.0

সর্বশেষ সংশোধিত তারিখ

2024-09-18

আইপি স্ট্যাটাস

কোন পরিচিত আইপি দাবি.

অবদানকারী

জ্যারেড ফাইন্ডার, গুগল

কেয়ার্ন ওভারটার্ফ, গুগল

স্পেন্সার কুইন, গুগল

লেভানা চেন, গুগল

নিহাভ জৈন, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে হেডসেটের চারপাশে বাস্তব-বিশ্বের পরিবেশের আলোকসজ্জার প্রতিনিধিত্বকারী ডেটা অনুরোধ করার অনুমতি দেয়৷ ভার্চুয়াল অবজেক্ট রেন্ডার করার সময় এই তথ্যটি ব্যবহার করা যেতে পারে যাতে তারা যে দৃশ্যে স্থাপন করা হয় সেই একই অবস্থার অধীনে আলোকিত করতে।

সিস্টেমের ক্ষমতা পরিদর্শন করুন

xrGetSystemProperties কল করার সময় একটি অ্যাপ্লিকেশন XrSystemLightEstimationPropertiesANDROID কাঠামোকে XrSystemProperties- এ চেইন করে সিস্টেমটি হালকা অনুমান সমর্থন করে কিনা তা পরীক্ষা করতে পারে

typedef struct XrSystemLightEstimationPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsLightEstimation;
} XrSystemLightEstimationPropertiesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • supportsLightEstimation হল একটি XrBool32 , বর্তমান সিস্টেম হালকা অনুমান সমর্থন করে কিনা তা নির্দেশ করে।

একটি অ্যাপ্লিকেশন XrGetSystemProperties কল করার সময় XrSystemLightEstimationPropertiesANDROID কাঠামোর সাথে XrSystemProperties প্রসারিত করে আলোর অনুমান সমর্থন করতে সক্ষম কিনা তা পরীক্ষা করতে পারে

যদি সিস্টেমটি হালকা অনুমান সমর্থন করতে সক্ষম না হয়, তাহলে এটি supportsLightEstimation জন্য XR_FALSE এবং xrCreateLightEstimatorANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED প্রদান করবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

একটি হালকা অনুমানকারী হ্যান্ডেল তৈরি করুন

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_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 বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।

বৈধ ব্যবহার (অন্তর্নিহিত)

xrDestroyLightEstimatorANDROID ফাংশন estimator এবং যেকোনো অন্তর্নিহিত সম্পদ প্রকাশ করে।

XrResult xrDestroyLightEstimatorANDROID(
    XrLightEstimatorANDROID                     estimator);

পরামিতি বিবরণ

বৈধ ব্যবহার (অন্তর্নিহিত)

থ্রেড নিরাপত্তা

  • estimator অ্যাক্সেস, এবং যেকোনো শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

হালকা অনুমান ডেটা অ্যাক্সেস করুন

xrGetLightEstimateANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetLightEstimateANDROID(
    XrLightEstimatorANDROID                     estimator,
    const XrLightEstimateGetInfoANDROID*        input,
    XrLightEstimateANDROID*                     output);

পরামিতি বিবরণ

  • estimator : পূর্বে xrCreateLightEstimatorANDROID এর সাথে তৈরি করা একটি 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 যে সময়টি বর্ণনা করে যে সময়ে অ্যাপ্লিকেশনটি হালকা অনুমান অনুসন্ধান করতে চায়।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrLightEstimateANDROID গঠনে হালকা অনুমান ডেটা রয়েছে৷

typedef struct XrLightEstimateANDROID {
    XrStructureType                type;
    void*                          next;
    XrLightEstimateStateANDROID    state;
    XrTime                         lastUpdatedTime;
} XrLightEstimateANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। বৈধ কাঠামোগুলি হল XrAmbientLightANDROID , XrSphericalHarmonicsANDROID এবং XrDirectionalLightANDROID
  • state হল XrLightEstimateStateANDROID আলোর অনুমানের অবস্থার প্রতিনিধিত্ব করে৷
  • lastUpdatedTime হল XrTime যেটি প্রতিনিধিত্ব করে কখন অনুমানটি শেষবার গণনা করা হয়েছিল।

পরিবেষ্টিত আলো, গোলাকার হারমোনিক্স এবং প্রাথমিক দিকনির্দেশক আলোর জন্য হালকা অনুমান সংক্রান্ত তথ্য পেতে, অ্যাপ্লিকেশনগুলি XrLightEstimateANDROID::পরবর্তীতে যথাক্রমে নিম্নলিখিত কাঠামো, XrAmbientLightANDROID , XrSphericalHarmonicsANDROID এবং XrDirectionalLightANDROID- এর দৃষ্টান্তগুলিকে চেইন করতে পারে

বৈধ ব্যবহার (অন্তর্নিহিত)

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 যার মান গামা স্পেসে রয়েছে। এই মানগুলির সাথে আপনার গামার সংশোধিত রেন্ডারের রঙকে উপাদান অনুসারে গুণ করুন।

বৈধ ব্যবহার (অন্তর্নিহিত)

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টি গোলাকার হারমোনিক সহগ রয়েছে।

বৈধ ব্যবহার (অন্তর্নিহিত)

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 আলোর দিক নির্দেশ করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrSphericalHarmonicsKindANDROID গণনা রানটাইমকে শনাক্ত করে, অ্যাপ্লিকেশনটি কী ধরনের গোলাকার হারমোনিক্সের জন্য অনুরোধ করছে।

typedef enum XrSphericalHarmonicsKindANDROID {
    XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID = 0,
    XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID = 1
} XrSphericalHarmonicsKindANDROID;

enums নিম্নলিখিত অর্থ আছে:

এনাম

বর্ণনা

XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID

গোলাকার সুরেলা সহগগুলি প্রধান আলো থেকে অবদান বাদ দিয়ে পরিবেশের আলোর দীপ্তি ফাংশনকে উপস্থাপন করে।

XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID

গোলাকার সুরেলা সহগ পরিবেশ আলোর দীপ্তি ফাংশন প্রতিনিধিত্ব করে, প্রধান আলোর অবদান সহ।

XrLightEstimateStateANDROID গণনা রানটাইমকে শনাক্ত করে, অ্যাপ্লিকেশনটি কী ধরনের গোলাকার হারমোনিক্সের জন্য অনুরোধ করছে।

typedef enum XrLightEstimateStateANDROID {
    XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID = 0,
    XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID = 1
} XrLightEstimateStateANDROID;

enums নিম্নলিখিত অর্থ আছে:

এনাম

বর্ণনা

XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID

হালকা অনুমান বৈধ

XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID

আলো অনুমান অবৈধ

হালকা অনুমানের জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে রানটাইম থেকে সমস্ত সম্ভাব্য আলো অনুমান পরিমাণ পেতে হয়।

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

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

সংস্করণ ইতিহাস

  • রিভিশন 1, 2024-09-16 (কেয়ার্ন ওভারটার্ফ)
    • প্রাথমিক এক্সটেনশন বর্ণনা