Skip to content

Commit

Permalink
Renamed ModelLoader to OBJLoader.
Browse files Browse the repository at this point in the history
  • Loading branch information
pboechat committed Nov 27, 2024
1 parent fa9157b commit 9a526bf
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 76 deletions.
36 changes: 0 additions & 36 deletions FastCG/include/FastCG/Rendering/ModelLoader.h

This file was deleted.

36 changes: 36 additions & 0 deletions FastCG/include/FastCG/Rendering/OBJLoader.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#ifndef FASTCG_OBJ_LOADER_H
#define FASTCG_OBJ_LOADER_H

#include <FastCG/Rendering/Material.h>
#include <FastCG/World/GameObject.h>

#include <cstdint>
#include <memory>
#include <string>
#include <type_traits>

namespace FastCG
{
enum class OBJLoaderOption : uint8_t
{
NONE = 0,
IS_SHADOW_CASTER = 1 << 0
};

using OBJLoaderOptionIntType = std::underlying_type<OBJLoaderOption>::type;
using OBJLoaderOptionMaskType = uint8_t;

class OBJLoader
{
public:
static GameObject *Load(const std::string &rFileName, const std::shared_ptr<Material> &pDefaultMaterial,
OBJLoaderOptionMaskType options = (OBJLoaderOptionMaskType)OBJLoaderOption::NONE);

private:
OBJLoader() = delete;
~OBJLoader() = delete;
};

}

#endif
1 change: 0 additions & 1 deletion FastCG/src/Platform/BaseApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include <FastCG/Platform/Timer.h>
#include <FastCG/Rendering/DirectionalLight.h>
#include <FastCG/Rendering/Fog.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/Rendering/PointLight.h>
#include <FastCG/Rendering/Renderable.h>
#include <FastCG/Rendering/RenderingSystem.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <FastCG/Platform/FileWriter.h>
#include <FastCG/Rendering/MaterialDefinitionRegistry.h>
#include <FastCG/Rendering/MeshUtils.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/Rendering/OBJLoader.h>
#include <FastCG/Rendering/Renderable.h>
#include <FastCG/Rendering/ShaderConstants.h>
#include <FastCG/World/Transform.h>
Expand All @@ -22,7 +22,7 @@
#include <unordered_map>
#include <vector>

namespace FastCG
namespace
{
struct LoadContext
{
Expand All @@ -37,13 +37,18 @@ namespace FastCG
FASTCG_UNUSED(pObjFilename);

auto *pLoadContext = (LoadContext *)pContext;
auto data = FileReader::ReadText(File::Join({pLoadContext->basePath, pFilename}), *pLength);
auto data = FastCG::FileReader::ReadText(FastCG::File::Join({pLoadContext->basePath, pFilename}), *pLength);
*pBuffer = data.get();
pLoadContext->fileData.emplace_back(std::move(data));
}

using MeshCatalog = std::unordered_map<size_t, std::shared_ptr<Mesh>>;
using MeshCatalog = std::unordered_map<size_t, std::shared_ptr<FastCG::Mesh>>;
using MaterialCatalog = std::unordered_map<uint32_t, std::shared_ptr<FastCG::Material>>;
using MaterialDefinitions = std::vector<std::shared_ptr<FastCG::Material>>;
}

namespace FastCG
{
void BuildMeshCatalog(const std::string &rFilePath, const tinyobj_attrib_t &attributes,
const tinyobj_shape_t *pShapes, size_t numShapes, MeshCatalog &rMeshCatalog)
{
Expand Down Expand Up @@ -137,9 +142,6 @@ namespace FastCG
}
}

using MaterialCatalog = std::unordered_map<uint32_t, std::shared_ptr<Material>>;
using MaterialDefinitions = std::vector<std::shared_ptr<Material>>;

void BuildMaterialCatalog(const std::string &rFilePath, const tinyobj_material_t *pMaterials, size_t numMaterials,
MaterialCatalog &rMaterialCatalog)
{
Expand Down Expand Up @@ -222,7 +224,7 @@ namespace FastCG
const tinyobj_shape_t *pShapes, size_t numShapes,
const MaterialCatalog &rMaterialCatalog, const MeshCatalog &rMeshCatalog,
const std::shared_ptr<Material> &pDefaultMaterial,
ModelLoaderOptionMaskType options)
OBJLoaderOptionMaskType options)
{
FASTCG_UNUSED(pShapes);

Expand Down Expand Up @@ -260,14 +262,13 @@ namespace FastCG
}

