jak-project/game/graphics/opengl_renderer/SkyRenderer.h
water111 a6fa04a83d
[graphics] port generic VU1 to OpenGL (#1221)
* temp

* name the obvious ones

* un-pipelined the fast case in generic vu1

* generic2 dma

* pass2

* first pass at opengl

* many fixes

* fix hud, strip

* windows fix

* final tweaks

* memcard folder

* add missing include
2022-03-06 19:56:43 -05:00

49 lines
1.5 KiB
C++

#pragma once
#include "game/graphics/opengl_renderer/BucketRenderer.h"
#include "game/graphics/opengl_renderer/DirectRenderer.h"
#include "game/graphics/opengl_renderer/background/TFragment.h"
#include "game/graphics//opengl_renderer/SkyBlendGPU.h"
#include "game/graphics//opengl_renderer/SkyBlendCPU.h"
/*!
* Handles texture blending for the sky.
* Will insert the result texture into the texture pool.
*/
class SkyBlendHandler : public BucketRenderer {
public:
SkyBlendHandler(const std::string& name,
BucketId my_id,
int level_id,
std::shared_ptr<SkyBlendGPU> shared_gpu_blender,
std::shared_ptr<SkyBlendCPU> shared_cpu_blender);
void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override;
void draw_debug_window() override;
private:
void handle_sky_copies(DmaFollower& dma,
SharedRenderState* render_state,
ScopedProfilerNode& prof);
std::shared_ptr<SkyBlendGPU> m_shared_gpu_blender;
std::shared_ptr<SkyBlendCPU> m_shared_cpu_blender;
SkyBlendStats m_gpu_stats;
TFragment m_tfrag_renderer;
};
/*!
* Handles sky drawing.
*/
class SkyRenderer : public BucketRenderer {
public:
SkyRenderer(const std::string& name, BucketId my_id);
void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override;
void draw_debug_window() override;
private:
DirectRenderer m_direct_renderer;
struct FrameStats {
int gif_packets = 0;
} m_frame_stats;
};