MCPcopy Create free account
hub / github.com/DiligentGraphics/DiligentFX / GetVSInputStructAndLayout

Method GetVSInputStructAndLayout

PBR/src/PBR_Renderer.cpp:1331–1439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1329}
1330
1331void PBR_Renderer::GetVSInputStructAndLayout(PSO_FLAGS PSOFlags,
1332 std::string& VSInputStruct,
1333 InputLayoutDescX& InputLayout) const
1334{
1335 //struct VSInput
1336 //{
1337 // float3 Pos : ATTRIB0;
1338 // float3 Normal : ATTRIB1;
1339 // float2 UV0 : ATTRIB2;
1340 // float2 UV1 : ATTRIB3;
1341 // float4 Joint0 : ATTRIB4;
1342 // float4 Weight0 : ATTRIB5;
1343 // float4 Color : ATTRIB6; // May be float3
1344 // float3 Tangent : ATTRIB7;
1345 //};
1346 struct VSAttribInfo
1347 {
1348 const Uint32 Index;
1349 const char* const Name;
1350 const VALUE_TYPE Type;
1351 const Uint32 NumComponents;
1352 const PSO_FLAGS Flag;
1353 };
1354
1355 InputLayout = m_Settings.InputLayout;
1356 InputLayout.ResolveAutoOffsetsAndStrides();
1357
1358 Uint32 NumColorComp = 4;
1359 if (PSOFlags & PSO_FLAG_USE_VERTEX_COLORS)
1360 {
1361 for (Uint32 i = 0; i < InputLayout.GetNumElements(); ++i)
1362 {
1363 const auto& Elem = InputLayout[i];
1364 if (Elem.InputIndex == VERTEX_ATTRIB_ID_COLOR)
1365 {
1366 NumColorComp = Elem.NumComponents;
1367 DEV_CHECK_ERR(NumColorComp == 3 || NumColorComp == 4, "Color attribute must have 3 or 4 components");
1368 break;
1369 }
1370 }
1371 }
1372
1373 const std::array<VSAttribInfo, 8> VSAttribs = //
1374 {
1375 // clang-format off
1376 VSAttribInfo{VERTEX_ATTRIB_ID_POSITION, "Pos", VT_FLOAT32, 3, PSO_FLAG_NONE},
1377 VSAttribInfo{VERTEX_ATTRIB_ID_NORMAL, "Normal", VT_FLOAT32, 3, PSO_FLAG_USE_VERTEX_NORMALS},
1378 VSAttribInfo{VERTEX_ATTRIB_ID_TEXCOORD0, "UV0", VT_FLOAT32, 2, PSO_FLAG_USE_TEXCOORD0},
1379 VSAttribInfo{VERTEX_ATTRIB_ID_TEXCOORD1, "UV1", VT_FLOAT32, 2, PSO_FLAG_USE_TEXCOORD1},
1380 VSAttribInfo{VERTEX_ATTRIB_ID_JOINTS, "Joint0", VT_FLOAT32, 4, PSO_FLAG_USE_JOINTS},
1381 VSAttribInfo{VERTEX_ATTRIB_ID_WEIGHTS, "Weight0", VT_FLOAT32, 4, PSO_FLAG_USE_JOINTS},
1382 VSAttribInfo{VERTEX_ATTRIB_ID_COLOR, "Color", VT_FLOAT32, NumColorComp, PSO_FLAG_USE_VERTEX_COLORS},
1383 VSAttribInfo{VERTEX_ATTRIB_ID_TANGENT, "Tangent", VT_FLOAT32, 3, PSO_FLAG_USE_VERTEX_TANGENTS}
1384 // clang-format on
1385 };
1386
1387 std::stringstream ss;
1388 ss << "struct VSInput" << std::endl

Callers

nothing calls this directly

Calls 1

GetNumElementsMethod · 0.80

Tested by

no test coverage detected