MCPcopy Create free account
hub / github.com/baldurk/renderdoc / InterpretShaderVar

Function InterpretShaderVar

qrenderdoc/Code/BufferFormatter.cpp:3210–3287  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3208}
3209
3210ShaderVariable InterpretShaderVar(const ShaderConstant &elem, const byte *data, const byte *end)
3211{
3212 ShaderVariable ret;
3213
3214 ret.name = elem.name;
3215 ret.type = elem.type.baseType;
3216 ret.columns = qMin(elem.type.columns, uint8_t(4));
3217 ret.rows = qMin(elem.type.rows, uint8_t(4));
3218
3219 ret.flags = elem.type.flags;
3220
3221 if(elem.type.baseType != VarType::Enum && !elem.type.members.isEmpty())
3222 {
3223 ret.rows = ret.columns = 0;
3224
3225 if(elem.type.elements > 1 && elem.type.elements != ~0U)
3226 {
3227 rdcarray<ShaderVariable> arrayElements;
3228
3229 for(uint32_t a = 0; a < elem.type.elements; a++)
3230 {
3231 rdcarray<ShaderVariable> members;
3232
3233 for(size_t m = 0; m < elem.type.members.size(); m++)
3234 {
3235 const ShaderConstant &member = elem.type.members[m];
3236
3237 members.push_back(InterpretShaderVar(member, data + member.byteOffset, end));
3238 }
3239
3240 arrayElements.push_back(ret);
3241 arrayElements.back().name = QFormatStr("%1[%2]").arg(ret.name).arg(a);
3242 arrayElements.back().members = members;
3243
3244 data += elem.type.arrayByteStride;
3245 }
3246
3247 ret.members = arrayElements;
3248 }
3249 else
3250 {
3251 rdcarray<ShaderVariable> members;
3252
3253 for(size_t m = 0; m < elem.type.members.size(); m++)
3254 {
3255 const ShaderConstant &member = elem.type.members[m];
3256
3257 members.push_back(InterpretShaderVar(member, data + member.byteOffset, end));
3258 }
3259
3260 ret.members = members;
3261 }
3262 }
3263 else if(elem.type.baseType == VarType::Struct && elem.type.members.isEmpty())
3264 {
3265 }
3266 else if(elem.type.elements > 1 && elem.type.elements != ~0U)
3267 {

Callers 2

OnEventChangedMethod · 0.85
UI_AddTaskPayloadsMethod · 0.85

Calls 6

FillShaderVarDataFunction · 0.85
isEmptyMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
backMethod · 0.45
argMethod · 0.45

Tested by

no test coverage detected