mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 18:56:16 +03:00
244 lines
6.3 KiB
C++
244 lines
6.3 KiB
C++
#pragma once
|
|
#include "../RendererCommon.h"
|
|
#include "../RenderTexturePool.h"
|
|
#include "../../Engine.h"
|
|
#include "../BufferParameter.h"
|
|
#include "../RendererInterface.h"
|
|
#include "../RendererTextures.h"
|
|
#include "../RenderSceneData.h"
|
|
#include "../SceneTextures.h"
|
|
|
|
namespace Flower
|
|
{
|
|
class FSR2Context;
|
|
|
|
class BlueNoiseMisc
|
|
{
|
|
public:
|
|
PoolImageSharedRef spp_1_image; // 1 spp rotate by frameindex and golden radio. used for ssr.
|
|
|
|
VkDescriptorSet getSet();
|
|
static VkDescriptorSetLayout getSetLayout();
|
|
private:
|
|
VkDescriptorSet m_set = VK_NULL_HANDLE;
|
|
static VkDescriptorSetLayout s_layout;
|
|
};
|
|
|
|
class TerrainContent
|
|
{
|
|
public:
|
|
std::shared_ptr<VulkanBuffer> planeVerticesBuffer = nullptr;
|
|
std::shared_ptr<VulkanBuffer> planeIndicesBuffer = nullptr;
|
|
|
|
};
|
|
|
|
class DeferredRenderer : public RendererInterface
|
|
{
|
|
public:
|
|
DeferredRenderer(const char* name, CameraInterface* inCam);
|
|
|
|
virtual void initImpl() override;
|
|
|
|
virtual void tickImpl(const RuntimeModuleTickData& tickData, VkCommandBuffer graphicsCmd) override;
|
|
|
|
virtual void updateRenderSizeImpl(uint32_t width, uint32_t height, float renderScale, float displayScale) override;
|
|
|
|
void setCameraCut();
|
|
|
|
private:
|
|
std::unique_ptr<FSR2Context> m_fsr2 = nullptr;
|
|
GPUFrameData m_cacheFrameData;
|
|
GPUViewData m_cacheViewData;
|
|
|
|
uint32_t m_cameraCutState = 0;
|
|
std::unique_ptr<TerrainContent> m_terrain = nullptr;
|
|
|
|
|
|
private:
|
|
void updateViewData(BufferParamRefPointer viewData, const RuntimeModuleTickData& tickData);
|
|
void updateFrameData(BufferParamRefPointer frameData, const RuntimeModuleTickData& tickData);
|
|
|
|
BlueNoiseMisc renderBlueNoiseMisc(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
const RuntimeModuleTickData& tickData
|
|
);
|
|
|
|
void renderTerrain(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData);
|
|
|
|
void renderStaticMeshGBuffer(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData);
|
|
|
|
void renderPMX(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
void renderPMXTranslucent(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
// return hiz cloest.
|
|
PoolImageSharedRef renderHiZ(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData);
|
|
|
|
PoolImageSharedRef renderGTAO(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
PoolImageSharedRef inHiz,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
void renderVolumetricCloud(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
void renderSDSM(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise
|
|
);
|
|
|
|
void renderBasicLighting(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
PoolImageSharedRef inGTAO);
|
|
|
|
void renderSSR(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
PoolImageSharedRef inHiz,
|
|
PoolImageSharedRef inGTAO,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
void renderGodRay(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData);
|
|
|
|
void renderAtmosphere(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
bool bComposite = false);
|
|
|
|
void renderFSR2(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
const RuntimeModuleTickData& tickData);
|
|
|
|
void renderHDREffect(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
void renderDof(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
PoolImageSharedRef renderBloom(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData);
|
|
|
|
void adaptiveExposure(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
const RuntimeModuleTickData& tickData);
|
|
|
|
void renderTonemapper(
|
|
VkCommandBuffer cmd,
|
|
Renderer* renderer,
|
|
SceneTextures* inTextures,
|
|
RenderSceneData* scene,
|
|
BufferParamRefPointer& viewData,
|
|
BufferParamRefPointer& frameData,
|
|
PoolImageSharedRef bloomTex,
|
|
BlueNoiseMisc& inBlueNoise);
|
|
|
|
private:
|
|
PoolImageSharedRef m_averageLum = nullptr;
|
|
PoolImageSharedRef m_gtaoHistory = nullptr;
|
|
PoolImageSharedRef m_cloudReconstruction = nullptr;
|
|
PoolImageSharedRef m_cloudReconstructionDepth = nullptr;
|
|
|
|
PoolImageSharedRef m_prevHDR = nullptr;
|
|
PoolImageSharedRef m_prevDepth = nullptr;
|
|
PoolImageSharedRef m_prevGBufferB = nullptr;
|
|
};
|
|
} |