From 98ff70f6ef30f5b3d742a7fa51e568aaf1b6720b Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Sat, 11 Jul 2020 19:35:18 -0700 Subject: [PATCH] Added new rendertexture class for FBO's. --- code/CMakeLists.txt | 5 +- code/redalert/function.h | 1 + code/redalert/light.cpp | 7 +- code/redalert/light.h | 1 + code/redalert/newblit.cpp | 4 + code/redalert/rendertexture.cpp | 136 ++++++++++++++++++++++++++++++++ code/redalert/rendertexture.h | 43 ++++++++++ ui/lights/light_point_atten.png | Bin 0 -> 46359 bytes 8 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 code/redalert/rendertexture.cpp create mode 100644 code/redalert/rendertexture.h create mode 100644 ui/lights/light_point_atten.png diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index d318cb8..c171a81 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -631,7 +631,10 @@ set(src_redalert ./redalert/mapscript.cpp ./redalert/txtprnt.cpp ./redalert/tilesetxml.cpp - "redalert/sidebareditor.cpp" "redalert/light.cpp") + "redalert/sidebareditor.cpp" + "redalert/rendertexture.cpp" + "redalert/rendertexture.h" + "redalert/light.cpp") set(src_external #glew diff --git a/code/redalert/function.h b/code/redalert/function.h index 3952823..2cf325d 100644 --- a/code/redalert/function.h +++ b/code/redalert/function.h @@ -235,6 +235,7 @@ struct NoInitClass { #include "shastraw.h" #include "rndstraw.h" #include "light.h" +#include "rendertexture.h" // Should be part of WWLIB.H. This is used in JSHELL.CPP. typedef struct { diff --git a/code/redalert/light.cpp b/code/redalert/light.cpp index 2f81c18..42fd4ea 100644 --- a/code/redalert/light.cpp +++ b/code/redalert/light.cpp @@ -29,15 +29,16 @@ LightManager::LightManager() { void LightManager::Init(void) { lightEditorIcon = Image_LoadImage("ui/edwin/lightbulb.png"); + pointLightAttenImage0 = Image_LoadImage("ui/lights/light_point_atten.png"); } void LightManager::RenderLights(void) { - for(int i = 0; i < MAX_WORLD_LIGHTS; i++) { + for (int i = 0; i < MAX_WORLD_LIGHTS; i++) { if (!lights[i].active) { continue; } - if(!lights[i].isPending) { + if (!lights[i].isPending) { int screenx, screeny; lights[i].GetRenderPosition(screenx, screeny); GL_RenderImage(lightEditorIcon, screenx, screeny, 30, 30); @@ -75,12 +76,12 @@ Light_t *LightManager::PlaceLight(char *name, int x, int y, float r, float g, fl else { strcpy(light->name, name); } - light->position = XYP_Coord(x, y); light->color.x = r; light->color.y = g; light->color.z = b; light->radius = radius; light->type = type; + light->PlaceLight(x, y); return light; } diff --git a/code/redalert/light.h b/code/redalert/light.h index 2ebbc44..e8361b3 100644 --- a/code/redalert/light.h +++ b/code/redalert/light.h @@ -54,6 +54,7 @@ private: Light_t lights[MAX_WORLD_LIGHTS]; int numLights; Image_t* lightEditorIcon; + Image_t* pointLightAttenImage0; }; extern LightManager lightManager; \ No newline at end of file diff --git a/code/redalert/newblit.cpp b/code/redalert/newblit.cpp index 0adcb06..c48170f 100644 --- a/code/redalert/newblit.cpp +++ b/code/redalert/newblit.cpp @@ -11,6 +11,10 @@ extern uint8_t g_ColorXlat[16]; bool forceForgegroundRender = false; int32_t g_currentColor; +//void GL_SetRenderTarget(void *renderTarget) { +// //ImGui::GetBackgroundDrawList()->AddCallback() +//} + void GL_ForceForegroundRender(bool force) { forceForgegroundRender = force; } diff --git a/code/redalert/rendertexture.cpp b/code/redalert/rendertexture.cpp new file mode 100644 index 0000000..dd9f088 --- /dev/null +++ b/code/redalert/rendertexture.cpp @@ -0,0 +1,136 @@ +// RenderTexture.cpp +// + +#include "function.h" +#include "image.h" +#include "gl/glew.h" + +/* +======================== +RenderTexture::RenderTexture +======================== +*/ +RenderTexture::RenderTexture(Image_t *colorImage, Image_t *depthImage) { + deviceHandle = -1; + if (colorImage != nullptr) + { + AddRenderImage(colorImage); + } + this->depthImage = depthImage; +} + +/* +======================== +RenderTexture::~RenderTexture +======================== +*/ +RenderTexture::~RenderTexture() { + if (deviceHandle != -1) + { + glDeleteFramebuffers(1, &deviceHandle); + deviceHandle = -1; + } +} +/* +================ +RenderTexture::AddRenderImage +================ +*/ +void RenderTexture::AddRenderImage(Image_t *image) { + if (deviceHandle != -1) { + assert(!"RenderTexture::AddRenderImage: Can't add render image after FBO has been created!"); + } + + colorImages.push_back(image); +} + +/* +================ +RenderTexture::InitRenderTexture +================ +*/ +void RenderTexture::InitRenderTexture(void) { + glGenFramebuffers(1, &deviceHandle); + glBindFramebuffer(GL_FRAMEBUFFER, deviceHandle); + + for (int i = 0; i < colorImages.size(); i++) { + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, colorImages[i]->HouseImages[0].image[0][0], 0); + } + + if (depthImage != nullptr) { + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthImage->HouseImages[0].image[0][0], 0); + } + + if (colorImages.size() > 0) + { + GLenum DrawBuffers[5] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4 }; + if (colorImages.size() >= 5) { + assert(!"InitRenderTextures: Too many render targets!"); + } + glDrawBuffers(colorImages.size(), &DrawBuffers[0]); + } + + + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { + assert(!"RenderTexture::InitRenderTexture: Failed to create rendertexture!"); + } + + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +/* +================ +RenderTexture::MakeCurrent +================ +*/ +void RenderTexture::MakeCurrent(void) { + glBindFramebuffer(GL_FRAMEBUFFER, deviceHandle); +} + +/* +================ +RenderTexture::BindNull +================ +*/ +void RenderTexture::BindNull(void) { + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +int RenderTexture::GetWidth() const { return (colorImages.size() > 0) ? colorImages[0]->renderwidth[0] : depthImage->renderwidth[0]; } +int RenderTexture::GetHeight() const { return (colorImages.size() > 0) ? colorImages[0]->renderheight[0] : depthImage->renderheight[0]; } + +/* +================ +RenderTexture::Resize +================ +*/ +void RenderTexture::Resize(int width, int height) { + //Image_t *target = nullptr; + // + //if (colorImages.Num() > 0) { + // target = colorImages[0]; + //} + //else { + // target = depthImage; + //} + // + //if (target->GetOpts().width == width && target->GetOpts().height == height) { + // return; + //} + // + //for(int i = 0; i < colorImages.Num(); i++) { + // colorImages[i]->Resize(width, height); + //} + // + //if (depthImage != nullptr) { + // depthImage->Resize(width, height); + //} + // + //if (deviceHandle != -1) + //{ + // glDeleteFramebuffers(1, &deviceHandle); + // deviceHandle = -1; + //} + // + //InitRenderTexture(); +} diff --git a/code/redalert/rendertexture.h b/code/redalert/rendertexture.h new file mode 100644 index 0000000..817cacc --- /dev/null +++ b/code/redalert/rendertexture.h @@ -0,0 +1,43 @@ +#ifndef __RENDERTEXTURE_H__ +#define __RENDERTEXTURE_H__ + +struct Image_t; + +/* +================================================================================================ + + Render Texture + +================================================================================================ +*/ + +class RenderTexture { +public: + RenderTexture(Image_t*colorImage, Image_t *depthImage); + ~RenderTexture(); + + int GetWidth() const; + int GetHeight() const; + + Image_t* GetColorImage(int idx) const { return colorImages[idx]; } + Image_t* GetDepthImage() const { return depthImage; } + + int GetNumColorImages() const { return colorImages.size(); } + + void Resize( int width, int height ); + + void MakeCurrent( void ); + static void BindNull(void); + + unsigned int GetDeviceHandle(void) { return deviceHandle; } + + void AddRenderImage(Image_t*image); + void InitRenderTexture(void); +private: + + std::vector colorImages; + Image_t * depthImage; + unsigned int deviceHandle; +}; + +#endif //!__RENDERTEXTURE_H__ diff --git a/ui/lights/light_point_atten.png b/ui/lights/light_point_atten.png new file mode 100644 index 0000000000000000000000000000000000000000..af6a1a82938e8da86df5a41a7544f61984d15528 GIT binary patch literal 46359 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�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