mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-27 22:00:23 -04:00
2019.3 support
This commit is contained in:
parent
d96cc3c762
commit
9d32a9dd6a
@ -46,6 +46,10 @@ namespace AssetStudio
|
|||||||
var m_MotionVectors = reader.ReadByte();
|
var m_MotionVectors = reader.ReadByte();
|
||||||
var m_LightProbeUsage = reader.ReadByte();
|
var m_LightProbeUsage = reader.ReadByte();
|
||||||
var m_ReflectionProbeUsage = reader.ReadByte();
|
var m_ReflectionProbeUsage = reader.ReadByte();
|
||||||
|
if (version[0] > 2019 || (version[0] == 2019 && version[0] >= 3)) //2019.3 and up
|
||||||
|
{
|
||||||
|
var m_RayTracingMode = reader.ReadByte();
|
||||||
|
}
|
||||||
reader.AlignStream();
|
reader.AlignStream();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -591,6 +591,7 @@ namespace AssetStudio
|
|||||||
public SerializedProgram progGeometry;
|
public SerializedProgram progGeometry;
|
||||||
public SerializedProgram progHull;
|
public SerializedProgram progHull;
|
||||||
public SerializedProgram progDomain;
|
public SerializedProgram progDomain;
|
||||||
|
public SerializedProgram progRayTracing;
|
||||||
public bool m_HasInstancingVariant;
|
public bool m_HasInstancingVariant;
|
||||||
public string m_UseName;
|
public string m_UseName;
|
||||||
public string m_Name;
|
public string m_Name;
|
||||||
@ -616,6 +617,10 @@ namespace AssetStudio
|
|||||||
progGeometry = new SerializedProgram(reader);
|
progGeometry = new SerializedProgram(reader);
|
||||||
progHull = new SerializedProgram(reader);
|
progHull = new SerializedProgram(reader);
|
||||||
progDomain = new SerializedProgram(reader);
|
progDomain = new SerializedProgram(reader);
|
||||||
|
if (version[0] > 2019 || (version[0] == 2019 && version[0] >= 3)) //2019.3 and up
|
||||||
|
{
|
||||||
|
progRayTracing = new SerializedProgram(reader);
|
||||||
|
}
|
||||||
m_HasInstancingVariant = reader.ReadBoolean();
|
m_HasInstancingVariant = reader.ReadBoolean();
|
||||||
if (version[0] >= 2018) //2018 and up
|
if (version[0] >= 2018) //2018 and up
|
||||||
{
|
{
|
||||||
@ -759,9 +764,18 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
m_ParsedForm = new SerializedShader(reader);
|
m_ParsedForm = new SerializedShader(reader);
|
||||||
platforms = reader.ReadUInt32Array().Select(x => (ShaderCompilerPlatform)x).ToArray();
|
platforms = reader.ReadUInt32Array().Select(x => (ShaderCompilerPlatform)x).ToArray();
|
||||||
offsets = reader.ReadUInt32Array();
|
if (version[0] > 2019 || (version[0] == 2019 && version[0] >= 3)) //2019.3 and up
|
||||||
compressedLengths = reader.ReadUInt32Array();
|
{
|
||||||
decompressedLengths = reader.ReadUInt32Array();
|
offsets = reader.ReadUInt32ArrayArray().Select(x => x[0]).ToArray();
|
||||||
|
compressedLengths = reader.ReadUInt32ArrayArray().Select(x => x[0]).ToArray();
|
||||||
|
decompressedLengths = reader.ReadUInt32ArrayArray().Select(x => x[0]).ToArray();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
offsets = reader.ReadUInt32Array();
|
||||||
|
compressedLengths = reader.ReadUInt32Array();
|
||||||
|
decompressedLengths = reader.ReadUInt32Array();
|
||||||
|
}
|
||||||
compressedBlob = reader.ReadBytes(reader.ReadInt32());
|
compressedBlob = reader.ReadBytes(reader.ReadInt32());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -122,6 +122,11 @@ namespace AssetStudio
|
|||||||
return ReadArray(reader.ReadUInt32, reader.ReadInt32());
|
return ReadArray(reader.ReadUInt32, reader.ReadInt32());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static uint[][] ReadUInt32ArrayArray(this BinaryReader reader)
|
||||||
|
{
|
||||||
|
return ReadArray(reader.ReadUInt32Array, reader.ReadInt32());
|
||||||
|
}
|
||||||
|
|
||||||
public static uint[] ReadUInt32Array(this BinaryReader reader, int length)
|
public static uint[] ReadUInt32Array(this BinaryReader reader, int length)
|
||||||
{
|
{
|
||||||
return ReadArray(reader.ReadUInt32, length);
|
return ReadArray(reader.ReadUInt32, length);
|
||||||
|
@ -186,6 +186,11 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
//var userInformation = reader.ReadStringToNull();
|
//var userInformation = reader.ReadStringToNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (header.m_Version >= 21)
|
||||||
|
{
|
||||||
|
//var unknown = reader.ReadInt32();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetVersion(string stringVersion)
|
public void SetVersion(string stringVersion)
|
||||||
@ -307,7 +312,10 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
reader.Position += stringBufferSize;
|
reader.Position += stringBufferSize;
|
||||||
}
|
}
|
||||||
|
if (header.m_Version >= 21)
|
||||||
|
{
|
||||||
|
reader.Position += 4;
|
||||||
|
}
|
||||||
string ReadString(BinaryReader stringBufferReader, uint value)
|
string ReadString(BinaryReader stringBufferReader, uint value)
|
||||||
{
|
{
|
||||||
var isOffset = (value & 0x80000000) == 0;
|
var isOffset = (value & 0x80000000) == 0;
|
||||||
|
@ -20,7 +20,7 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
using (var blobReader = new BinaryReader(new MemoryStream(decompressedBytes)))
|
using (var blobReader = new BinaryReader(new MemoryStream(decompressedBytes)))
|
||||||
{
|
{
|
||||||
var program = new ShaderProgram(blobReader);
|
var program = new ShaderProgram(blobReader, shader.version);
|
||||||
return program.Export(Encoding.UTF8.GetString(shader.m_Script));
|
return program.Export(Encoding.UTF8.GetString(shader.m_Script));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
using (var blobReader = new BinaryReader(new MemoryStream(decompressedBytes)))
|
using (var blobReader = new BinaryReader(new MemoryStream(decompressedBytes)))
|
||||||
{
|
{
|
||||||
var program = new ShaderProgram(blobReader);
|
var program = new ShaderProgram(blobReader, shader.version);
|
||||||
var m_Script = ConvertSerializedShader(shader.m_ParsedForm, shader.platforms[i]);
|
var m_Script = ConvertSerializedShader(shader.m_ParsedForm, shader.platforms[i]);
|
||||||
strs[i] = header + program.Export(m_Script);
|
strs[i] = header + program.Export(m_Script);
|
||||||
}
|
}
|
||||||
@ -556,13 +556,22 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
private ShaderSubProgram[] m_SubPrograms;
|
private ShaderSubProgram[] m_SubPrograms;
|
||||||
|
|
||||||
public ShaderProgram(BinaryReader reader)
|
public ShaderProgram(BinaryReader reader, int[] version)
|
||||||
{
|
{
|
||||||
var subProgramsCapacity = reader.ReadInt32();
|
var subProgramsCapacity = reader.ReadInt32();
|
||||||
m_SubPrograms = new ShaderSubProgram[subProgramsCapacity];
|
m_SubPrograms = new ShaderSubProgram[subProgramsCapacity];
|
||||||
|
int entrySize;
|
||||||
|
if (version[0] > 2019 || (version[0] == 2019 && version[0] >= 3)) //2019.3 and up
|
||||||
|
{
|
||||||
|
entrySize = 12;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
entrySize = 8;
|
||||||
|
}
|
||||||
for (int i = 0; i < subProgramsCapacity; i++)
|
for (int i = 0; i < subProgramsCapacity; i++)
|
||||||
{
|
{
|
||||||
reader.BaseStream.Position = 4 + i * 8;
|
reader.BaseStream.Position = 4 + i * entrySize;
|
||||||
var offset = reader.ReadInt32();
|
var offset = reader.ReadInt32();
|
||||||
reader.BaseStream.Position = offset;
|
reader.BaseStream.Position = offset;
|
||||||
m_SubPrograms[i] = new ShaderSubProgram(reader);
|
m_SubPrograms[i] = new ShaderSubProgram(reader);
|
||||||
|
Loading…
Reference in New Issue
Block a user