split to BlendMode.h/LightCullMode.h from RenderFramework.h

This commit is contained in:
2024-10-29 01:47:24 +08:00
parent d1ad3f35ac
commit ffc6f0a074
4 changed files with 73 additions and 47 deletions

View File

@@ -1,51 +1,11 @@
#pragma once
#include<hgl/graph/VK.h>
#include<hgl/graph/BlendMode.h>
#include<hgl/type/List.h>
#include<hgl/graph/ViewportInfo.h>
VK_NAMESPACE_BEGIN
class RenderModule;
/**
* 光照剔除模式
*/
enum class LightingCullingMode
{
None, ///<不剔除
/*
* 基于Tile的剔除模式
* 按屏幕XY坐标划分成多个Tile再配合znear/zfar形成一个Volume。所有光源和Volume计算相交性
*/
Tile, ///<瓦片剔除
/**
* 基于Tile的剔除模式的改进型
* 同Tile方法得出Tile后再通过Compute Shader遍历Tile内所有象素得出当前Tile的最远z值和最近z值。
* 根据XY与zNear/zFar得出一个Volume计算所有光源与Volume相交性。
*/
TileVolume, ///<瓦片体积剔除
/**
* 基于Tile的剔除模式的改进型
* 同TileVolume方法得出Volume后再将Volume按深度划分成多个Volume。
* 剔除掉没有象素的Volume再将剩下的Volume与光源计算相交性。
*/
Cluster, ///<集簇剔除
ENUM_CLASS_RANGE(None,Cluster)
};//enum class LightingCullingMode
enum class BlendMode
{
Opaque,
Mask,
Transparent,
Additive,
Subtractive
};
enum class RenderOrder
{
@@ -91,16 +51,16 @@ public:
};//class GraphModuleWorkConfig
class Window;
class TextureManager;
class SwapchainModule;
class TextureModule;
/**
* 渲染框架
*/
class RenderFramework
{
ObjectList<GraphModule> module_list;
protected:
Window * win =nullptr;
@@ -109,8 +69,13 @@ protected:
GPUDevice * device =nullptr;
protected:
TextureModule * texture_module =nullptr;
GraphModuleManager *graph_module_manager=nullptr;
ObjectList<GraphModule> module_list;
TextureManager * texture_manager =nullptr;
SwapchainModule * swapchain_module =nullptr;
protected: