sending vu1 programs
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
#include "./bag/dynpip_bag.hpp"
|
||||
#include "renderer/core/renderer_core.hpp"
|
||||
#include "./dynpip_programs_repository.hpp"
|
||||
#include "./dynpip_qbuffer_renderer.hpp"
|
||||
#include "./dynpip_renderer.hpp"
|
||||
|
||||
namespace Tyra {
|
||||
|
||||
@@ -27,8 +27,17 @@ class DynPipCore {
|
||||
|
||||
void init(RendererCore* t_core);
|
||||
|
||||
/** Force starting VU1 program instead of continueing */
|
||||
void clear() { qbufferRenderer.clearLastProgramName(); }
|
||||
|
||||
/**
|
||||
* Send model matrix, lighting data and other
|
||||
* repetitve stuff to VU1
|
||||
*/
|
||||
void initParts(DynPipBag* data);
|
||||
|
||||
/** Render 3D via "bags" */
|
||||
void render(DynPipBag* data);
|
||||
void renderPart(DynPipBag* data, const bool& frustumCull = true);
|
||||
|
||||
/** Get max vert count of VU1 qbuffer (for optimizations) */
|
||||
u32 getMaxVertCountByParams(const bool& isSingleColor,
|
||||
@@ -44,8 +53,9 @@ class DynPipCore {
|
||||
void reinitVU1Programs();
|
||||
|
||||
private:
|
||||
M4x4 mvp;
|
||||
RendererCore* rendererCore;
|
||||
DynPipQBufferRenderer qbufferRenderer;
|
||||
DynPipRenderer qbufferRenderer;
|
||||
};
|
||||
|
||||
} // namespace Tyra
|
||||
|
||||
@@ -1,68 +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 <tamtypes.h>
|
||||
|
||||
namespace Tyra {
|
||||
|
||||
class DynPipQBufferRenderer {
|
||||
public:
|
||||
DynPipQBufferRenderer();
|
||||
~DynPipQBufferRenderer();
|
||||
|
||||
// void init(RendererCore* t_core);
|
||||
|
||||
// void reinitVU1();
|
||||
|
||||
// DynPipQBuffer* getBuffer();
|
||||
|
||||
// void sendObjectData(DynPipBag* bag, M4x4* mvp,
|
||||
// RendererCoreTextureBuffers* texBuffers) const;
|
||||
|
||||
// void setMaxVertCount(const u32& count);
|
||||
|
||||
// void setInfo(PipelineInfoBag* bag);
|
||||
|
||||
// void render(DynPipQBuffer* buffer);
|
||||
|
||||
// void clearLastProgramName();
|
||||
|
||||
const u16& getBufferSize() { return bufferSize; }
|
||||
|
||||
private:
|
||||
// void sendStaticData() const;
|
||||
// void setProgramsCache();
|
||||
// void uploadPrograms();
|
||||
// void setDoubleBuffer();
|
||||
|
||||
// void addBufferDataToPacket(DynPipVU1Program* program, DynPipQBuffer*
|
||||
// buffer); void sendPacket();
|
||||
|
||||
// packet2_t* packets[2];
|
||||
// packet2_t* programsPacket;
|
||||
// DynPipQBuffer buffers[2];
|
||||
// packet2_t* currentPacket;
|
||||
// packet2_t* staticDataPacket;
|
||||
// packet2_t* objectDataPacket;
|
||||
|
||||
// RendererCore* rendererCore;
|
||||
|
||||
// DynPipProgramName lastProgramName;
|
||||
// Path1* path1;
|
||||
// DynPipClipper clipper;
|
||||
// DynPipProgramsRepository repository;
|
||||
|
||||
u16 bufferSize;
|
||||
// u8 context;
|
||||
};
|
||||
|
||||
} // namespace Tyra
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
# ______ ____ ___
|
||||
# | \/ ____| |___|
|
||||
# | | | \ | |
|
||||
#-----------------------------------------------------------------------
|
||||
# Copyright 2022, tyra - https://github.com/h4570/tyra
|
||||
# Licenced under Apache License 2.0
|
||||
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <tamtypes.h>
|
||||
#include "renderer/core/renderer_core.hpp"
|
||||
#include "./dynpip_programs_repository.hpp"
|
||||
|
||||
namespace Tyra {
|
||||
|
||||
class DynPipRenderer {
|
||||
public:
|
||||
DynPipRenderer();
|
||||
~DynPipRenderer();
|
||||
|
||||
void init(RendererCore* t_core, DynPipProgramsRepository* t_programRepo);
|
||||
|
||||
void reinitVU1();
|
||||
|
||||
// DynPipQBuffer* getBuffer();
|
||||
|
||||
void sendObjectData(DynPipBag* bag, M4x4* mvp,
|
||||
RendererCoreTextureBuffers* texBuffers) const;
|
||||
|
||||
// void setMaxVertCount(const u32& count);
|
||||
|
||||
// void setInfo(PipelineInfoBag* bag);
|
||||
|
||||
// void render(DynPipQBuffer* buffer);
|
||||
|
||||
void clearLastProgramName();
|
||||
|
||||
const u16& getBufferSize() { return bufferSize; }
|
||||
|
||||
private:
|
||||
void sendStaticData() const;
|
||||
void setProgramsCache();
|
||||
void uploadPrograms();
|
||||
void setDoubleBuffer();
|
||||
|
||||
// void addBufferDataToPacket(DynPipVU1Program* program, DynPipQBuffer*
|
||||
// buffer); void sendPacket();
|
||||
// DynPipQBuffer buffers[2];
|
||||
|
||||
packet2_t* packets[2];
|
||||
packet2_t* programsPacket;
|
||||
packet2_t* currentPacket;
|
||||
packet2_t* staticDataPacket;
|
||||
packet2_t* objectDataPacket;
|
||||
|
||||
DynPipProgramsRepository* programsRepo;
|
||||
RendererCore* rendererCore;
|
||||
Path1* path1;
|
||||
|
||||
DynPipProgramName lastProgramName;
|
||||
|
||||
u16 bufferSize;
|
||||
u8 context;
|
||||
};
|
||||
|
||||
} // namespace Tyra
|
||||
@@ -18,7 +18,7 @@
|
||||
// #define VU1_LIGHTS_DIRS_ADDR 11
|
||||
// #define VU1_LIGHTS_COLORS_ADDR 14
|
||||
// #define VU1_SET_GIFTAG_ADDR 18
|
||||
// #define VU1_LAST_ITEM_ADDR 18
|
||||
#define VU1_LAST_ITEM_ADDR 18
|
||||
|
||||
// Buffer data (xtop)
|
||||
#define VU1_VERT_DATA_ADDR 2
|
||||
|
||||
Reference in New Issue
Block a user