sead
Loading...
Searching...
No Matches
aglResShaderArchive.h
Go to the documentation of this file.
1#pragma once
2
3#include <common/aglResBinaryShaderProgram.h>
4#include <common/aglResShaderBinary.h>
5#include <common/aglResShaderProgram.h>
6#include <common/aglResShaderSource.h>
7
8namespace agl {
9
11{
12 union
13 {
14 char mSignature[4];
16 };
21 // char mName[];
22
23public:
24 static u32 getVersion();
25 static u32 getSignature();
26 static const char* getExtension();
27
28private:
29 static const u32 cVersion = 11;
30 static const u32 cSignature = 0x53484141; // SHAA
31 static const u32 cEndianCheckBit = 0x01000001;
32
33 friend class ResCommon<ResShaderArchiveData>;
34 friend class ResShaderArchive;
35};
36static_assert(sizeof(ResShaderArchiveData) == 0x14, "agl::ResShaderArchiveData size mismatch");
37
39{
40 AGL_RES_COMMON(ResShaderArchive)
42
43public:
44 const char* getName() const
45 {
46 const DataType* const data = ptr();
47 return (const char*)(data + 1);
48 }
49
51 {
52 const DataType* const data = ptr();
53 return (const ResShaderProgramArrayData*)((uintptr_t)(data + 1) + data->mNameLen);
54 }
55
57 {
58 return getResShaderProgramArray().getNum();
59 }
60
62 {
63 const ResShaderProgramArrayData* const data = getResShaderProgramArray().ptr();
64 return (const ResShaderSourceArrayData*)((uintptr_t)data + data->mSize);
65 }
66
68 {
69 return getResShaderSourceArray().getNum();
70 }
71
72 bool setUp();
73};
74
76{
77 union
78 {
79 char mSignature[4];
81 };
87 // char mName[];
88
89public:
90 static u32 getVersion();
91 static u32 getSignature();
92 static const char* getExtension();
93
94private:
95 static const u32 cVersion = 8;
96 static const u32 cSignature = 0x53484142; // SHAB
97 static const u32 cEndianCheckBit = 0x01000001;
98
101};
102static_assert(sizeof(ResBinaryShaderArchiveData) == 0x18, "agl::ResBinaryShaderArchiveData size mismatch");
103
105{
106 AGL_RES_COMMON(ResBinaryShaderArchive)
108
109public:
110 const char* getName() const
111 {
112 const DataType* const data = ptr();
113 return (const char*)(data + 1);
114 }
115
117 {
118 const DataType* const data = ptr();
119 return (const ResShaderBinaryArrayData*)((uintptr_t)(data + 1) + data->mNameLen);
120 }
121
123 {
124 return getResShaderBinaryArray().getNum();
125 }
126
128 {
129 const ResShaderBinaryArrayData* const data = getResShaderBinaryArray().ptr();
130 return (const ResBinaryShaderProgramArrayData*)((uintptr_t)data + data->mSize);
131 }
132
134 {
135 return getResBinaryShaderProgramArray().getNum();
136 }
137
138 bool setUp(bool le_resolve_pointers);
139};
140
141}
#define AGL_RES_COMMON(class_name)
Definition aglResCommon.h:76
#define AGL_RES_FILE_HEADER()
Definition aglResCommon.h:88
Definition aglResShaderArchive.h:105
ResBinaryShaderProgramArray getResBinaryShaderProgramArray() const
Definition aglResShaderArchive.h:127
bool setUp(bool le_resolve_pointers)
Definition aglResShaderArchive.cpp:320
s32 getResShaderBinaryNum() const
Definition aglResShaderArchive.h:122
const char * getName() const
Definition aglResShaderArchive.h:110
s32 getResBinaryShaderProgramNum() const
Definition aglResShaderArchive.h:133
ResShaderBinaryArray getResShaderBinaryArray() const
Definition aglResShaderArchive.h:116
Definition aglResCommon.h:12
Definition aglResShaderArchive.h:39
ResShaderSourceArray getResShaderSourceArray() const
Definition aglResShaderArchive.h:61
const char * getName() const
Definition aglResShaderArchive.h:44
s32 getResShaderSourceNum() const
Definition aglResShaderArchive.h:67
s32 getResShaderProgramNum() const
Definition aglResShaderArchive.h:56
ResShaderProgramArray getResShaderProgramArray() const
Definition aglResShaderArchive.h:50
bool setUp()
Definition aglResShaderArchive.cpp:280
Definition aglDisplayList.cpp:5
ResArray< ResShaderProgram > ResShaderProgramArray
Definition aglResShaderProgram.h:40
ResArray< ResShaderBinary > ResShaderBinaryArray
Definition aglResShaderBinary.h:37
ResShaderProgramArray::DataType ResShaderProgramArrayData
Definition aglResShaderProgram.h:42
ResArray< ResBinaryShaderProgram > ResBinaryShaderProgramArray
Definition aglResBinaryShaderProgram.h:43
ResShaderBinaryArray::DataType ResShaderBinaryArrayData
Definition aglResShaderBinary.h:39
ResArray< ResShaderSource > ResShaderSourceArray
Definition aglResShaderSource.h:36
Definition aglResShaderArchive.h:76
u32 mNameLen
Definition aglResShaderArchive.h:86
u32 mEndian
Definition aglResShaderArchive.h:84
static const char * getExtension()
Definition aglResShaderArchive.cpp:383
static const u32 cSignature
Definition aglResShaderArchive.h:96
u32 mVersion
Definition aglResShaderArchive.h:82
u32 mFileSize
Definition aglResShaderArchive.h:83
static const u32 cVersion
Definition aglResShaderArchive.h:95
u32 mSigWord
Definition aglResShaderArchive.h:80
char mSignature[4]
Definition aglResShaderArchive.h:79
static const u32 cEndianCheckBit
Definition aglResShaderArchive.h:97
u32 mResolved
Definition aglResShaderArchive.h:85
Definition aglResShaderArchive.h:11
u32 mVersion
Definition aglResShaderArchive.h:17
u32 mFileSize
Definition aglResShaderArchive.h:18
u32 mNameLen
Definition aglResShaderArchive.h:20
static const u32 cEndianCheckBit
Definition aglResShaderArchive.h:31
u32 mSigWord
Definition aglResShaderArchive.h:15
u32 mEndian
Definition aglResShaderArchive.h:19
char mSignature[4]
Definition aglResShaderArchive.h:14
static const u32 cSignature
Definition aglResShaderArchive.h:30
static const char * getExtension()
Definition aglResShaderArchive.cpp:378
static const u32 cVersion
Definition aglResShaderArchive.h:29