MCPcopy Create free account
hub / github.com/defold/defold / IterateUniforms

Function IterateUniforms

engine/graphics/src/graphics.cpp:1357–1403  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1355 }
1356
1357 void IterateUniforms(Program* program, bool prepend_instance_name, IterateUniformsCallback callback, void* user_data)
1358 {
1359 ProgramResourceBindingIterator it(program);
1360
1361 dmArray<char> canonical_name_buffer;
1362
1363 const ProgramResourceBinding* next;
1364 while((next = it.Next()))
1365 {
1366 if (next->m_Res->m_BindingFamily == BINDING_FAMILY_TEXTURE ||
1367 next->m_Res->m_BindingFamily == BINDING_FAMILY_STORAGE_BUFFER)
1368 {
1369 CreateUniformLeafMembersCallbackParams params = {};
1370 params.m_CanonicalName = next->m_Res->m_Name;
1371 params.m_Resource = next;
1372
1373 callback(params, user_data);
1374 }
1375 else if (next->m_Res->m_BindingFamily == BINDING_FAMILY_UNIFORM_BUFFER)
1376 {
1377 uint32_t canonical_name_buffer_offset = 0;
1378
1379 if (prepend_instance_name && next->m_Res->m_InstanceName && next->m_Res->m_InstanceName[0] != 0)
1380 {
1381 canonical_name_buffer_offset = strlen(next->m_Res->m_InstanceName);
1382
1383 if (canonical_name_buffer.Empty())
1384 {
1385 canonical_name_buffer.OffsetCapacity(dmMath::Max((uint32_t) 128, canonical_name_buffer_offset));
1386 canonical_name_buffer.SetSize(canonical_name_buffer.Capacity());
1387 }
1388 memcpy(canonical_name_buffer.Begin(), next->m_Res->m_InstanceName, canonical_name_buffer_offset);
1389 }
1390 else
1391 {
1392 if (canonical_name_buffer.Empty())
1393 {
1394 canonical_name_buffer.OffsetCapacity(128);
1395 canonical_name_buffer.SetSize(canonical_name_buffer.Capacity());
1396 }
1397 }
1398
1399 const dmArray<ShaderResourceTypeInfo>& type_infos = *next->m_TypeInfos;
1400 VisitUniformLeafNodes(callback, user_data, next, type_infos, next->m_Res->m_Type, next->m_Res->m_Name, next->m_Res->m_InstanceName, &canonical_name_buffer, canonical_name_buffer_offset);
1401 }
1402 }
1403 }
1404
1405 void IterateProgramResourceBindings(HProgram prog, ShaderResourceBindingFamily family, IterateProgramResourceBindingsCallback callback, void* user_data)
1406 {

Callers 2

BuildUniformsFunction · 0.85
OpenGLBuildUniformsFunction · 0.85

Calls 8

VisitUniformLeafNodesFunction · 0.85
MaxFunction · 0.50
NextMethod · 0.45
EmptyMethod · 0.45
OffsetCapacityMethod · 0.45
SetSizeMethod · 0.45
CapacityMethod · 0.45
BeginMethod · 0.45

Tested by

no test coverage detected