17 if (json.contains(
"material"))
19 auto& matObj = json[
"material"];
20 const std::string path = matObj.value(
"path",
"");
22 if (mat && matObj.contains(
"params"))
24 auto& paramsObj = matObj[
"params"];
27 if (paramsObj.contains(
"float"))
29 for (
auto& p : paramsObj[
"float"])
31 std::string name = p.value(
"name",
"");
32 float value = p.value(
"value", 0.0f);
33 mat->SetParam(name, value);
38 if (paramsObj.contains(
"float2"))
40 for (
auto& p : paramsObj[
"float2"])
42 std::string name = p.value(
"name",
"");
43 float v0 = p.value(
"value0", 0.0f);
44 float v1 = p.value(
"value1", 0.0f);
45 mat->SetParam(name, v0, v1);
50 if (paramsObj.contains(
"float3"))
52 for (
auto& p : paramsObj[
"float3"])
54 std::string name = p.value(
"name",
"");
55 float v0 = p.value(
"value0", 0.0f);
56 float v1 = p.value(
"value1", 0.0f);
57 float v2 = p.value(
"value2", 0.0f);
58 mat->SetParam(name, glm::vec3(v0, v1, v2));
63 if (paramsObj.contains(
"textures"))
65 for (
auto& p : paramsObj[
"textures"])
67 std::string name = p.value(
"name",
"");
68 std::string texPath = p.value(
"path",
"");
71 mat->SetParam(name, texture);
78 if (json.contains(
"mesh"))
80 auto& meshObj = json[
"mesh"];
81 const std::string type = meshObj.value(
"type",
"box");
85 extents.x = meshObj.value(
"x", 1.0f);
86 extents.y = meshObj.value(
"y", 1.0f);
87 extents.z = meshObj.value(
"z", 1.0f);
91 else if (type ==
"sphere")
93 float r = meshObj.value(
"r", 1.0f);
static std::shared_ptr< Texture > Load(const std::string &path)