using System;
using System.Threading.Tasks;
using UnityEngine;
namespace VRMShaders
{
///
/// Unity の ImageConversion.LoadImage を用いて PNG/JPG の読み込みを実現する
///
public sealed class UnityTextureDeserializer : ITextureDeserializer
{
public async Task LoadTextureAsync(DeserializingTextureInfo textureInfo, IAwaitCaller awaitCaller)
{
switch (textureInfo.DataMimeType)
{
case "image/png":
break;
case "image/jpeg":
break;
default:
Debug.LogWarning($"Texture image MIME type `{textureInfo.DataMimeType}` is not supported.");
break;
}
var texture = new Texture2D(2, 2, TextureFormat.ARGB32, textureInfo.UseMipmap, textureInfo.ColorSpace == ColorSpace.Linear);
if (textureInfo.ImageData != null)
{
texture.LoadImage(textureInfo.ImageData);
texture.wrapModeU = textureInfo.WrapModeU;
texture.wrapModeV = textureInfo.WrapModeV;
texture.filterMode = textureInfo.FilterMode;
await awaitCaller.NextFrame();
}
return texture;
}
}
}