Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
Engine::Core::MaterialData Struct Reference

Unified material data structure containing all possible material properties. More...

#include <MaterialData.h>

Public Member Functions

 MaterialData ()=default
 MaterialData (Rendering::PipelineNames pipe)
 MaterialData (Rendering::PipelineNames pipe, uint32_t baseColorTexIdx, const glm::vec4 &baseColorFac)
bool hasBaseColorTexture () const
bool hasNormalTexture () const
bool hasMetallicRoughnessTexture () const
bool hasEmissiveTexture () const
bool hasLightmapTexture () const
bool isAlphaMasked () const
MaterialDatawithBaseColorTexture (uint32_t idx)
MaterialDatawithNormalTexture (uint32_t idx)
MaterialDatawithMetallicRoughnessTexture (uint32_t idx)
MaterialDatawithEmissiveTexture (uint32_t idx)
MaterialDatawithLightmapTexture (uint32_t idx)
MaterialDatawithBaseColorFactor (const glm::vec4 &fac)
MaterialDatawithEmissiveFactor (const glm::vec3 &fac)
MaterialDatawithRoughness (float r)
MaterialDatawithMetallic (float m)
MaterialDatawithNormalScale (float s)
MaterialDatawithShScale (float s)
MaterialDatawithAmbientTerm (float a)
MaterialDatawithDebugMode (uint32_t d)
MaterialDatawithToneMapping (uint32_t t)
MaterialDatawithAlphaCutoff (float cutoff)
MaterialDatawithNormalMapBC5 (bool bc5)

Public Attributes

Rendering::PipelineNames pipeline = Rendering::PipelineNames::NORMALS_SHADER
uint32_t baseColorTextureIndex = 0xFFFFFFFF
uint32_t normalTextureIndex = 0xFFFFFFFF
uint32_t roughnessMetallicTextureIndex = 0xFFFFFFFF
uint32_t emissiveTextureIndex = 0xFFFFFFFF
uint32_t lightmapTextureIndex = 0xFFFFFFFF
glm::vec4 baseColorFactor = glm::vec4(1.0f)
glm::vec3 emissiveFactor = glm::vec3(0.0f)
float roughnessFactor = 1.0f
float metallicFactor = 0.0f
float normalScale = 1.0f
float shScale = 1.0f
float ambientTerm = 0.0f
uint32_t debugMode = 0
uint32_t toneMapping = 1
bool normalMapBC5 = false
float alphaCutoff = 1.0f

Detailed Description

Unified material data structure containing all possible material properties.

Replaces the previous variant-based approach with individual material classes. All fields have sensible defaults, and feature presence is determined by texture indices (0xFFFFFFFF = not present) or feature flags.

This simplifies material handling throughout the codebase - no more variant visitation, no more template specializations, just a single struct.

Date
2026-04-16
Author
Konstantin Passig

Definition at line 23 of file MaterialData.h.

Constructor & Destructor Documentation

◆ MaterialData() [1/3]

Engine::Core::MaterialData::MaterialData ( )
default

◆ MaterialData() [2/3]

Engine::Core::MaterialData::MaterialData ( Rendering::PipelineNames pipe)
inlineexplicit

Definition at line 55 of file MaterialData.h.

References pipeline.

◆ MaterialData() [3/3]

Engine::Core::MaterialData::MaterialData ( Rendering::PipelineNames pipe,
uint32_t baseColorTexIdx,
const glm::vec4 & baseColorFac )
inline

Definition at line 57 of file MaterialData.h.

References baseColorFactor, baseColorTextureIndex, and pipeline.

Member Function Documentation

◆ hasBaseColorTexture()

bool Engine::Core::MaterialData::hasBaseColorTexture ( ) const
inlinenodiscard

Definition at line 63 of file MaterialData.h.

References baseColorTextureIndex.

◆ hasEmissiveTexture()

bool Engine::Core::MaterialData::hasEmissiveTexture ( ) const
inlinenodiscard

Definition at line 66 of file MaterialData.h.

References emissiveTextureIndex.

◆ hasLightmapTexture()

bool Engine::Core::MaterialData::hasLightmapTexture ( ) const
inlinenodiscard

Definition at line 67 of file MaterialData.h.

