#pragma once #include "Gal.hpp" class Gbuffer { std::shared_ptr lightFramebuffer; std::shared_ptr lightBuffer; std::shared_ptr lightPipeline; std::shared_ptr lightPipelineInstance; std::shared_ptr color; //RGB - color std::shared_ptr normal; //RGB - normal std::shared_ptr addColor; //RGB - addColor std::shared_ptr light; //R - faceLight, G - skyLight, B - unused std::shared_ptr depthStencil; std::shared_ptr geomFramebuffer; std::shared_ptr finalColor; public: Gbuffer(size_t geomW, size_t geomH, size_t lightW, size_t lightH); std::shared_ptr GetGeometryTarget() { return geomFramebuffer; } std::shared_ptr GetFinalTexture() { return finalColor; } void Render() { lightPipeline->Activate(); lightPipelineInstance->Activate(); lightPipelineInstance->Render(0, 6); } void Clear() { geomFramebuffer->Clear(); lightFramebuffer->Clear(); } void SetDayTime(float dayTime) { lightPipeline->SetShaderParameter("dayTime", dayTime); } };