Renderable::Instantiate(pShapeGameObject, pMaterial, pMesh,
(options & (ModelLoaderOptionMaskType)ModelLoaderOption::IS_SHADOW_CASTER) != 0);
(options & (OBJLoaderOptionMaskType)OBJLoaderOption::IS_SHADOW_CASTER) != 0);
}
return pModelGameObject;
}

GameObject *ModelLoader::Load(
const std::string &rFilePath, const std::shared_ptr<Material> &pDefaultMaterial,
ModelLoaderOptionMaskType options /* = (ModelLoaderOptionMaskType)ModelLoaderOption::NONE*/)
GameObject *OBJLoader::Load(const std::string &rFilePath, const std::shared_ptr<Material> &pDefaultMaterial,
OBJLoaderOptionMaskType options /* = (OBJLoaderOptionMaskType)OBJLoaderOption::NONE*/)
{
tinyobj_attrib_t attributes;
tinyobj_shape_t *pShapes;
Expand Down
1 change: 0 additions & 1 deletion FastCG/src/World/GameObjectLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <FastCG/Platform/FileReader.h>
#include <FastCG/Reflection/Inspectable.h>
#include <FastCG/Rendering/MaterialDefinitionRegistry.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/World/Component.h>
#include <FastCG/World/ComponentRegistry.h>
#include <FastCG/World/GameObjectLoader.h>
Expand Down
22 changes: 11 additions & 11 deletions samples/bump_mapping/src/BumpMappingApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <FastCG/Rendering/Camera.h>
#include <FastCG/Rendering/DirectionalLight.h>
#include <FastCG/Rendering/MaterialDefinitionRegistry.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/Rendering/OBJLoader.h>
#include <FastCG/Rendering/PointLight.h>
#include <FastCG/Rendering/Renderable.h>
#include <FastCG/Rendering/StandardGeometries.h>
Expand Down Expand Up @@ -96,23 +96,23 @@ namespace
"Missing Material", MaterialDefinitionRegistry::GetInstance()->GetMaterialDefinition("OpaqueSolidColor")});
pMissingMaterial->SetConstant("uDiffuseColor", Colors::PURPLE);

auto *pModelGameObject =
ModelLoader::Load(AssetSystem::GetInstance()->Resolve("objs/stanford_dragon.obj"), pMissingMaterial);
if (pModelGameObject == nullptr)
auto *pModel =
OBJLoader::Load(AssetSystem::GetInstance()->Resolve("objs/stanford_dragon.obj"), pMissingMaterial);
if (pModel == nullptr)
{
FASTCG_THROW_EXCEPTION(Exception, "Couldn't find model");
}

const auto &bounds = pModelGameObject->GetBounds();
auto *pTransform = pModelGameObject->GetTransform();
const auto &rBounds = pModel->GetBounds();
auto *pTransform = pModel->GetTransform();
float scale = 0;
scale = bounds.max.x - bounds.min.x;
scale = MathF::Max(bounds.max.y - bounds.min.y, scale);
scale = MathF::Max(bounds.max.z - bounds.min.z, scale);
scale = rBounds.max.x - rBounds.min.x;
scale = MathF::Max(rBounds.max.y - rBounds.min.y, scale);
scale = MathF::Max(rBounds.max.z - rBounds.min.z, scale);
scale = 1.0f / scale;

pTransform->SetScale(glm::vec3(scale, scale, scale));
auto center = bounds.getCenter();
auto center = rBounds.getCenter();
pTransform->SetPosition(glm::vec3(-center.x * scale, 0.333f, -center.z * scale));

pTransform->SetParent(pParent);
Expand All @@ -136,7 +136,7 @@ void BumpMappingApplication::OnStart()
pTransform->SetPosition(glm::vec3(0, 0.333f, 1));
pTransform->SetParent(pParent);

