Skip to content

Commit

Permalink
Merge pull request #1063 from Santarh/publicTextureDeserializer
Browse files Browse the repository at this point in the history
Public ITextureDeserializer
  • Loading branch information
ousttrue authored Jun 22, 2021
2 parents e0a9fc1 + 95dd4fd commit da43d32
Showing 1 changed file with 8 additions and 15 deletions.
23 changes: 8 additions & 15 deletions Assets/VRMShaders/GLTF/IO/Runtime/TextureFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ namespace VRMShaders
{
public class TextureFactory : IResponsibilityForDestroyObjects
{
private readonly ITextureDeserializer _textureDeserializer;
private readonly IReadOnlyDictionary<SubAssetKey, Texture> _externalMap;
private readonly Dictionary<SubAssetKey, Texture> _temporaryTextures = new Dictionary<SubAssetKey, Texture>();
private readonly Dictionary<SubAssetKey, Texture> _textureCache = new Dictionary<SubAssetKey, Texture>();

public ITextureDeserializer TextureDeserializer { get; }

/// <summary>
/// Importer が動的に生成した Texture
/// </summary>
Expand All @@ -25,17 +25,12 @@ public class TextureFactory : IResponsibilityForDestroyObjects

public TextureFactory(ITextureDeserializer textureDeserializer, IReadOnlyDictionary<SubAssetKey, Texture> externalTextures)
{
_textureDeserializer = textureDeserializer;
TextureDeserializer = textureDeserializer;
_externalMap = externalTextures;
}

public void Dispose()
{
foreach (var kv in _temporaryTextures)
{
UnityObjectDestoyer.DestroyRuntimeOrEditor(kv.Value);
}
_temporaryTextures.Clear();
_textureCache.Clear();
}

Expand Down Expand Up @@ -79,7 +74,7 @@ public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc)
// > contrary to Unity’s usual convention of using Y as “up”
// https://docs.unity3d.com/2018.4/Documentation/Manual/StandardShaderMaterialParameterNormalMap.html
var data0 = await texDesc.Index0();
var rawTexture = await _textureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
var rawTexture = await TextureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
rawTexture.name = subAssetKey.Name;
rawTexture.SetSampler(texDesc.Sampler);
_textureCache.Add(subAssetKey, rawTexture);
Expand All @@ -94,12 +89,12 @@ public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc)
if (texDesc.Index0 != null)
{
var data0 = await texDesc.Index0();
metallicRoughnessTexture = await _textureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
metallicRoughnessTexture = await TextureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
}
if (texDesc.Index1 != null)
{
var data1 = await texDesc.Index1();
occlusionTexture = await _textureDeserializer.LoadTextureAsync(data1, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
occlusionTexture = await TextureDeserializer.LoadTextureAsync(data1, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
}

var combinedTexture = OcclusionMetallicRoughnessConverter.Import(metallicRoughnessTexture,
Expand All @@ -115,7 +110,7 @@ public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc)
case TextureImportTypes.sRGB:
{
var data0 = await texDesc.Index0();
var rawTexture = await _textureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.sRGB);
var rawTexture = await TextureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.sRGB);
rawTexture.name = subAssetKey.Name;
rawTexture.SetSampler(texDesc.Sampler);
_textureCache.Add(subAssetKey, rawTexture);
Expand All @@ -124,7 +119,7 @@ public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc)
case TextureImportTypes.Linear:
{
var data0 = await texDesc.Index0();
var rawTexture = await _textureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
var rawTexture = await TextureDeserializer.LoadTextureAsync(data0, texDesc.Sampler.EnableMipMap, ColorSpace.Linear);
rawTexture.name = subAssetKey.Name;
rawTexture.SetSampler(texDesc.Sampler);
_textureCache.Add(subAssetKey, rawTexture);
Expand All @@ -133,8 +128,6 @@ public async Task<Texture> GetTextureAsync(TextureDescriptor texDesc)
default:
throw new ArgumentOutOfRangeException();
}

throw new NotImplementedException();
}
}
}

0 comments on commit da43d32

Please sign in to comment.