Merge branch 'master' of https://github.com/vrm-c/UniVRM into legacyMigration

This commit is contained in:
Masataka SUMI 2021-06-22 20:03:26 +09:00
commit 2fa03bbcdd

View File

@ -8,12 +8,12 @@ namespace VRMShaders
{
public class TextureFactory : IResponsibilityForDestroyObjects
{
private readonly ITextureDeserializer _textureDeserializer;
private readonly IReadOnlyDictionary<SubAssetKey, Texture> _externalMap;
private readonly bool _isLegacySquaredRoughness;
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>
@ -29,18 +29,13 @@ namespace VRMShaders
IReadOnlyDictionary<SubAssetKey, Texture> externalTextures,
bool isLegacySquaredRoughness)
{
_textureDeserializer = textureDeserializer;
TextureDeserializer = textureDeserializer;
_externalMap = externalTextures;
_isLegacySquaredRoughness = isLegacySquaredRoughness;
}
public void Dispose()
{
foreach (var kv in _temporaryTextures)
{
UnityObjectDestoyer.DestroyRuntimeOrEditor(kv.Value);
}
_temporaryTextures.Clear();
_textureCache.Clear();
}
@ -84,7 +79,7 @@ namespace VRMShaders
// > contrary to Unitys 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);
@ -99,12 +94,12 @@ namespace VRMShaders
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,
@ -120,7 +115,7 @@ namespace VRMShaders
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);
@ -129,7 +124,7 @@ namespace VRMShaders
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);
@ -138,8 +133,6 @@ namespace VRMShaders
default:
throw new ArgumentOutOfRangeException();
}
throw new NotImplementedException();
}
}
}