بنية

المواد هي مورد مشترك غير قابل للتغيير. يمكن تحميل المواد من تخزين الكائن الثنائي كبير الحجم وتطبيقها على النماذج مباشرة، كما هو موضح في البرنامج التعليمي: تغيير البيئة والمواد. ومع ذلك، فإن المواد الأكثر شيوعا ستكون جزءا من نموذج محول، حيث يتم الرجوع إليها من خلال موادها.

أنواع المواد

أنواع المواد المختلفة لها حالات استخدام مختلفة:

  • تستخدم المواد 2D بشكل رئيسي في المواد.
  • يمكن استخدام Cubemaps للسماء.

تنسيقات المواد المدعومة

يجب أن تكون جميع المواد المعطاة ل ARR بتنسيق DDS. يفضل مع mipmaps وضغط الملمس.

تحميل المواد

عند تحميل مادة، يجب عليك تحديد نوعها المتوقع. إذا لم يتطابق النوع، يفشل تحميل المادة. سيؤدي تحميل مادة بنفس URI مرتين إلى إرجاع نفس كائن المادة، حيث إنه مورد مشترك.

على غرار نماذج التحميل، هناك متغيران لمعالجة أصل مادة في تخزين الكائن الثنائي كبير الحجم المصدر:

  • يمكن معالجة المادة بواسطة معلمات تخزين الكائن الثنائي كبير الحجم مباشرة، في حالة ربط تخزين الكائن الثنائي كبير الحجم بالحساب. دالة التحميل ذات الصلة في هذه الحالة هي LoadTextureAsync مع المعلمة LoadTextureOptions.
  • يمكن معالجة أصل الملمس بواسطة SAS URI الخاص به. دالة التحميل ذات الصلة مع LoadTextureFromSasAsync المعلمة LoadTextureFromSasOptions. استخدم هذا المتغير أيضا عند تحميل المواد المضمنة.

يوضح نموذج التعليمات البرمجية التالي كيفية تحميل مادة:

async void LoadMyTexture(RenderingSession session, string storageContainer, string blobName, string assetPath)
{
    try
    {
        LoadTextureOptions options = new LoadTextureOptions(storageContainer, blobName, assetPath, TextureType.Texture2D);
        Texture texture = await session.Connection.LoadTextureAsync(options);
    
        // use texture...
    }
    catch (RRException ex)
    {
    }
}
void LoadMyTexture(ApiHandle<RenderingSession> session, std::string storageContainer, std::string blobName, std::string assetPath)
{
    LoadTextureOptions params;
    params.TextureType = TextureType::Texture2D;
    params.Blob.StorageAccountName = std::move(storageContainer);
    params.Blob.BlobContainerName = std::move(blobName);
    params.Blob.AssetPath = std::move(assetPath);
    session->Connection()->LoadTextureAsync(params, [](Status status, ApiHandle<Texture> texture)
    {
        // use texture...
    });
}

لاحظ أنه في حالة استخدام متغير SAS الخاص به، تختلف دالة/معلمة التحميل فقط.

اعتمادا على ما يفترض أن يتم استخدام المادة من أجله، قد تكون هناك قيود على نوع الملمس والمحتوى. على سبيل المثال، يجب أن تكون خريطة خشونة مادة PBR رمادية التدرج.

مستندات API

الخطوات التالية