References lightmapTextureIndex.

◆ hasMetallicRoughnessTexture()

bool Engine::Core::MaterialData::hasMetallicRoughnessTexture ( ) const
inlinenodiscard

Definition at line 65 of file MaterialData.h.

References roughnessMetallicTextureIndex.

◆ hasNormalTexture()

bool Engine::Core::MaterialData::hasNormalTexture ( ) const
inlinenodiscard

Definition at line 64 of file MaterialData.h.

References normalTextureIndex.

◆ isAlphaMasked()

bool Engine::Core::MaterialData::isAlphaMasked ( ) const
inlinenodiscard

Definition at line 68 of file MaterialData.h.

References alphaCutoff.

◆ withAlphaCutoff()

MaterialData & Engine::Core::MaterialData::withAlphaCutoff ( float cutoff)
inline

Definition at line 85 of file MaterialData.h.

References alphaCutoff, and MaterialData().

Here is the call graph for this function:

◆ withAmbientTerm()

MaterialData & Engine::Core::MaterialData::withAmbientTerm ( float a)
inline

Definition at line 82 of file MaterialData.h.

References ambientTerm, and MaterialData().

Here is the call graph for this function:

◆ withBaseColorFactor()

MaterialData & Engine::Core::MaterialData::withBaseColorFactor ( const glm::vec4 & fac)
inline

Definition at line 76 of file MaterialData.h.

References baseColorFactor, and MaterialData().

Here is the call graph for this function:

◆ withBaseColorTexture()

MaterialData & Engine::Core::MaterialData::withBaseColorTexture ( uint32_t idx)
inline

Definition at line 71 of file MaterialData.h.

References baseColorTextureIndex, and MaterialData().

Here is the call graph for this function:

◆ withDebugMode()

MaterialData & Engine::Core::MaterialData::withDebugMode ( uint32_t d)
inline

Definition at line 83 of file MaterialData.h.

References debugMode, and MaterialData().

Here is the call graph for this function:

◆ withEmissiveFactor()

MaterialData & Engine::Core::MaterialData::withEmissiveFactor ( const glm::vec3 & fac)
inline

Definition at line 77 of file MaterialData.h.

References emissiveFactor, and MaterialData().

Here is the call graph for this function:

◆ withEmissiveTexture()

MaterialData & Engine::Core::MaterialData::withEmissiveTexture ( uint32_t idx)
inline

Definition at line 74 of file MaterialData.h.

References emissiveTextureIndex, and MaterialData().

Here is the call graph for this function:

◆ withLightmapTexture()

MaterialData & Engine::Core::MaterialData::withLightmapTexture ( uint32_t idx)
inline

Definition at line 75 of file MaterialData.h.

References lightmapTextureIndex, and MaterialData().

Here is the call graph for this function:

◆ withMetallic()

MaterialData & Engine::Core::MaterialData::withMetallic ( float m)
inline

Definition at line 79 of file MaterialData.h.

References MaterialData(), and metallicFactor.

Here is the call graph for this function:

◆ withMetallicRoughnessTexture()

MaterialData & Engine::Core::MaterialData::withMetallicRoughnessTexture ( uint32_t idx)
inline

Definition at line 73 of file MaterialData.h.

References MaterialData(), and roughnessMetallicTextureIndex.

Here is the call graph for this function:

◆ withNormalMapBC5()

MaterialData & Engine::Core::MaterialData::withNormalMapBC5 ( bool bc5)
inline

Definition at line 86 of file MaterialData.h.

References MaterialData(), and normalMapBC5.

Here is the call graph for this function:

◆ withNormalScale()

MaterialData & Engine::Core::MaterialData::withNormalScale ( float s)
inline

Definition at line 80 of file MaterialData.h.

References MaterialData(), and normalScale.

Here is the call graph for this function:

◆ withNormalTexture()

MaterialData & Engine::Core::MaterialData::withNormalTexture ( uint32_t idx)
inline

Definition at line 72 of file MaterialData.h.

References MaterialData(), and normalTextureIndex.

Here is the call graph for this function:

◆ withRoughness()

MaterialData & Engine::Core::MaterialData::withRoughness ( float r)
inline

Definition at line 78 of file MaterialData.h.

