diff --git a/Runtime/PSXTexture2D.cs b/Runtime/PSXTexture2D.cs index e7cd2ee..ecb347d 100644 --- a/Runtime/PSXTexture2D.cs +++ b/Runtime/PSXTexture2D.cs @@ -125,7 +125,8 @@ namespace SplashEdit.RuntimeCode public static PSXTexture2D CreateFromTexture2D(Texture2D inputTexture, PSXBPP bitDepth) { PSXTexture2D psxTex = new PSXTexture2D(); - + Utils.SetTextureImporterFormat(inputTexture, true); + psxTex.Width = inputTexture.width; psxTex.QuantizedWidth = bitDepth == PSXBPP.TEX_4BIT ? inputTexture.width / 4 : bitDepth == PSXBPP.TEX_8BIT ? inputTexture.width / 2 : diff --git a/Runtime/Utils.cs b/Runtime/Utils.cs index bf9c30f..143dd47 100644 --- a/Runtime/Utils.cs +++ b/Runtime/Utils.cs @@ -307,6 +307,8 @@ namespace SplashEdit.RuntimeCode public static class Utils { + private static int MaxTextureSize => 256; + public static (Rect, Rect) BufferForResolution(Vector2 selectedResolution, bool verticalLayout, Vector2 offset = default) { if (offset == default) @@ -330,8 +332,28 @@ namespace SplashEdit.RuntimeCode }; } - public static byte ColorUnityToPSX(float v) => (byte)(Mathf.Clamp(v * 255, 0, 255)); + + public static void SetTextureImporterFormat(Texture2D texture, bool isReadable) + { + if (texture == null) + { + return; + } + string assetPath = AssetDatabase.GetAssetPath(texture); + var tImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; + if (tImporter != null) + { + if (tImporter.maxTextureSize > MaxTextureSize) + { + tImporter.maxTextureSize = MaxTextureSize; + } + tImporter.isReadable = isReadable; + + AssetDatabase.ImportAsset(assetPath); + AssetDatabase.Refresh(); + } + } } }