Patronen

Patronen zijn een onveranderbare gedeelde resource. Patronen kunnen worden geladen vanuit blobopslag en rechtstreeks worden toegepast op modellen, zoals wordt beschreven in de zelfstudie: De omgeving en materialen wijzigen. Meestal maken patronen echter deel uit van een geconverteerd model, waar ze worden verwezen door de materialen.

Patroontypen

Verschillende patronentypen hebben verschillende use cases:

  • 2D Texturen worden voornamelijk gebruikt in materialen.
  • Kubuskaarten kunnen worden gebruikt voor de hemel.

Ondersteunde patroonindelingen

Alle patronen die aan ARR worden gegeven, moeten de DDS-indeling hebben. Bij voorkeur met mipmaps en textuurcompressie.

Patronen laden

Bij het laden van een patroon moet u het verwachte type opgeven. Als het type niet overeenkomt, mislukt de patroonbelasting. Als u een patroon met dezelfde URI twee keer laadt, wordt hetzelfde patroonobject geretourneerd, omdat het een gedeelde resource is.

Net als bij het laden van modellen zijn er twee varianten voor het adresseren van een patroonasset in de bron-blobopslag:

  • Het patroon kan rechtstreeks worden verwerkt door blobopslagparameters, voor het geval de blob-opslag is gekoppeld aan het account. De relevante laadfunctie in dit geval is LoadTextureAsync met de parameter LoadTextureOptions.
  • De texture-asset kan worden verholpen door de SAS-URI. De relevante laadfunctie is LoadTextureFromSasAsync met parameter LoadTextureFromSasOptions. Gebruik deze variant ook bij het laden van ingebouwde patronen.

De volgende voorbeeldcode laat zien hoe u een patroon laadt:

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

Houd er rekening mee dat in het geval van het gebruik van de SAS-variant alleen de laadfunctie/parameter verschilt.

Afhankelijk van waarvoor het patroon moet worden gebruikt, zijn er mogelijk beperkingen voor het patroontype en de inhoud. De ruwheidskaart van een PBR-materiaal moet bijvoorbeeld grijswaarden zijn.

API-documentatie

Volgende stappen