References MaterialData(), and roughnessFactor.

Here is the call graph for this function:

◆ withShScale()

MaterialData & Engine::Core::MaterialData::withShScale ( float s)
inline

Definition at line 81 of file MaterialData.h.

References MaterialData(), and shScale.

Here is the call graph for this function:

◆ withToneMapping()

MaterialData & Engine::Core::MaterialData::withToneMapping ( uint32_t t)
inline

Definition at line 84 of file MaterialData.h.

References MaterialData(), and toneMapping.

Here is the call graph for this function:

Member Data Documentation

◆ alphaCutoff

float Engine::Core::MaterialData::alphaCutoff = 1.0f

Definition at line 49 of file MaterialData.h.

Referenced by isAlphaMasked(), and withAlphaCutoff().

◆ ambientTerm

float Engine::Core::MaterialData::ambientTerm = 0.0f

Definition at line 43 of file MaterialData.h.

Referenced by withAmbientTerm().

◆ baseColorFactor

glm::vec4 Engine::Core::MaterialData::baseColorFactor = glm::vec4(1.0f)

Definition at line 35 of file MaterialData.h.

Referenced by MaterialData(), and withBaseColorFactor().

◆ baseColorTextureIndex

uint32_t Engine::Core::MaterialData::baseColorTextureIndex = 0xFFFFFFFF

Definition at line 28 of file MaterialData.h.

Referenced by hasBaseColorTexture(), MaterialData(), and withBaseColorTexture().

◆ debugMode

uint32_t Engine::Core::MaterialData::debugMode = 0

Definition at line 44 of file MaterialData.h.

Referenced by withDebugMode().

◆ emissiveFactor

glm::vec3 Engine::Core::MaterialData::emissiveFactor = glm::vec3(0.0f)

Definition at line 36 of file MaterialData.h.

Referenced by withEmissiveFactor().

◆ emissiveTextureIndex

uint32_t Engine::Core::MaterialData::emissiveTextureIndex = 0xFFFFFFFF

Definition at line 31 of file MaterialData.h.

Referenced by hasEmissiveTexture(), and withEmissiveTexture().

◆ lightmapTextureIndex

uint32_t Engine::Core::MaterialData::lightmapTextureIndex = 0xFFFFFFFF

Definition at line 32 of file MaterialData.h.

Referenced by hasLightmapTexture(), and withLightmapTexture().

◆ metallicFactor

float Engine::Core::MaterialData::metallicFactor = 0.0f

Definition at line 38 of file MaterialData.h.

Referenced by withMetallic().

◆ normalMapBC5

bool Engine::Core::MaterialData::normalMapBC5 = false

Definition at line 48 of file MaterialData.h.

Referenced by withNormalMapBC5().

◆ normalScale

float Engine::Core::MaterialData::normalScale = 1.0f

Definition at line 39 of file MaterialData.h.

Referenced by withNormalScale().

◆ normalTextureIndex

uint32_t Engine::Core::MaterialData::normalTextureIndex = 0xFFFFFFFF

Definition at line 29 of file MaterialData.h.

Referenced by hasNormalTexture(), and withNormalTexture().

◆ pipeline

Definition at line 25 of file MaterialData.h.

Referenced by MaterialData(), and MaterialData().

◆ roughnessFactor

float Engine::Core::MaterialData::roughnessFactor = 1.0f

Definition at line 37 of file MaterialData.h.

Referenced by withRoughness().

◆ roughnessMetallicTextureIndex

uint32_t Engine::Core::MaterialData::roughnessMetallicTextureIndex = 0xFFFFFFFF

Definition at line 30 of file MaterialData.h.

Referenced by hasMetallicRoughnessTexture(), and withMetallicRoughnessTexture().

◆ shScale

float Engine::Core::MaterialData::shScale = 1.0f

Definition at line 42 of file MaterialData.h.

Referenced by withShScale().

◆ toneMapping

uint32_t Engine::Core::MaterialData::toneMapping = 1

Definition at line 45 of file MaterialData.h.

Referenced by withToneMapping().


The documentation for this struct was generated from the following file:
  • /home/magerbeton/Documents/gl3-vulkan/Engine/include/Engine/Material/MaterialData.h