Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
Graphic::Resource::ShaderDescriptor Class Reference

#include <ShaderDescriptor.hpp>

Inheritance diagram for Graphic::Resource::ShaderDescriptor:
Graphic::Utils::IValidable

Public Member Functions

 ShaderDescriptor ()=default
 ~ShaderDescriptor () override=default
ShaderDescriptorsetShader (std::string_view source)
ShaderDescriptorsetShaderFromFile (const std::filesystem::path &path)
ShaderDescriptorsetVertexEntryPoint (std::string_view entryPoint)
ShaderDescriptorsetFragmentEntryPoint (std::string_view entryPoint)
ShaderDescriptoraddVertexBufferLayout (const Utils::VertexBufferLayout &layout)
Utils::VertexBufferLayoutgetVertexBufferLayout (size_t index)
ShaderDescriptoraddBindGroupLayout (const Utils::BindGroupLayout &layout)
Utils::BindGroupLayoutgetBindGroupLayout (size_t index)
ShaderDescriptoraddOutputColorFormat (const Utils::ColorTargetState &state)
ShaderDescriptorsetOutputDepthFormat (const Utils::DepthStencilState &state)
ShaderDescriptorsetCullMode (wgpu::CullMode mode)
ShaderDescriptorsetPrimitiveTopology (wgpu::PrimitiveTopology topology)
ShaderDescriptorsetName (std::string_view name)
std::vector< Utils::ValidationErrorvalidate (void) const override
 Validate the ShaderDescriptor and all contained layouts/states.
const std::string & getName () const
const std::list< Utils::BindGroupLayout > & getBindGroupLayouts () const
const std::list< Utils::VertexBufferLayout > & getVertexBufferLayouts () const
const std::list< Utils::ColorTargetState > & getOutputColorFormats () const
const std::optional< Utils::DepthStencilState > & getOutputDepthFormat () const
const std::optional< std::string > & getShaderSource () const
const std::string & getFragmentEntryPoint () const
const std::string & getVertexEntryPoint () const
wgpu::PrimitiveTopology getPrimitiveTopology () const
wgpu::CullMode getCullMode () const
Public Member Functions inherited from Graphic::Utils::IValidable
virtual ~IValidable ()=default

Private Attributes

std::optional< std::string > _name
std::list< Utils::BindGroupLayout_bindGroupLayouts
std::list< Utils::VertexBufferLayout_vertexBufferLayouts
std::list< Utils::ColorTargetState_outputColorFormats
std::optional< std::string > _shaderSource
std::optional< std::string > _fragmentEntryPoint
std::optional< std::string > _vertexEntryPoint
std::optional< Utils::DepthStencilState_outputDepthFormat
wgpu::PrimitiveTopology _primitiveTopology = wgpu::PrimitiveTopology::TriangleList
wgpu::CullMode _cullMode = wgpu::CullMode::Back

Static Private Attributes

static const std::string _DEFAULT_FRAGMENT_ENTRY_POINT = "fs_main"
static const std::string _DEFAULT_VERTEX_ENTRY_POINT = "vs_main"
static const std::string _DEFAULT_NAME = "Unnamed"

Constructor & Destructor Documentation

◆ ShaderDescriptor()

Graphic::Resource::ShaderDescriptor::ShaderDescriptor ( )
default

◆ ~ShaderDescriptor()

Graphic::Resource::ShaderDescriptor::~ShaderDescriptor ( )
overridedefault

Member Function Documentation

◆ addBindGroupLayout()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::addBindGroupLayout ( const Utils::BindGroupLayout & layout)
inline

◆ addOutputColorFormat()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::addOutputColorFormat ( const Utils::ColorTargetState & state)
inline

◆ addVertexBufferLayout()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::addVertexBufferLayout ( const Utils::VertexBufferLayout & layout)
inline

◆ getBindGroupLayout()

Utils::BindGroupLayout & Graphic::Resource::ShaderDescriptor::getBindGroupLayout ( size_t index)
inline

◆ getBindGroupLayouts()

const std::list< Utils::BindGroupLayout > & Graphic::Resource::ShaderDescriptor::getBindGroupLayouts ( ) const
inline

◆ getCullMode()

wgpu::CullMode Graphic::Resource::ShaderDescriptor::getCullMode ( ) const
inline

◆ getFragmentEntryPoint()

const std::string & Graphic::Resource::ShaderDescriptor::getFragmentEntryPoint ( ) const
inline

◆ getName()

const std::string & Graphic::Resource::ShaderDescriptor::getName ( ) const
inline

◆ getOutputColorFormats()

const std::list< Utils::ColorTargetState > & Graphic::Resource::ShaderDescriptor::getOutputColorFormats ( ) const
inline

