Textures

Les textures sont une ressource partagée immuable. Les textures peuvent être chargées à partir du stockage d’objets blob et appliquées directement aux modèles, comme illustré dans le tutoriel : Modification de l’environnement et des matériaux. Cependant, le plus souvent, les textures font partie d’un modèle converti, dans lequel elles sont référencées par ses matériaux.

Types de texture

À cas d’usage correspondent des types de texture spécifiques :

  • Les textures 2D sont principalement utilisées dans les matériaux.
  • Les cubemaps peuvent être utilisés pour le ciel.

Formats de texture pris en charge

Toutes les textures fournies à ARR doivent être au format DDS, de préférence avec des mipmaps et la compression de texture.

Chargement des textures

Quand vous chargez une texture, vous devez spécifier son type attendu. Si le type ne correspond pas, le chargement de la texture échoue. Le chargement d’une texture avec le même URI à deux reprises retourne le même objet de texture, car il s’agit d’une ressource partagée.

Comme pour le chargement de modèles, il existe deux méthodes pour envoyer une ressource de texture dans un stockage Blob source :

  • La texture peut être envoyée directement par le biais des paramètres de stockage Blob si le stockage Blob est lié au compte. Dans ce cas, la fonction de chargement appropriée est LoadTextureAsync avec le paramètre LoadTextureOptions.
  • La ressource de texture peut être envoyée par le biais de son URI SAS. La fonction de chargement appropriée est LoadTextureFromSasAsync avec le paramètre LoadTextureFromSasOptions. Utilisez également cette méthode pour le chargement de textures intégrées.

L’exemple de code suivant montre comment charger une texture :

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...
    });
}

Notez que, dans le cas de l’utilisation de sa variante SAP, seule la fonction/le paramètre de chargement diffère.

Selon la façon dont vous envisagez d’utiliser la texture, son contenu et son type peuvent être soumis à des restrictions. Par exemple, la carte de rugosité d’un matériau PBR doit être en nuances de gris.

Documentation de l’API

Étapes suivantes