Kanzi 4.0.0
kanzi::MaterialRequirements Class Reference

Representation of material requirements as a fast-searchable bit field. More...

#include <kanzi/core.ui/graphics3d/material_requirements.hpp>

Public Types

using data_type
 Internal data type.
 
enum class  Requirement : unsigned int {
  KanziShaderOutputColor , KanziShaderOutputColorIndex , KanziShaderOutputNormal , KanziShaderOutputNormalIndex ,
  KanziShaderOutputPbrSettings , KanziShaderOutputPbrSettingsIndex , KanziShaderLightCountDirectional , KanziShaderLightCountPoint ,
  KanziShaderLightCountSpot , KanziShaderShadowMapCountDirectional , KanziShaderShadowMapCountPoint , KanziShaderShadowMapCountSpot ,
  KanziShaderUseSsaoTexture , Count
}
 Enum representing the bit indices. More...
 

Public Member Functions

size_t count () const
 Gets the number of requirements bits set to true.
 
bool getFlag (Requirement requirement) const
 Gets the flag at given index.
 
bool getFlag (size_t index) const
 Gets the flag at given index.
 
unsigned int getThreeBitValue (Requirement requirement) const
 Gets the flag at given index.
 
unsigned int getThreeBitValue (size_t index) const
 Gets the three-bit value at given index.
 
 MaterialRequirements ()=default
 Default constructor.
 
 MaterialRequirements (const MaterialRequirements &)=default
 Default copy constructor.
 
 MaterialRequirements (MaterialRequirements &&)=default
 Default move constructor.
 
 MaterialRequirements (string_view parsedString)
 Constructor.
 
bool operator< (const MaterialRequirements &rhs) const
 Less than -operator.
 
MaterialRequirementsoperator= (const MaterialRequirements &)=default
 Default copy operator.
 
MaterialRequirementsoperator= (MaterialRequirements &&)=default
 Default copy operator.
 

Static Public Attributes

static const size_t BitFieldSize
 Number of bits.
 

Protected Member Functions

void parseData (string_view parsedString)
 Parse the internal data contents.
 
void parseDefinition (string_view parsedString)
 Parse an individual definition into the correct location in the data.
 

Protected Attributes

data_type m_data
 Actual data for the requirements.
 

Detailed Description

Representation of material requirements as a fast-searchable bit field.

Since
Kanzi 4.0.0

Member Typedef Documentation

◆ data_type

Member Enumeration Documentation

◆ Requirement

Enum representing the bit indices.

Enumerator
KanziShaderOutputColor 

Shader should output color channel.

KanziShaderOutputColorIndex 

Color channel index.

KanziShaderOutputNormal 

Shader should output normal channel.

KanziShaderOutputNormalIndex 

Normal channel index.

KanziShaderOutputPbrSettings 

Shader should output PBR attributes channel.

KanziShaderOutputPbrSettingsIndex 

PBR attribute channel index.

KanziShaderLightCountDirectional 

Number of directional lights.

KanziShaderLightCountPoint 

Number of point lights.

KanziShaderLightCountSpot 

Number of spot lights.

KanziShaderShadowMapCountDirectional 

Number of directional shadow maps.

KanziShaderShadowMapCountPoint 

Number of point shadow maps.

KanziShaderShadowMapCountSpot 

Number of spot shadow maps.

KanziShaderUseSsaoTexture 

Shader should use SSAO texture input.

Count 

Number of bit fields.

Constructor & Destructor Documentation

◆ MaterialRequirements() [1/4]

kanzi::MaterialRequirements::MaterialRequirements ( )
explicitdefault

Default constructor.

◆ MaterialRequirements() [2/4]

kanzi::MaterialRequirements::MaterialRequirements ( string_view parsedString)
inlineexplicit

Constructor.

Parameters
parsedStringString to parse for contents.

◆ MaterialRequirements() [3/4]

kanzi::MaterialRequirements::MaterialRequirements ( const MaterialRequirements & )
default

Default copy constructor.

◆ MaterialRequirements() [4/4]

kanzi::MaterialRequirements::MaterialRequirements ( MaterialRequirements && )
default

Default move constructor.

Member Function Documentation

◆ operator=() [1/2]

MaterialRequirements & kanzi::MaterialRequirements::operator= ( const MaterialRequirements & )
default

Default copy operator.

◆ operator=() [2/2]

MaterialRequirements & kanzi::MaterialRequirements::operator= ( MaterialRequirements && )
default

Default copy operator.

◆ parseData()

void kanzi::MaterialRequirements::parseData ( string_view parsedString)
protected

Parse the internal data contents.

Parameters
parsedStringString to parse for contents.

◆ parseDefinition()

void kanzi::MaterialRequirements::parseDefinition ( string_view parsedString)
protected

Parse an individual definition into the correct location in the data.

Parameters
parsedStringDefinition string to parse.

◆ count()

size_t kanzi::MaterialRequirements::count ( ) const
inline

Gets the number of requirements bits set to true.

Returns
Number of nonzero requirements bits.

◆ getFlag() [1/2]

bool kanzi::MaterialRequirements::getFlag ( size_t index) const
inline

Gets the flag at given index.

Parameters
indexIndex to check.
Returns
Flag value at index.

◆ getFlag() [2/2]

bool kanzi::MaterialRequirements::getFlag ( Requirement requirement) const
inline

Gets the flag at given index.

Parameters
requirementRequirement to check.
Returns
Requirement flag value.

◆ getThreeBitValue() [1/2]

unsigned int kanzi::MaterialRequirements::getThreeBitValue ( size_t index) const
inline

Gets the three-bit value at given index.

Parameters
indexIndex to check.
Returns
Value at index.

◆ getThreeBitValue() [2/2]

unsigned int kanzi::MaterialRequirements::getThreeBitValue ( Requirement requirement) const
inline

Gets the flag at given index.

Parameters
requirementRequirement to check.
Returns
Requirement flag value.

◆ operator<()

bool kanzi::MaterialRequirements::operator< ( const MaterialRequirements & rhs) const

Less than -operator.

Parameters
rhsRight-hand-side operand.
Returns
If this is considered smaller than true, false otherwise.

Member Data Documentation

◆ BitFieldSize

const size_t kanzi::MaterialRequirements::BitFieldSize
static

Number of bits.

◆ m_data

data_type kanzi::MaterialRequirements::m_data
protected

Actual data for the requirements.

Stored as a bitset to make searching as fast as possible.


The documentation for this class was generated from the following file: