init commit

This commit is contained in:
2025-06-11 22:45:11 +08:00
commit 71307f3e53
115 changed files with 13922 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
#pragma once
#include "dvc_config.h"
#include "math/dvc_vector2.h"
#include "math/dvc_vector3.h"
DV_CORE_BEGIN_NAMESPACE
class DV_CORE_API Rasterizer
{
//Draw Line
public:
typedef std::function<void(const std::pair<int32_t, int32_t>&, float)> DrawLineCallback;
//Bresenham's line algorithm
static void drawLine(int32_t canvasWidth, int32_t canvasHeight,
const fVector2& start, const fVector2& end,
DrawLineCallback callback);
//Draw Triangle
public:
typedef std::function<void(const std::pair<int32_t, int32_t>& pos, const fVector3& percent)> DrawTriangleCallback;
//Larrabee algorithm
static void drawTriangleLarrabee(int32_t canvasWidth, int32_t canvasHeight,
const fVector2& v0, const fVector2& v1, const fVector2& v2,
DrawTriangleCallback callback, bool ccw=true);
//Scaleline algorithm
static void drawTriangleScanline(int32_t canvasWidth, int32_t canvasHeight,
const fVector3& v0, const fVector3& v1, const fVector3& v2,
DrawTriangleCallback callback);
};
DV_CORE_END_NAMESPACE
@@ -0,0 +1,30 @@
#pragma once
#include "dvc_config.h"
#include "scene/dvc_scene.h"
#include "device/dvc_render_target.h"
DV_CORE_BEGIN_NAMESPACE
class DV_CORE_API RenderQueue
{
public:
void pushRenderable(RenderableConstPtr renderable);
size_t getRenderableCounts() const {
return m_queue.size();
}
RenderableConstPtr getRenderable(size_t index) const;
void build(const Scene& scene);
void process(UniformBuffer& uniformBuffer, RenderTarget& renderTarget);
protected:
std::vector<RenderableConstPtr> m_queue;
public:
RenderQueue();
~RenderQueue();
};
DV_CORE_END_NAMESPACE
@@ -0,0 +1,35 @@
#pragma once
#include "dvc_config.h"
#include "math/dvc_matrix4.h"
#include "dvc_render_queue.h"
DV_CORE_BEGIN_NAMESPACE
class InputAssemberStep
{
public:
typedef std::map<VertexElementType, DeviceBufferAccessorConstPtr> PrimitiveAttributes;
struct Node
{
fMatrix4 transform;
PrimitiveType primitiveType;
PrimitiveAttributes vertexData;
DeviceBufferAccessorConstPtr indices;
VertexShaderInterface* vs;
};
typedef std::vector<Node> NodeArray;
public:
void process(const RenderQueue& renderQueue);
const NodeArray& getNodes(void) const {
return m_nodes;
}
protected:
NodeArray m_nodes;
};
DV_CORE_END_NAMESPACE
@@ -0,0 +1,15 @@
#pragma once
#include "dvc_config.h"
#include "dvc_render_step_VS.h"
DV_CORE_BEGIN_NAMESPACE
class PixelShaderStep
{
public:
void process(const VertexShaderStep::NodeArray& vsNodeArray, RenderTarget& renderTarget);
};
DV_CORE_END_NAMESPACE
@@ -0,0 +1,35 @@
#pragma once
#include "dvc_config.h"
#include "dvc_render_step_IA.h"
#include "device/dvc_uniform_buffer.h"
#include "device/dvc_vertex_desc.h"
DV_CORE_BEGIN_NAMESPACE
class VertexShaderStep
{
public:
struct Node
{
DeviceBufferPtr vertexBuf;
VertexDesc vertexDesc;
size_t vertexCounts;
std::vector<float32_t> depth;
std::vector<float32_t> invZ;
};
typedef std::vector<Node> NodeArray;
public:
const NodeArray& getNodes() const {
return m_nodes;
}
public:
void process(UniformBuffer& uniformBuffer, const InputAssemberStep::NodeArray& assembedNodeArray);
protected:
NodeArray m_nodes;
};
DV_CORE_END_NAMESPACE
+21
View File
@@ -0,0 +1,21 @@
#pragma once
#include "dvc_config.h"
#include "math/dvc_matrix4.h"
#include "pipe/dvc_render_step_IA.h"
DV_CORE_BEGIN_NAMESPACE
class Renderable
{
public:
virtual bool buildAssemberNode(InputAssemberStep::Node& node) const = 0;
protected:
fMatrix4 m_worldTransform;
public:
Renderable(const fMatrix4& worldTransform);
};
DV_CORE_END_NAMESPACE
@@ -0,0 +1,21 @@
#pragma once
#include "dvc_config.h"
#include "dvc_renderable.h"
#include "asset/dvc_mesh.h"
DV_CORE_BEGIN_NAMESPACE
class RenderableEntity : public Renderable
{
public:
virtual bool buildAssemberNode(InputAssemberStep::Node& node) const;
protected:
Mesh::PrimitiveConstPtr m_primitive;
public:
RenderableEntity(Mesh::PrimitiveConstPtr primitive, const fMatrix4& worldTransform);
};
DV_CORE_END_NAMESPACE