Support 2020.2

This commit is contained in:
Perfare 2021-01-14 05:23:19 +08:00
parent e1cf36aa3c
commit 32ce032655
10 changed files with 85 additions and 29 deletions

View File

@ -174,7 +174,7 @@ namespace AssetStudio
GetStreams(version); GetStreams(version);
} }
m_DataSize = reader.ReadBytes(reader.ReadInt32()); m_DataSize = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
} }
@ -653,9 +653,9 @@ namespace AssetStudio
if (version[0] >= 5) //5.0 and up if (version[0] >= 5) //5.0 and up
{ {
var m_BakedConvexCollisionMesh = reader.ReadBytes(reader.ReadInt32()); var m_BakedConvexCollisionMesh = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
var m_BakedTriangleCollisionMesh = reader.ReadBytes(reader.ReadInt32()); var m_BakedTriangleCollisionMesh = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
} }

View File

@ -15,7 +15,7 @@ namespace AssetStudio
var m_Loop = reader.ReadBoolean(); var m_Loop = reader.ReadBoolean();
reader.AlignStream(); reader.AlignStream();
m_AudioClip = new PPtr<AudioClip>(reader); m_AudioClip = new PPtr<AudioClip>(reader);
m_MovieData = reader.ReadBytes(reader.ReadInt32()); m_MovieData = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -5,6 +5,16 @@ using System.Linq;
namespace AssetStudio namespace AssetStudio
{ {
public class Hash128
{
public byte[] bytes;
public Hash128(BinaryReader reader)
{
bytes = reader.ReadBytes(16);
}
}
public class StructParameter public class StructParameter
{ {
public MatrixParameter[] m_MatrixParams; public MatrixParameter[] m_MatrixParams;
@ -438,33 +448,33 @@ namespace AssetStudio
kShaderGpuProgramGLES31AEP = 2, kShaderGpuProgramGLES31AEP = 2,
kShaderGpuProgramGLES31 = 3, kShaderGpuProgramGLES31 = 3,
kShaderGpuProgramGLES3 = 4, kShaderGpuProgramGLES3 = 4,
kShaderGpuProgramGLES = 5, kShaderGpuProgramGLES = 5,
kShaderGpuProgramGLCore32 = 6, kShaderGpuProgramGLCore32 = 6,
kShaderGpuProgramGLCore41 = 7, kShaderGpuProgramGLCore41 = 7,
kShaderGpuProgramGLCore43 = 8, kShaderGpuProgramGLCore43 = 8,
kShaderGpuProgramDX9VertexSM20 = 9, kShaderGpuProgramDX9VertexSM20 = 9,
kShaderGpuProgramDX9VertexSM30 = 10, kShaderGpuProgramDX9VertexSM30 = 10,
kShaderGpuProgramDX9PixelSM20 = 11, kShaderGpuProgramDX9PixelSM20 = 11,
kShaderGpuProgramDX9PixelSM30 = 12, kShaderGpuProgramDX9PixelSM30 = 12,
kShaderGpuProgramDX10Level9Vertex = 13, kShaderGpuProgramDX10Level9Vertex = 13,
kShaderGpuProgramDX10Level9Pixel = 14, kShaderGpuProgramDX10Level9Pixel = 14,
kShaderGpuProgramDX11VertexSM40 = 15, kShaderGpuProgramDX11VertexSM40 = 15,
kShaderGpuProgramDX11VertexSM50 = 16, kShaderGpuProgramDX11VertexSM50 = 16,
kShaderGpuProgramDX11PixelSM40 = 17, kShaderGpuProgramDX11PixelSM40 = 17,
kShaderGpuProgramDX11PixelSM50 = 18, kShaderGpuProgramDX11PixelSM50 = 18,
kShaderGpuProgramDX11GeometrySM40 = 19, kShaderGpuProgramDX11GeometrySM40 = 19,
kShaderGpuProgramDX11GeometrySM50 = 20, kShaderGpuProgramDX11GeometrySM50 = 20,
kShaderGpuProgramDX11HullSM50 = 21, kShaderGpuProgramDX11HullSM50 = 21,
kShaderGpuProgramDX11DomainSM50 = 22, kShaderGpuProgramDX11DomainSM50 = 22,
kShaderGpuProgramMetalVS = 23, kShaderGpuProgramMetalVS = 23,
kShaderGpuProgramMetalFS = 24, kShaderGpuProgramMetalFS = 24,
kShaderGpuProgramSPIRV = 25, kShaderGpuProgramSPIRV = 25,
kShaderGpuProgramConsoleVS = 26, kShaderGpuProgramConsoleVS = 26,
kShaderGpuProgramConsoleFS = 27, kShaderGpuProgramConsoleFS = 27,
kShaderGpuProgramConsoleHS = 28, kShaderGpuProgramConsoleHS = 28,
kShaderGpuProgramConsoleDS = 29, kShaderGpuProgramConsoleDS = 29,
kShaderGpuProgramConsoleGS = 30, kShaderGpuProgramConsoleGS = 30,
kShaderGpuProgramRayTracing = 31, kShaderGpuProgramRayTracing = 31,
}; };
public class SerializedSubProgram public class SerializedSubProgram
@ -599,6 +609,10 @@ namespace AssetStudio
public class SerializedPass public class SerializedPass
{ {
public Hash128[] m_EditorDataHash;
public byte[] m_Platforms;
public ushort[] m_LocalKeywordMask;
public ushort[] m_GlobalKeywordMask;
public KeyValuePair<string, int>[] m_NameIndices; public KeyValuePair<string, int>[] m_NameIndices;
public PassType m_Type; public PassType m_Type;
public SerializedShaderState m_State; public SerializedShaderState m_State;
@ -619,6 +633,23 @@ namespace AssetStudio
{ {
var version = reader.version; var version = reader.version;
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
int numEditorDataHash = reader.ReadInt32();
m_EditorDataHash = new Hash128[numEditorDataHash];
for (int i = 0; i < numEditorDataHash; i++)
{
m_EditorDataHash[i] = new Hash128(reader);
}
reader.AlignStream();
m_Platforms = reader.ReadUInt8Array();
reader.AlignStream();
m_LocalKeywordMask = reader.ReadUInt16Array();
reader.AlignStream();
m_GlobalKeywordMask = reader.ReadUInt16Array();
reader.AlignStream();
}
int numIndices = reader.ReadInt32(); int numIndices = reader.ReadInt32();
m_NameIndices = new KeyValuePair<string, int>[numIndices]; m_NameIndices = new KeyValuePair<string, int>[numIndices];
for (int i = 0; i < numIndices; i++) for (int i = 0; i < numIndices; i++)
@ -793,17 +824,17 @@ namespace AssetStudio
compressedLengths = reader.ReadUInt32Array(); compressedLengths = reader.ReadUInt32Array();
decompressedLengths = reader.ReadUInt32Array(); decompressedLengths = reader.ReadUInt32Array();
} }
compressedBlob = reader.ReadBytes(reader.ReadInt32()); compressedBlob = reader.ReadUInt8Array();
} }
else else
{ {
m_Script = reader.ReadBytes(reader.ReadInt32()); m_Script = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
var m_PathName = reader.ReadAlignedString(); var m_PathName = reader.ReadAlignedString();
if (version[0] == 5 && version[1] >= 3) //5.3 - 5.4 if (version[0] == 5 && version[1] >= 3) //5.3 - 5.4
{ {
decompressedSize = reader.ReadUInt32(); decompressedSize = reader.ReadUInt32();
m_SubProgramBlob = reader.ReadBytes(reader.ReadInt32()); m_SubProgramBlob = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -124,7 +124,7 @@ namespace AssetStudio
m_SubMeshes[i] = new SubMesh(reader); m_SubMeshes[i] = new SubMesh(reader);
} }
m_IndexBuffer = reader.ReadBytes(reader.ReadInt32()); m_IndexBuffer = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
m_VertexData = new VertexData(reader); m_VertexData = new VertexData(reader);

View File

@ -13,6 +13,7 @@ namespace AssetStudio
public Vector4 uvTransform; public Vector4 uvTransform;
public float downscaleMultiplier; public float downscaleMultiplier;
public SpriteSettings settingsRaw; public SpriteSettings settingsRaw;
public SecondarySpriteTexture[] secondaryTextures;
public SpriteAtlasData(ObjectReader reader) public SpriteAtlasData(ObjectReader reader)
{ {
@ -28,6 +29,16 @@ namespace AssetStudio
uvTransform = reader.ReadVector4(); uvTransform = reader.ReadVector4();
downscaleMultiplier = reader.ReadSingle(); downscaleMultiplier = reader.ReadSingle();
settingsRaw = new SpriteSettings(reader); settingsRaw = new SpriteSettings(reader);
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var secondaryTexturesSize = reader.ReadInt32();
secondaryTextures = new SecondarySpriteTexture[secondaryTexturesSize];
for (int i = 0; i < secondaryTexturesSize; i++)
{
secondaryTextures[i] = new SecondarySpriteTexture(reader);
}
reader.AlignStream();
}
} }
} }

