using System; using System.Threading.Tasks; using UnityEngine; namespace VRMShaders { /// /// get bytes for /// /// runtime: /// Texture2D.LoadImage /// extact: /// File.WriteAllBytes /// /// public delegate Task GetTextureBytesAsync(); /// /// 入力 glTF ファイルを Import した結果生成される、UnityEngine.Texture のアセット 1 つを確定させる Import 情報。 /// public readonly struct TextureDescriptor { public readonly string UnityObjectName; public readonly string Ext; public readonly string Uri; public readonly Vector2 Offset; public readonly Vector2 Scale; public readonly SamplerParam Sampler; public readonly TextureImportTypes TextureType; // Parameters for Type:StandardMap public readonly float MetallicFactor; public readonly float RoughnessFactor; public readonly GetTextureBytesAsync Index0; public readonly GetTextureBytesAsync Index1; public readonly GetTextureBytesAsync Index2; public readonly GetTextureBytesAsync Index3; public readonly GetTextureBytesAsync Index4; public readonly GetTextureBytesAsync Index5; /// /// この Texture が Unity に実アセットとして存在する際の一意な Key /// public SubAssetKey SubAssetKey => new SubAssetKey(SubAssetKey.TextureType, UnityObjectName); public TextureDescriptor(string name, string ext, string uri, Vector2 offset, Vector2 scale, SamplerParam sampler, TextureImportTypes textureType, float metallicFactor, float roughnessFactor, GetTextureBytesAsync i0, GetTextureBytesAsync i1, GetTextureBytesAsync i2, GetTextureBytesAsync i3, GetTextureBytesAsync i4, GetTextureBytesAsync i5) { UnityObjectName = name; Ext = ext; Uri = uri; Offset = offset; Scale = scale; Sampler = sampler; TextureType = textureType; MetallicFactor = metallicFactor; RoughnessFactor = roughnessFactor; Index0 = i0; Index1 = i1; Index2 = i2; Index3 = i3; Index4 = i4; Index5 = i5; } } }