From e9d5b369bf0b223ac00ae4775197c714fc6976f9 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 10 Oct 2024 01:58:47 +0800 Subject: [PATCH] Added ShadowPolicy.h --- inc/hgl/graph/ShadowPolicy.h | 42 +++++++++++++++++++++++++++++++++++ src/SceneGraph/CMakeLists.txt | 2 ++ 2 files changed, 44 insertions(+) create mode 100644 inc/hgl/graph/ShadowPolicy.h diff --git a/inc/hgl/graph/ShadowPolicy.h b/inc/hgl/graph/ShadowPolicy.h new file mode 100644 index 00000000..a8cbaaf9 --- /dev/null +++ b/inc/hgl/graph/ShadowPolicy.h @@ -0,0 +1,42 @@ +#pragma once + +#include + +namespace hgl +{ + namespace graph + { + /** + * 全局动态阴影策略 + */ + enum class GlobalDynamicShadowPolicy + { + None, ///<不产生全局动态阴影 + + Cascade, ///<级联阴影 + ParallelSplit, ///<平行分割阴影 + Virtual, ///<虚拟阴影 + + ENUM_CLASS_RANGE(None,Virtual) + }; + + /** + * 对象动态阴影策略
+ * 注:动态阴影会使用屏幕空间技术,不管使用以下何种技术,会全部合成到一个屏幕空间shadow map,再统一做blur之类的操作 + */ + enum class ObjectDynamicShadowPolicy + { + None, ///<不产生动态阴影 + + Global, ///<使用全局动态阴影 + + Plane, ///<压片阴影(极少三角面的片状物体专用) + RTDF, ///<距离场动态阴影(静态物体专用) + Capsule, ///<胶囊体动态阴影(骨骼动画专用) + + ShadowVolume, ///<体积阴影(超规则类物体专用,如房子) + + ENUM_CLASS_RANGE(None,ShadowVolume) + }; + }//namespace graph +}//namespace hgl diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 90b51d51..c21015b1 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -41,7 +41,9 @@ SET(LIGHT_FILES ${SG_INCLUDE_PATH}/Light.h) source_group("Light" FILES ${LIGHT_FILES}) SET(SCENE_GRAPH_HEADER ${SG_INCLUDE_PATH}/SceneManager.h + ${SG_INCLUDE_PATH}/SceneNodeAttributes.h ${SG_INCLUDE_PATH}/SceneNode.h + ${SG_INCLUDE_PATH}/ShadowPolicy.h ${SG_INCLUDE_PATH}/RenderNode.h ${SG_INCLUDE_PATH}/SceneMatrix.h ${SG_INCLUDE_PATH}/SceneOrient.h