Texture
Le trame sono una risorsa condivisa non modificabile. Le trame possono essere caricate dall'archivio BLOB e applicate direttamente ai modelli, come illustrato in Esercitazione: Modifica dell'ambiente e dei materiali. In genere, tuttavia, le trame faranno parte di un modello convertito, in cui si fa riferimento ad esse con i materiali.
Tipi di trama
Tipi di trama diversi hanno casi d'uso diversi:
- Le trame 2D vengono usate principalmente nei materiali.
- Le mappe cubi possono essere usate per il cielo.
Formati di trama supportati
Tutte le trame fornite ad ARR devono essere in formato DDS. Preferibilmente con mipmap e la compressione della trama.
Caricamento delle trame
Quando si carica una trama, è necessario specificarne il tipo previsto. Se il tipo non corrisponde, il caricamento della trama non riesce. Il caricamento di una trama con lo stesso URI due volte restituirà lo stesso oggetto trama, perché si tratta di una risorsa condivisa.
Analogamente al caricamento dei modelli, sono disponibili due varianti di indirizzamento di una risorsa trama nella risorsa di archiviazione BLOB di origine:
- La trama può essere inviata direttamente tramite parametri della risorsa di archiviazione BLOB, nel caso in cui la risorsa di archiviazione BLOB sia collegata all'account. La funzione di caricamento pertinente in questo caso è
LoadTextureAsync
con parametroLoadTextureOptions
. - La risorsa trama può essere inviata tramite il relativo URI SAS. La funzione di caricamento pertinente è
LoadTextureFromSasAsync
con parametroLoadTextureFromSasOptions
. È consigliabile usare questa variante anche quando si caricano trame predefinite.
Il codice di esempio seguente illustra come caricare una trama:
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...
});
}
Si noti che nel caso dell'uso della variante SAS solo la funzione/parametro di caricamento differisce.
A seconda del tipo di trama da usare, è possibile che siano presenti restrizioni per il tipo di trama e il contenuto. La mappa di rugosità di un materiale PBR, ad esempio, deve essere in scala di grigi.
Documentazione sull'API
- Classe Texture C#
- Rendering C#Connessione ion. LoadTextureAsync()
- Rendering C#Connessione ion. LoadTextureFromSasAsync()
- Classe Texture C++
- Rendering C++Connessione ion::LoadTextureAsync()
- Rendering C++Connessione ion::LoadTextureFromSasAsync()