Started implementing Pipeline system for RenderDriver

This commit is contained in:
2025-04-22 13:04:14 +10:00
parent 8ac7a46f53
commit 8d398b9c00
5 changed files with 255 additions and 6 deletions

View File

@@ -0,0 +1,44 @@
/**
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#pragma once
#include <nova/render/render_fwd.h>
#include <nova/types.h>
#include <unordered_map>
namespace Nova {
struct GraphicsPipelineParams {
std::unordered_map<ShaderStage, ShaderID> shaders;
// TODO: Vertex input state
PrimitiveTopology topology = PrimitiveTopology::TRIANGLE_LIST;
// TODO: Tessellation state
bool enable_depth_clamp = false;
bool discard_primitives = false;
bool wireframe = false;
CullMode cull_mode = CullMode::NONE;
FrontFace front_face = FrontFace::COUNTER_CLOCKWISE;
bool enable_depth_bias = false;
float depth_bias_constant = 0.0f;
float depth_bias_clamp = 0.0f;
float depth_bias_slope = 0.0f;
float line_width = 1.0f;
// TODO: Multisample state
// TODO: Depth stencil state
// TODO: Color blend state
// TODO: Dynamic state
RenderPassID render_pass = nullptr;
u32 subpass = 0;
};
struct ComputePipelineParams {};
} // namespace Nova