View File

@ -12,7 +12,7 @@ namespace AssetStudio
public TextAsset(ObjectReader reader) : base(reader) public TextAsset(ObjectReader reader) : base(reader)
{ {
m_Script = reader.ReadBytes(reader.ReadInt32()); m_Script = reader.ReadUInt8Array();
} }
} }
} }

View File

@ -13,6 +13,10 @@ namespace AssetStudio
{ {
var m_ForcedFallbackFormat = reader.ReadInt32(); var m_ForcedFallbackFormat = reader.ReadInt32();
var m_DownscaleFallback = reader.ReadBoolean(); var m_DownscaleFallback = reader.ReadBoolean();
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var m_IsAlphaChannelOptional = reader.ReadBoolean();
}
reader.AlignStream(); reader.AlignStream();
} }
} }

View File

@ -120,6 +120,11 @@ namespace AssetStudio
{ {
var m_ColorSpace = reader.ReadInt32(); var m_ColorSpace = reader.ReadInt32();
} }
if (version[0] > 2020 || (version[0] == 2020 && version[1] >= 2)) //2020.2 and up
{
var m_PlatformBlob = reader.ReadUInt8Array();
reader.AlignStream();
}
var image_data_size = reader.ReadInt32(); var image_data_size = reader.ReadInt32();
if (image_data_size == 0 && ((version[0] == 5 && version[1] >= 3) || version[0] > 5))//5.3.0 and up if (image_data_size == 0 && ((version[0] == 5 && version[1] >= 3) || version[0] > 5))//5.3.0 and up
{ {

View File

@ -102,6 +102,11 @@ namespace AssetStudio
return ReadArray(reader.ReadBoolean, reader.ReadInt32()); return ReadArray(reader.ReadBoolean, reader.ReadInt32());
} }
public static byte[] ReadUInt8Array(this BinaryReader reader)
{
return reader.ReadBytes(reader.ReadInt32());
}
public static ushort[] ReadUInt16Array(this BinaryReader reader) public static ushort[] ReadUInt16Array(this BinaryReader reader)
{ {
return ReadArray(reader.ReadUInt16, reader.ReadInt32()); return ReadArray(reader.ReadUInt16, reader.ReadInt32());

View File

@ -663,7 +663,7 @@ namespace AssetStudio
m_LocalKeywords[i] = reader.ReadAlignedString(); m_LocalKeywords[i] = reader.ReadAlignedString();
} }
} }
m_ProgramCode = reader.ReadBytes(reader.ReadInt32()); m_ProgramCode = reader.ReadUInt8Array();
reader.AlignStream(); reader.AlignStream();
//TODO //TODO