12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
- // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
- // SPDX-License-Identifier: MIT
- #pragma once
- /// Defines how primitives should be rendered
- class PipelineState
- {
- public:
- /// Describes the input layout of the vertex shader
- enum class EInputDescription
- {
- Position, ///< 3 float position
- Color, ///< 4 uint8 color
- Normal, ///< 3 float normal
- TexCoord, ///< 2 float texture coordinate
- InstanceColor, ///< 4 uint8 per instance color
- InstanceTransform, ///< 4x4 float per instance transform
- InstanceInvTransform, ///< 4x4 float per instance inverse transform
- };
- /// In which draw pass to use this pipeline state
- enum class EDrawPass
- {
- Shadow,
- Normal
- };
- /// The type of topology to emit
- enum class ETopology
- {
- Triangle,
- Line
- };
- /// Fill mode of the triangles
- enum class EFillMode
- {
- Solid,
- Wireframe
- };
- /// If depth write / depth test is on
- enum class EDepthTest
- {
- Off,
- On
- };
- /// How to blend the pixel from the shader in the back buffer
- enum class EBlendMode
- {
- Write,
- AlphaBlend,
- };
- /// How to cull triangles
- enum class ECullMode
- {
- Backface,
- FrontFace,
- };
- /// Destructor
- virtual ~PipelineState() = default;
- /// Make this pipeline state active (any primitives rendered after this will use this state)
- virtual void Activate() = 0;
- };
|