Add Reflection and Light probes

This commit is contained in:
Phillip Stephens
2023-02-16 10:39:42 -08:00
parent 57f3ce1835
commit dae5e5a0b3
4 changed files with 99 additions and 4 deletions
+3 -3
View File
@@ -6,10 +6,10 @@ typedef struct
uint64 size <format=hex>;
uint64 unk1;
FourCC id;
uint32 versionA <format=decimal>;
uint32 versionB <format=decimal>;
uint32 readerVersion <format=decimal>;
uint32 writerVersion <format=decimal>;
} FormDescriptor <
name=(Str("%s v%d form header", id, versionA)),
name=(Str("%s rv%d wv%d form header", id, readerVersion, writerVersion)),
comment=(SizeComment(size)),
bgcolor=cLtAqua
>;
+74
View File
@@ -0,0 +1,74 @@
#ifndef _CLIGHTPROBEDATA
#define _CLIGHTPROBEDATA
#include "CChunkDescriptor.bt"
#include "CFormDescriptor.bt"
#include "NTextureFormat.bt"
#include "CVector3f.bt"
#include "CVector3i.bt"
typedef struct CBakedLightingUniformProbeGridIndex {
ushort unk1;
ushort unk2;
ushort unk3;
} CBakedLightingUniformProbeGridIndex;
struct LightProbeBundleHeader {
uint unk1;
uint unk2;
CVector3f unk3;
CBakedLightingUniformProbeGridIndex unk4;
CBakedLightingUniformProbeGridIndex unk5;
};
struct SReadInfo {
uchar unk1;
uint unk2;
uint unk3;
};
struct ReadInfoVector {
uint count;
SReadInfo readInfos[count];
};
struct SCompressedBufferInfo {
uint unk1;
uint unk2;
uint unk3;
uint unk4;
uint unk5;
};
struct SMetaData {
uint unk1;
uint unk2;
uint unk3;
uint unk4;
uint unk5;
uint unk6;
uint readInfoCount;
SReadInfo readInfos[readInfoCount];
uint compressedBufferInfoCount;
SCompressedBufferInfo compressedBufferInfos[compressedBufferInfoCount];
};
struct LightProbeBundle {
SMetaData metaData;
CVector3i unkVector;
uint unk;
FormDescriptor textureForm;
NTextureFormat txtrChunk(textureForm.size);
};
typedef struct CLightProbeData(uint64 size) {
local uint64 start <hidden=true> = FTell();
ChunkDescriptor phdr;
LightProbeBundleHeader bundleHeader;
ChunkDescriptor ptext;
while (FTell() < start + size) {
LightProbeBundle bundle;
}
} CLightProbeData;
#endif// _CLIGHTPROBEDATA
+13
View File
@@ -0,0 +1,13 @@
#ifndef _CREFLECTIONPROBE
#define _CREFLECTIONPROBE
#include "CChunkDescriptor.bt"
typedef struct CReflectionProbeData {
ChunkDescriptor chunkHeader;
uint unk1;
GUID textureId;
float unk2;
} CReflectionProbeData;
#endif// _CREFLECTIONPROBE
+9 -1
View File
@@ -9,12 +9,14 @@
// Files
#include "CCharInfo.bt"
#include "CLightProbeData.bt"
#include "CGraphicsModel.bt"
#include "CPakFile.bt"
#include "MessageStudioBinaryText.bt"
#include "MaterialArchive.bt"
#include "CVectorField.bt"
#include "CAABoxCollisionTree.bt"
#include "CReflectionProbeData.bt"
//#include "CRuleSet.bt"
#include "CScaleformFlashLibrary.bt"
@@ -36,6 +38,9 @@ typedef struct
Assert("Invalid version!");
}
break;
case "LTPB":
CLightProbeData lightProbe(form.size);
break;
case "CLSN":
CAABoxCollisionTree aaboxCollisionTree(form.size);
break;
@@ -56,6 +61,9 @@ typedef struct
case "TXTR":
NTextureFormat texture(form.size);
break;
case "REFL":
CReflectionProbeData probeData;
break;
/*case "RULE":
CRuleSet rulesetconfig(form.size);
break;*/
@@ -78,7 +86,7 @@ local uint isDKCTF <hidden=true> = (ReadInt(4) & 0xFFFFFF) == 0;
if (!isDKCTF) {
LittleEndian();
}
File file <bgcolor=cGray, name=(Str("%s v%d file", form.id, form.versionA))>;
File file <bgcolor=cGray, name=(Str("%s rv%d wv%d file", form.id, form.readerVersion, form.readerVersion))>;
// Custom footer for extracted files
if (ReadString(FTell(), 4) == "RFRM")