diff --git a/inc/hgl/graph/BlendMode.h b/inc/hgl/graph/BlendMode.h new file mode 100644 index 00000000..e3946d4a --- /dev/null +++ b/inc/hgl/graph/BlendMode.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + +VK_NAMESPACE_BEGIN + +enum class BlendMode +{ + Opaque, + Mask, + Transparent, ///<普通的Alpha混合透明 + PreMulti, ///<预乘的Alpha混合透明 + Add, ///<加法混合 + Subtract, ///<减法混合 + ReverseSubtract, ///<反减混合 + Min, ///<最小混合 + Max, ///<最大混合 + + ENUM_CLASS_RANGE(Opaque,Max) +}; + +VK_NAMESPACE_END diff --git a/inc/hgl/graph/LightCullMode.h b/inc/hgl/graph/LightCullMode.h new file mode 100644 index 00000000..9788d752 --- /dev/null +++ b/inc/hgl/graph/LightCullMode.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +VK_NAMESPACE_BEGIN + +/** +* 光照剔除模式 +*/ +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 + +VK_NAMESPACE_END diff --git a/inc/hgl/graph/LightingModel.h b/inc/hgl/graph/LightingModel.h index 7607525e..ef238b14 100644 --- a/inc/hgl/graph/LightingModel.h +++ b/inc/hgl/graph/LightingModel.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include diff --git a/inc/hgl/graph/RenderFramework.h b/inc/hgl/graph/RenderFramework.h index 76d6b564..caf352f2 100644 --- a/inc/hgl/graph/RenderFramework.h +++ b/inc/hgl/graph/RenderFramework.h @@ -1,51 +1,11 @@ #pragma once -#include +#include #include #include 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 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 module_list; + + TextureManager * texture_manager =nullptr; + SwapchainModule * swapchain_module =nullptr; protected: