Newer
Older
ForwardPlusRenderer / include / ModelLoading.h
#pragma once
#include <stdafx.h>
#include "Model.h"
namespace fpr
{
struct ModelLoader
{
  static constexpr unsigned int USING_ASSIMP_DEFAULT_FLAGS = aiProcess_Triangulate | aiProcess_FlipUVs |
      aiProcess_JoinIdenticalVertices | aiProcess_GenSmoothNormals | aiProcess_OptimizeMeshes | aiProcess_OptimizeGraph;

  static constexpr std::pair<const char*, aiTextureType> ASSIMP_TEXTURE_TYPES[] = {
    {
        "Ambient",
        aiTextureType_AMBIENT,
    },
    {
        "Ambient Occlusion",
        aiTextureType_AMBIENT_OCCLUSION,
    },
    {
        "Base",
        aiTextureType_BASE_COLOR,
    },
    {
        "Diffuse",
        aiTextureType_DIFFUSE,
    },
    {
        "Diffuse Roughness",
        aiTextureType_DIFFUSE_ROUGHNESS,
    },
    {
        "Displacement",
        aiTextureType_DISPLACEMENT,
    },
    {
        "Emission",
        aiTextureType_EMISSION_COLOR,
    },
    {
        "Emissive",
        aiTextureType_EMISSIVE,
    },
    {
        "Height",
        aiTextureType_HEIGHT,
    },
    {
        "Light Map",
        aiTextureType_LIGHTMAP,
    },
    {
        "Metal",
        aiTextureType_METALNESS,
    },
    {
        "None",
        aiTextureType_NONE,
    },
    {
        "Normals",
        aiTextureType_NORMALS,
    },
    {
        "Normal Camera",
        aiTextureType_NORMAL_CAMERA,
    },
    {
        "Opacity",
        aiTextureType_OPACITY,
    },
    {
        "Reflection",
        aiTextureType_REFLECTION,
    },
    {
        "Shininess",
        aiTextureType_SHININESS,
    },
    {
        "Specular",
        aiTextureType_SPECULAR,
    },
    {
        "Uknown",
        aiTextureType_UNKNOWN,
    },
  };

  static uint32_t        mesh_index;
  static ModelPrimitives LoadModelAssimp(const char* file_name);
};
} // namespace fpr