◆ getOutputDepthFormat()

const std::optional< Utils::DepthStencilState > & Graphic::Resource::ShaderDescriptor::getOutputDepthFormat ( ) const
inline

◆ getPrimitiveTopology()

wgpu::PrimitiveTopology Graphic::Resource::ShaderDescriptor::getPrimitiveTopology ( ) const
inline

◆ getShaderSource()

const std::optional< std::string > & Graphic::Resource::ShaderDescriptor::getShaderSource ( ) const
inline

◆ getVertexBufferLayout()

Utils::VertexBufferLayout & Graphic::Resource::ShaderDescriptor::getVertexBufferLayout ( size_t index)
inline

◆ getVertexBufferLayouts()

const std::list< Utils::VertexBufferLayout > & Graphic::Resource::ShaderDescriptor::getVertexBufferLayouts ( ) const
inline

◆ getVertexEntryPoint()

const std::string & Graphic::Resource::ShaderDescriptor::getVertexEntryPoint ( ) const
inline

◆ setCullMode()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setCullMode ( wgpu::CullMode mode)
inline

◆ setFragmentEntryPoint()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setFragmentEntryPoint ( std::string_view entryPoint)
inline

◆ setName()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setName ( std::string_view name)
inline

◆ setOutputDepthFormat()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setOutputDepthFormat ( const Utils::DepthStencilState & state)
inline

◆ setPrimitiveTopology()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setPrimitiveTopology ( wgpu::PrimitiveTopology topology)
inline

◆ setShader()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setShader ( std::string_view source)
inline

◆ setShaderFromFile()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setShaderFromFile ( const std::filesystem::path & path)
inline

◆ setVertexEntryPoint()

ShaderDescriptor & Graphic::Resource::ShaderDescriptor::setVertexEntryPoint ( std::string_view entryPoint)
inline

◆ validate()

std::vector< Utils::ValidationError > Graphic::Resource::ShaderDescriptor::validate ( void ) const
inlineoverridevirtual

Validate the ShaderDescriptor and all contained layouts/states.

Performs checks for required top-level fields and aggregates validation results from vertex buffer layouts, bind group layouts, color target states, and optional depth-stencil state. Missing shader source is reported with severity Error; missing name, vertex/fragment entry points or vertex buffer layouts are reported with severity Warning.

Returns
std::vector<Utils::ValidationError> A list of validation errors found; empty if none. Each returned error's location is prefixed with contextual information such as "ShaderDescriptor", "ShaderDescriptor::(i)...", or "ShaderDescriptor::DepthStencil".

Implements Graphic::Utils::IValidable.

Member Data Documentation

◆ _bindGroupLayouts

std::list<Utils::BindGroupLayout> Graphic::Resource::ShaderDescriptor::_bindGroupLayouts
private

◆ _cullMode

wgpu::CullMode Graphic::Resource::ShaderDescriptor::_cullMode = wgpu::CullMode::Back
private

◆ _DEFAULT_FRAGMENT_ENTRY_POINT

const std::string Graphic::Resource::ShaderDescriptor::_DEFAULT_FRAGMENT_ENTRY_POINT = "fs_main"
inlinestaticprivate

◆ _DEFAULT_NAME

const std::string Graphic::Resource::ShaderDescriptor::_DEFAULT_NAME = "Unnamed"
inlinestaticprivate

◆ _DEFAULT_VERTEX_ENTRY_POINT

const std::string Graphic::Resource::ShaderDescriptor::_DEFAULT_VERTEX_ENTRY_POINT = "vs_main"
inlinestaticprivate

◆ _fragmentEntryPoint

std::optional<std::string> Graphic::Resource::ShaderDescriptor::_fragmentEntryPoint
private

◆ _name

std::optional<std::string> Graphic::Resource::ShaderDescriptor::_name
private

◆ _outputColorFormats

std::list<Utils::ColorTargetState> Graphic::Resource::ShaderDescriptor::_outputColorFormats
private

◆ _outputDepthFormat

std::optional<Utils::DepthStencilState> Graphic::Resource::ShaderDescriptor::_outputDepthFormat
private

◆ _primitiveTopology

wgpu::PrimitiveTopology Graphic::Resource::ShaderDescriptor::_primitiveTopology = wgpu::PrimitiveTopology::TriangleList
private

◆ _shaderSource

std::optional<std::string> Graphic::Resource::ShaderDescriptor::_shaderSource
private

◆ _vertexBufferLayouts

std::list<Utils::VertexBufferLayout> Graphic::Resource::ShaderDescriptor::_vertexBufferLayouts
private

◆ _vertexEntryPoint

std::optional<std::string> Graphic::Resource::ShaderDescriptor::_vertexEntryPoint
private

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