Camera::Instantiate(pMainCameraGameObject, CameraSetupArgs{0.3f, 1000, 60, 1024 / (float)768},
Camera::Instantiate(pMainCameraGameObject, CameraSetupArgs{0.3f, 1000, 60, GetAspectRatio()},
ProjectionMode::PERSPECTIVE);

auto *pFlyController = FlyController::Instantiate(pMainCameraGameObject);
Expand Down
16 changes: 8 additions & 8 deletions samples/pcss/src/PCSSApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <FastCG/Rendering/Camera.h>
#include <FastCG/Rendering/DirectionalLight.h>
#include <FastCG/Rendering/MaterialDefinitionRegistry.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/Rendering/OBJLoader.h>
#include <FastCG/Rendering/Renderable.h>
#include <FastCG/Rendering/StandardGeometries.h>
#include <FastCG/World/FlyController.h>
Expand All @@ -27,23 +27,23 @@ namespace
auto pDefaultMaterial = std::make_shared<Material>(MaterialArgs{
"Default Material", MaterialDefinitionRegistry::GetInstance()->GetMaterialDefinition("OpaqueSolidColor")});

auto *pModel = ModelLoader::Load(AssetSystem::GetInstance()->Resolve("objs/bunny.obj"), pDefaultMaterial,
(ModelLoaderOptionMaskType)ModelLoaderOption::IS_SHADOW_CASTER);
auto *pModel = OBJLoader::Load(AssetSystem::GetInstance()->Resolve("objs/bunny.obj"), pDefaultMaterial,
(OBJLoaderOptionMaskType)OBJLoaderOption::IS_SHADOW_CASTER);
if (pModel == nullptr)
{
FASTCG_THROW_EXCEPTION(Exception, "Couldn't find bunny model");
}

const auto &bounds = pModel->GetBounds();
const auto &rBounds = pModel->GetBounds();
auto *pTransform = pModel->GetTransform();
float scale = 0;
scale = bounds.max.x - bounds.min.x;
scale = MathF::Max(bounds.max.y - bounds.min.y, scale);
scale = MathF::Max(bounds.max.z - bounds.min.z, scale);
scale = rBounds.max.x - rBounds.min.x;
scale = MathF::Max(rBounds.max.y - rBounds.min.y, scale);
scale = MathF::Max(rBounds.max.z - rBounds.min.z, scale);
scale = 1.0f / scale;

pTransform->SetScale(glm::vec3(scale, scale, scale));
auto center = bounds.getCenter();
auto center = rBounds.getCenter();
pTransform->SetPosition(glm::vec3(-center.x * scale, center.y * scale, -center.z * scale));
}

Expand Down
14 changes: 7 additions & 7 deletions samples/ssao/src/SSAOApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <FastCG/Rendering/Camera.h>
#include <FastCG/Rendering/DirectionalLight.h>
#include <FastCG/Rendering/MaterialDefinitionRegistry.h>
#include <FastCG/Rendering/ModelLoader.h>
#include <FastCG/Rendering/OBJLoader.h>
#include <FastCG/Rendering/Renderable.h>
#include <FastCG/Rendering/StandardGeometries.h>
#include <FastCG/World/FlyController.h>
Expand All @@ -23,22 +23,22 @@ namespace
auto pDefaultMaterial = std::make_shared<Material>(MaterialArgs{
"Default Material", MaterialDefinitionRegistry::GetInstance()->GetMaterialDefinition("OpaqueSolidColor")});

auto *pModel = ModelLoader::Load(AssetSystem::GetInstance()->Resolve("objs/armadillo.obj"), pDefaultMaterial);
auto *pModel = OBJLoader::Load(AssetSystem::GetInstance()->Resolve("objs/armadillo.obj"), pDefaultMaterial);
if (pModel == nullptr)
{
FASTCG_THROW_EXCEPTION(Exception, "Couldn't find armadillo model");
}

const auto &bounds = pModel->GetBounds();
const auto &rBounds = pModel->GetBounds();
auto *pTransform = pModel->GetTransform();
float scale = 0;
scale = bounds.max.x - bounds.min.x;
scale = MathF::Max(bounds.max.y - bounds.min.y, scale);
scale = MathF::Max(bounds.max.z - bounds.min.z, scale);
scale = rBounds.max.x - rBounds.min.x;
scale = MathF::Max(rBounds.max.y - rBounds.min.y, scale);
scale = MathF::Max(rBounds.max.z - rBounds.min.z, scale);
scale = 1.0f / scale;

pTransform->SetScale(glm::vec3(scale, scale, scale));
auto center = bounds.getCenter();
auto center = rBounds.getCenter();
pTransform->SetPosition(glm::vec3(-center.x * scale, center.y * scale, -center.z * scale));
pTransform->SetRotation(glm::quat(glm::vec3(0, glm::radians(180.0f), 0)));
}
Expand Down

0 comments on commit 9a526bf

Please sign in to comment.