2
3
4
5
10#include <yaml-cpp/yaml.h>
11#include "Resources/Material/Material.h"
17 struct convert<glm::vec2>
22 node.push_back(rhs.x);
23 node.push_back(rhs.y);
27 static bool decode(
const Node& node, glm::vec2& rhs)
29 if (!node.IsSequence() || node.size() != 2)
34 rhs.x = node[0].as<
float>();
35 rhs.y = node[1].as<
float>();
139 ss <<
"YAML::convert<Spices::Material::ConstantParam>: not supported paramType: " <<
param.
paramType;
152 ss <<
"YAML::convert<Spices::Material::ConstantParam>: bad node size, current size is" <<
node.
size() <<
", required 4";
169 ss <<
"YAML::convert<Spices::Material::ConstantParam>: not supported paramType: " <<
param.
paramType;
184 out << YAML::BeginSeq << v.x << v.y << YAML::EndSeq;
191 out << YAML::BeginSeq << v.x << v.y << v.z << YAML::EndSeq;
198 out << YAML::BeginSeq << v.x << v.y << v.z << v.w << YAML::EndSeq;
205 out << YAML::BeginSeq << p.textureType << p.texturePath << YAML::EndSeq;
212 out << YAML::BeginSeq << p.paramType;
216 out << std::any_cast<glm::vec4>(p.paramValue);
220 out << std::any_cast<glm::vec3>(p.paramValue);
224 out << std::any_cast<glm::vec2>(p.paramValue);
228 out << std::any_cast<
float>(p.paramValue);
232 out << std::any_cast<
int>(p.paramValue);
236 out << std::any_cast<
bool>(p.paramValue);
240 std::stringstream ss;
241 ss <<
"YAML::operator<<: not supported paramType: " << p
.paramType;
243 SPICES_CORE_WARN(ss.str())
#define SPICES_PROFILE_ZONE
static bool FileLibrary_Read(const FileHandle *handle, uint64_t data_size, void *out_data, uint64_t *out_bytes_read)
Read Specific size of data form the current file handle pointer, and move pointer the same size.
static bool FileLibrary_Open(const char *path, FileModes mode, bool binary, FileHandle *out_handle)
Open the file using given string.
static void FileLibrary_Close(FileHandle *handle)
Close the file by the file handle.
File Static Function Library.
static bool SaveDefaultMaterial()
Test function.
static bool Load(const std::string &fileName, Material *outMaterial)
Public called API, it is entrance.
static bool LoadFromSASSET(const std::string &fileName, Material *outMaterial)
Load data from a .sasset file.
static bool LoadFromMaterial(const std::string &fileName, Material *outMaterial)
Load data from a .material file.
This enum defines tree types of material file.
Material Class. This class contains a branch of parameter and shader, also descriptor.
static bool StringsEqual(const char *str0, const char *str1)
Determine if the strings given are equal. Platform Specific.
String Static Function Library.
const std::string defaultMaterialPath
Const variable: Original Material File Path.
YAML::Emitter & operator<<(YAML::Emitter &out, const glm::vec2 &v)
const std::string defaultBinMaterialPath
Const variable: Bin Material File Path.
static void SerializeShaderConfig(YAML::Emitter &out, const std::string &shaderStage, const std::string &shaderPath)
Serialize Shader Config.
const std::string defaultBinShaderPath
Const variable: Bin Shader File Path.
constexpr char LoaderSignStart[100]
Const variable: Material File Confirm header start.
static void SerializeTextureConfig(YAML::Emitter &out, const std::string &name, const TextureParam ¶m)
Serialize Texture Config.
YAML::Emitter & operator<<(YAML::Emitter &out, const TextureParam &p)
constexpr char LoaderSignOver[100]
Const variable: Material File Confirm header over.
@ FILE_MODE_READ
model : read
YAML::Emitter & operator<<(YAML::Emitter &out, const ConstantParam &p)
This Struct is FILE* handle pointer Wrapper.
This struct's data is defined from .material file.
static Node encode(const glm::vec2 &rhs)
static bool decode(const Node &node, glm::vec2 &rhs)