LLGL 0.05 Beta
Loading...
Searching...
No Matches
LLGL::MeshPipelineDescriptor Struct Reference

Mesh pipeline state descriptor structure. More...

#include <PipelineStateFlags.h>

Public Member Functions

 MeshPipelineDescriptor ()=default
 MeshPipelineDescriptor (const MeshPipelineDescriptor &)=default
MeshPipelineDescriptor & operator= (const MeshPipelineDescriptor &)=default

Public Attributes

const char * debugName = nullptr
 Optional name for debugging purposes. By default null.
const PipelineLayout * pipelineLayout = nullptr
 Specifies an optional pipeline layout for the graphics pipeline. By default null.
const RenderPass * renderPass = nullptr
 Specifies an optional render pass. By default null.
Shader * taskShader = nullptr
 Specifies an optional task shader.
Shader * amplificationShader = nullptr
Shader * meshShader = nullptr
 Specifies the mesh shader.
Shader * fragmentShader = nullptr
 Specifies an optional fragment shader (also referred to as "Pixel Shader").
DynamicVector< Viewport > viewports
 Specifies an optional list of static viewports. If empty, the viewports must be set dynamically with the command buffer.
DynamicVector< Scissor > scissors
 Specifies an optional list of static scissor rectangles. If empty, the scissors must be set dynamically with the command buffer.
DepthDescriptor depth
 Specifies the depth state for the depth-stencil stage.
StencilDescriptor stencil
 Specifies the stencil state for the depth-stencil stage.
RasterizerDescriptor rasterizer
 Specifies the state for the rasterizer stage.
BlendDescriptor blend
 Specifies the state descriptor for the blend stage.

Detailed Description

Mesh pipeline state descriptor structure.

Remarks
This structure describes the entire mesh-based graphics pipeline. Unlike the traditional graphics pipeline, the mesh pipeline provides two new shader stages: amplification and mesh shaders. These replace the traditional shader and fixed-function stages for vertex processing. Only the fragment shader remains from the traditional PSO.
See also
RenderSystem::CreatePipelineState(const MeshPipelineDescriptor&)
Note
Only supported with: Direct3D 12.

Constructor & Destructor Documentation

◆ MeshPipelineDescriptor() [1/2]

LLGL::MeshPipelineDescriptor::MeshPipelineDescriptor ( )
inlinedefault

◆ MeshPipelineDescriptor() [2/2]

LLGL::MeshPipelineDescriptor::MeshPipelineDescriptor ( const MeshPipelineDescriptor & )
inlinedefault

Member Function Documentation

◆ operator=()

MeshPipelineDescriptor & LLGL::MeshPipelineDescriptor::operator= ( const MeshPipelineDescriptor & )
inlinedefault

Member Data Documentation

◆ amplificationShader

Shader* LLGL::MeshPipelineDescriptor::amplificationShader = nullptr
Deprecated
Since 0.05b; Use taskShader instead!

◆ blend

BlendDescriptor LLGL::MeshPipelineDescriptor::blend

Specifies the state descriptor for the blend stage.

◆ debugName

const char* LLGL::MeshPipelineDescriptor::debugName = nullptr

Optional name for debugging purposes. By default null.

Remarks
The final name of the native hardware resource is implementation defined.
See also
RenderSystemChild::SetDebugName

◆ depth

DepthDescriptor LLGL::MeshPipelineDescriptor::depth

Specifies the depth state for the depth-stencil stage.

◆ fragmentShader

Shader* LLGL::MeshPipelineDescriptor::fragmentShader = nullptr

Specifies an optional fragment shader (also referred to as "Pixel Shader").

Remarks
If no fragment shader is specified, generated fragments are discarded by the output merger and only the stream-output functionality as well as depth writes are used by either the vertex or geometry shader. If a depth buffer is attached to the current render target, omitting the fragment shader can be utilized to render a standard shadow map.

◆ meshShader

Shader* LLGL::MeshPipelineDescriptor::meshShader = nullptr

Specifies the mesh shader.

Remarks
This is mandatory for mesh PSOs.

◆ pipelineLayout

const PipelineLayout* LLGL::MeshPipelineDescriptor::pipelineLayout = nullptr

Specifies an optional pipeline layout for the graphics pipeline. By default null.

Remarks
This layout determines at which slots buffer resources will be bound. If this is null, a default layout will be used that is only compatible with graphics pipelines that have no binding points, i.e. no input/output buffers or textures.
See also
RenderSystem::CreatePipelineLayout

◆ rasterizer

RasterizerDescriptor LLGL::MeshPipelineDescriptor::rasterizer

Specifies the state for the rasterizer stage.

◆ renderPass

const RenderPass* LLGL::MeshPipelineDescriptor::renderPass = nullptr

Specifies an optional render pass. By default null.

Remarks
If this is null, the render pass of the SwapChain that was first created is used. This render pass must be compatible with the one passed to the CommandBuffer::BeginRenderPass function in which the graphics pipeline will be used.
See also
CommandBuffer::BeginRenderPass
RenderSystem::CreateRenderPass

◆ scissors

DynamicVector<Scissor> LLGL::MeshPipelineDescriptor::scissors

Specifies an optional list of static scissor rectangles. If empty, the scissors must be set dynamically with the command buffer.

Remarks
This list must have the same number of entries as viewports, unless one of the lists is empty.
See also
CommandBuffer::SetScissor
CommandBuffer::SetScissors

◆ stencil

StencilDescriptor LLGL::MeshPipelineDescriptor::stencil

Specifies the stencil state for the depth-stencil stage.

◆ taskShader

Shader* LLGL::MeshPipelineDescriptor::taskShader = nullptr

Specifies an optional task shader.

Remarks
This is optional to further optimize the PSO.

◆ viewports

DynamicVector<Viewport> LLGL::MeshPipelineDescriptor::viewports

Specifies an optional list of static viewports. If empty, the viewports must be set dynamically with the command buffer.

Remarks
This list must have the same number of entries as scissors, unless one of the lists is empty.
See also
CommandBuffer::SetViewport
CommandBuffer::SetViewports

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