gzdoom-gles/src/swrenderer/viewport/r_skydrawer.h

62 lines
1.9 KiB
C++

#pragma once
#include "r_drawerargs.h"
struct FSWColormap;
struct FLightNode;
namespace swrenderer
{
class RenderThread;
class SkyDrawerArgs : public DrawerArgs
{
public:
void SetDest(RenderViewport *viewport, int x, int y);
void SetCount(int count) { dc_count = count; }
void SetFrontTexture(RenderThread *thread, FTexture *texture, uint32_t column);
void SetBackTexture(RenderThread *thread, FTexture *texture, uint32_t column);
void SetTextureVPos(uint32_t texturefrac) { dc_texturefrac = texturefrac; }
void SetTextureVStep(uint32_t iscale) { dc_iscale = iscale; }
void SetSolidTop(uint32_t color) { solid_top = color; }
void SetSolidBottom(uint32_t color) { solid_bottom = color; }
void SetFadeSky(bool enable) { fadeSky = enable; }
uint8_t *Dest() const { return dc_dest; }
int DestY() const { return dc_dest_y; }
int Count() const { return dc_count; }
uint32_t TextureVPos() const { return dc_texturefrac; }
uint32_t TextureVStep() const { return dc_iscale; }
uint32_t SolidTopColor() const { return solid_top; }
uint32_t SolidBottomColor() const { return solid_bottom; }
bool FadeSky() const { return fadeSky; }
const uint8_t *FrontTexturePixels() const { return dc_source; }
const uint8_t *BackTexturePixels() const { return dc_source2; }
int FrontTextureHeight() const { return dc_sourceheight; }
int BackTextureHeight() const { return dc_sourceheight2; }
RenderViewport *Viewport() const { return dc_viewport; }
void DrawSingleSkyColumn(RenderThread *thread);
void DrawDoubleSkyColumn(RenderThread *thread);
private:
uint8_t *dc_dest = nullptr;
int dc_dest_y = 0;
int dc_count = 0;
const uint8_t *dc_source;
const uint8_t *dc_source2;
uint32_t dc_sourceheight;
uint32_t dc_sourceheight2;
uint32_t dc_texturefrac;
uint32_t dc_iscale;
uint32_t solid_top;
uint32_t solid_bottom;
bool fadeSky;
RenderViewport *dc_viewport = nullptr;
};
}