diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/TextureSamplerUtil.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/TextureSamplerUtil.cs index 255240d5a..528fc12b4 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/TextureSamplerUtil.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/TextureSamplerUtil.cs @@ -24,18 +24,27 @@ namespace UniGLTF } } + /// + /// MIPMAP: disable, enable, blend + /// + /// + /// public static glFilter ExportMinFilter(Texture2D texture) { if (texture.mipmapCount > 1) { switch (texture.filterMode) { + // mipmap: enable case FilterMode.Point: - return glFilter.NEAREST_MIPMAP_LINEAR; + return glFilter.NEAREST_MIPMAP_NEAREST; + // mipmap: enable case FilterMode.Bilinear: return glFilter.LINEAR_MIPMAP_NEAREST; + // mipmap: blend + // glFilter.NEAREST_MIPMAP_LINEAR is not exists case FilterMode.Trilinear: return glFilter.LINEAR_MIPMAP_LINEAR; @@ -45,6 +54,7 @@ namespace UniGLTF } else { + // mipmap: disable switch (texture.filterMode) { case FilterMode.Point: @@ -73,20 +83,30 @@ namespace UniGLTF { switch (filterMode) { + // mipmap: disable case glFilter.NEAREST: return (FilterMode.Point, false); + // mipmap: disable case glFilter.NONE: case glFilter.LINEAR: return (FilterMode.Bilinear, false); + // mipmap: enable case glFilter.NEAREST_MIPMAP_NEAREST: - case glFilter.NEAREST_MIPMAP_LINEAR: return (FilterMode.Point, true); + // mipmap: enable case glFilter.LINEAR_MIPMAP_NEAREST: return (FilterMode.Bilinear, true); + // mipmap: blend + case glFilter.NEAREST_MIPMAP_LINEAR: + // not exists in unity. + // downgrade mipmap: blend => enable + return (FilterMode.Point, true); + + // mipmap: blend case glFilter.LINEAR_MIPMAP_LINEAR: return (FilterMode.Trilinear, true);