Rendering Engine
0.2.0
Modular Graphics Rendering Engine | v0.2.0
Loading...
Searching...
No Matches
material_types.hpp
Go to the documentation of this file.
1
// This file is part of the Rendering Engine project.
2
// Author: Alexander Obzherin <alexanderobzherin@gmail.com>
3
// Copyright (c) 2025 Alexander Obzherin
4
// Distributed under the terms of the zlib License. See LICENSE.md for details.
5
6
#pragma once
7
8
#include <vector>
9
#include <cstdint>
10
11
namespace
rendering_engine
12
{
13
14
/**
15
* @brief Specifies the rendering domain where the material is used.
16
*/
17
enum class
MaterialDomain
18
{
19
Surface3D
,
20
Sprite2D
21
};
22
23
/**
24
* @brief Specifies how the material handles transparency.
25
*/
26
enum class
BlendMode
27
{
28
Opaque
,
29
Translucent
30
};
31
32
/**
33
* @brief Specifies the shading model used by the material.
34
*/
35
enum class
ShadingModel
36
{
37
Lit
,
38
Unlit
39
};
40
41
/**
42
* @brief Settings required to define a material instance.
43
*/
44
struct
MaterialSettings
45
{
46
std::string
materialName
;
47
MaterialDomain
materialDomain
;
48
BlendMode
blendMode
;
49
ShadingModel
shadingModel
;
50
};
51
52
/**
53
* @brief Describes the layout of a single packed parameter inside a uniform buffer.
54
*/
55
struct
MaterialParameterLayoutEntry
56
{
57
std::string
name
;
58
size_t
offset
;
59
size_t
size
;
60
enum class
Type
{
Float
,
Vec3
,
Vec4
};
61
Type
type
;
62
};
63
64
/**
65
* @brief Contains the raw buffer data and layout metadata of packed material parameters.
66
*/
67
struct
PackedMaterialData
68
{
69
std::vector<uint8_t>
buffer
;
70
std::vector<MaterialParameterLayoutEntry>
layout
;
71
};
72
73
}
// namespace rendering_engine
rendering_engine
Definition
actor.hpp:11
rendering_engine::MaterialDomain
MaterialDomain
Specifies the rendering domain where the material is used.
Definition
material_types.hpp:18
rendering_engine::MaterialDomain::Sprite2D
@ Sprite2D
Definition
material_types.hpp:20
rendering_engine::MaterialDomain::Surface3D
@ Surface3D
Definition
material_types.hpp:19
rendering_engine::BlendMode
BlendMode
Specifies how the material handles transparency.
Definition
material_types.hpp:27
rendering_engine::BlendMode::Translucent
@ Translucent
Definition
material_types.hpp:29
rendering_engine::BlendMode::Opaque
@ Opaque
Definition
material_types.hpp:28
rendering_engine::ShadingModel
ShadingModel
Specifies the shading model used by the material.
Definition
material_types.hpp:36
rendering_engine::ShadingModel::Unlit
@ Unlit
Definition
material_types.hpp:38
rendering_engine::ShadingModel::Lit
@ Lit
Definition
material_types.hpp:37
rendering_engine::MaterialParameterLayoutEntry
Describes the layout of a single packed parameter inside a uniform buffer.
Definition
material_types.hpp:56
rendering_engine::MaterialParameterLayoutEntry::offset
size_t offset
Definition
material_types.hpp:58
rendering_engine::MaterialParameterLayoutEntry::size
size_t size
Definition
material_types.hpp:59
rendering_engine::MaterialParameterLayoutEntry::name
std::string name
Definition
material_types.hpp:57
rendering_engine::MaterialParameterLayoutEntry::type
Type type
Definition
material_types.hpp:61
rendering_engine::MaterialParameterLayoutEntry::Type
Type
Definition
material_types.hpp:60
rendering_engine::MaterialParameterLayoutEntry::Type::Vec3
@ Vec3
Definition
material_types.hpp:60
rendering_engine::MaterialParameterLayoutEntry::Type::Float
@ Float
Definition
material_types.hpp:60
rendering_engine::MaterialParameterLayoutEntry::Type::Vec4
@ Vec4
Definition
material_types.hpp:60
rendering_engine::MaterialSettings
Settings required to define a material instance.
Definition
material_types.hpp:45
rendering_engine::MaterialSettings::materialName
std::string materialName
Definition
material_types.hpp:46
rendering_engine::MaterialSettings::materialDomain
MaterialDomain materialDomain
Definition
material_types.hpp:47
rendering_engine::MaterialSettings::shadingModel
ShadingModel shadingModel
Definition
material_types.hpp:49
rendering_engine::MaterialSettings::blendMode
BlendMode blendMode
Definition
material_types.hpp:48
rendering_engine::PackedMaterialData
Contains the raw buffer data and layout metadata of packed material parameters.
Definition
material_types.hpp:68
rendering_engine::PackedMaterialData::buffer
std::vector< uint8_t > buffer
Definition
material_types.hpp:69
rendering_engine::PackedMaterialData::layout
std::vector< MaterialParameterLayoutEntry > layout
Definition
material_types.hpp:70
RenderingEngine
RenderingLibrary
Include
material_types.hpp
Generated by
1.14.0