init dynpip bag

This commit is contained in:
h4570
2022-07-18 23:16:47 +02:00
parent efdec2c52e
commit 0953ce3f19
33 changed files with 321 additions and 80 deletions
@@ -11,8 +11,8 @@
#pragma once
#include "math/vec4.hpp"
#include "./stapip_lighting_bag.hpp"
#include "./stapip_info_bag.hpp"
#include "renderer/3d/pipeline/shared/bag/pipeline_lighting_bag.hpp"
#include "renderer/3d/pipeline/shared/bag/pipeline_info_bag.hpp"
#include "./stapip_color_bag.hpp"
#include "./stapip_texture_bag.hpp"
#include "renderer/core/texture/models/texture.hpp"
@@ -22,7 +22,7 @@ namespace Tyra {
/**
* @brief 3D Render data bag.
* Supports frustum culling, clipping, lighting,
* Supports frustum culling, full plane clipping, lighting,
* texture and single color / many colors.
*/
class StaPipBag {
@@ -31,7 +31,7 @@ class StaPipBag {
~StaPipBag();
/** Mandatory. Object info. */
StaPipInfoBag* info;
PipelineInfoBag* info;
/** Mandatory. Object color(s). */
StaPipColorBag* color;
@@ -46,7 +46,7 @@ class StaPipBag {
StaPipTextureBag* texture;
/** Optional. Object lighting. */
StaPipLightingBag* lighting;
PipelineLightingBag* lighting;
/**
* @param maxVertCount This parameter is available in renderer API.
@@ -1,34 +0,0 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include <draw.h>
#include "math/m4x4.hpp"
#include "math/vec4.hpp"
#include "../../stapip_shading_type.hpp"
namespace Tyra {
class StaPipInfoBag {
public:
StaPipInfoBag();
~StaPipInfoBag();
/** Mandatory. Model matrix */
M4x4* model;
StaPipShadingType shadingType;
bool blendingEnabled;
bool antiAliasingEnabled;
bool noClipChecks;
};
} // namespace Tyra
@@ -1,56 +0,0 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include "renderer/models/color.hpp"
#include "math/m4x4.hpp"
#include "math/vec4.hpp"
namespace Tyra {
enum StaPipLightingBagMode { Auto, Manual };
class StaPipLightingBag {
public:
explicit StaPipLightingBag(const bool& manual = false);
~StaPipLightingBag();
Vec4* normals;
M4x4* lightMatrix;
void setAmbientColor(const Color& color);
void setDirectionalLightColors(Color* colors, const u8& count);
void setDirectionalLightDirections(Vec4* directions, const u8& count);
void setDirectionalLightColor(const Color& color, const u8& index);
void setDirectionalLightDirection(const Vec4& direction, const u8& index);
void setLightsManually(Vec4* colors, Vec4* directions);
void disableManualMode();
Vec4* getLightColors() { return lightColors; }
Vec4* getLightDirections() { return lightDirections; }
void forceDeallocateColors();
void forceDeallocateDirections();
private:
void allocate();
void deallocate();
void forceDeallocate();
u8 isAllocated;
StaPipLightingBagMode mode;
Vec4* lightColors;
Vec4* lightDirections;
};
} // namespace Tyra
@@ -46,7 +46,7 @@ class StaPipQBufferRenderer {
void setMaxVertCount(const u32& count);
void setInfo(StaPipInfoBag* bag);
void setInfo(PipelineInfoBag* bag);
/** Fast render with culling */
void cull(StaPipQBuffer* buffer);
@@ -10,7 +10,7 @@
#pragma once
#include "./stapip_shading_type.hpp"
#include "renderer/3d/pipeline/shared/bag/pipeline_shading_type.hpp"
#include "./stapip_lighting_options.hpp"
namespace Tyra {
@@ -20,7 +20,7 @@ class StaPipOptions {
StaPipOptions() {}
~StaPipOptions() {}
StaPipShadingType shadingType;
PipelineShadingType shadingType;
bool blendingEnabled;
bool antiAliasingEnabled;
bool noClipChecks;
@@ -1,20 +0,0 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
namespace Tyra {
enum StaPipShadingType {
StaPipShadingFlat,
StaPipShadingGouraud,
};
} // namespace Tyra
@@ -41,16 +41,16 @@ class StaticPipeline : public Renderer3DPipeline {
void addVertices(DynamicMesh* mesh, MeshMaterial* material, StaPipBag* bag,
MeshFrame* frameFrom, MeshFrame* frameTo) const;
StaPipInfoBag* getInfoBag(DynamicMesh* mesh, const StaPipOptions* options,
M4x4* model) const;
PipelineInfoBag* getInfoBag(DynamicMesh* mesh, const StaPipOptions* options,
M4x4* model) const;
StaPipColorBag* getColorBag(DynamicMesh* mesh, MeshMaterial* material,
MeshFrame* frameFrom, MeshFrame* frameTo) const;
StaPipTextureBag* getTextureBag(DynamicMesh* mesh, MeshMaterial* material,
MeshFrame* frameFrom, MeshFrame* frameTo);
StaPipLightingBag* getLightingBag(DynamicMesh* mesh, MeshMaterial* material,
M4x4* model, MeshFrame* frameFrom,
MeshFrame* frameTo,
const StaPipOptions* options) const;
PipelineLightingBag* getLightingBag(DynamicMesh* mesh, MeshMaterial* material,
M4x4* model, MeshFrame* frameFrom,
MeshFrame* frameTo,
const StaPipOptions* options) const;
void deallocDrawBags(StaPipBag* bag, MeshMaterial* material) const;
void setLightingColorsCache(StaPipLightingOptions* lightingOptions);