little and unimportant update

This commit is contained in:
hyzboy 2024-10-13 00:15:45 +08:00
parent 620d05c6ff
commit 2c67990daa
6 changed files with 54 additions and 12 deletions

2
CMCore

@ -1 +1 @@
Subproject commit 14ae93e9096b37dd832cee1903f9ae546b033b59
Subproject commit 09d777261f4249ccdba5bef44d794742f4e3237a

View File

@ -1,6 +1,5 @@
#include"GizmoResource.h"
#include<hgl/graph/VKRenderResource.h>
#include<hgl/graph/InlineGeometry.h>
#include<hgl/graph/TransformFaceToCamera.h>
VK_NAMESPACE_BEGIN
@ -31,9 +30,9 @@ bool InitGizmoRotateStaticMesh()
GetGizmoRenderable(GizmoShape::Torus,GizmoColor::White),
};
for(int i=0;i<4;i++)
for(auto *r:torus)
{
if(!torus[i])
if(!r)
return(false);
}

View File

@ -30,13 +30,14 @@ namespace hgl
Global, ///<使用全局动态阴影
PerObject, ///<独立对象阴影(就是每个物件独立走普通shadowmap得到一张深度图缓存到硬盘)
Plane, ///<压片阴影(极少三角面的片状物体专用)
RTDF, ///<距离场动态阴影(静态物体专用)
Capsule, ///<胶囊体动态阴影(骨骼动画专用)
Capsule, ///<胶囊体阴影(一般用于骨骼动画模型阴影,每根骨骼一个胶囊)
Cube, ///<立方体阴影(一般用于一些建筑物比如楼房直接使用一个Cube做Raymarch)
MeshSDF, ///<模型3D距离场阴影
ShadowVolume, ///<体积阴影(超规则类物体专用,如房子)
ENUM_CLASS_RANGE(None,ShadowVolume)
ENUM_CLASS_RANGE(None,MeshSDF)
};
}//namespace graph
}//namespace hgl

View File

@ -1,6 +1,7 @@
#pragma once
#include<hgl/graph/VKNamespace.h>
#include<hgl/graph/StaticMeshLODPolicy.h>
#include<hgl/graph/ShadowPolicy.h>
VK_NAMESPACE_BEGIN
@ -11,6 +12,8 @@ class StaticMesh
{
protected:
StaticMeshLODPolicy lod_policy; ///<LOD策略
SceneNode *root_node;
StaticMesh *shadow_proxy_static_mesh; ///<阴影代理静态网格
@ -20,7 +23,12 @@ protected:
bool two_side; ///<双面渲染
ObjectDynamicShadowPolicy dynamic_shadow_policy; ///<动态阴影策略(推荐项,最终可被取代)
ObjectDynamicShadowPolicy recommend_dynamic_shadow_policy; ///<动态阴影策略(推荐项,最终可被取代)
public:
const StaticMeshLODPolicy GetLODPolicy()const { return lod_policy; } ///<取得LOD策略
const ObjectDynamicShadowPolicy GetRecommendDynamicShadowPolicy()const { return recommend_dynamic_shadow_policy; } ///<取得推荐的动态阴影策略
public:
@ -33,5 +41,6 @@ public:
SceneNode *GetShadowNode() { return shadow_proxy_static_mesh?shadow_proxy_static_mesh->GetScene():root_node; } ///<取得阴影渲染节点
SceneNode *GetPhysicNode() { return physic_proxy_static_mesh?physic_proxy_static_mesh->GetScene():root_node; } ///<取得物理渲染节点
};//class StaticMesh
VK_NAMESPACE_END

View File

@ -0,0 +1,30 @@
#pragma once
#include<hgl/graph/VKNamespace.h>
#include<hgl/TypeFunc.h>
VK_NAMESPACE_BEGIN
/**
* LOD策略
*/
enum class StaticMeshLODPolicy:uint8
{
None=0, ///<无LOD
DiscardDetail, ///<丢弃细节
AnotherMesh, ///<另一个模型
Billboard, ///<广告牌
//Voxel, ///<体素
//MeshSDF, ///<网格SDF
//MeshCard, ///<网格卡片
ENUM_CLASS_RANGE(None,Billboard)
};//enum class StaticMeshLODPolicy
VK_NAMESPACE_END

View File

@ -36,7 +36,8 @@ SET(GEOMETRY_FILES ${SG_INCLUDE_PATH}/InlineGeometry.h
SOURCE_GROUP("Geometry" FILES ${GEOMETRY_FILES})
SET(LIGHT_FILES ${SG_INCLUDE_PATH}/Light.h)
SET(LIGHT_FILES ${SG_INCLUDE_PATH}/Light.h
${SG_INCLUDE_PATH}/ShadowPolicy.h)
source_group("Light" FILES ${LIGHT_FILES})
@ -63,7 +64,9 @@ SET(SCENE_GRAPH_SOURCE RenderList.cpp
SOURCE_GROUP("Scene Graph" FILES ${SCENE_GRAPH_HEADER} ${SCENE_GRAPH_SOURCE})
SET(STATIC_MESH_HEADER_FILES ${SG_INCLUDE_PATH}/StaticMesh.h)
SET(STATIC_MESH_HEADER_FILES ${SG_INCLUDE_PATH}/StaticMesh.h
${SG_INCLUDE_PATH}/StaticMeshLODPolicy.h)
SET(STATIC_MESH_SOURCE_FILES StaticMesh.cpp)
SOURCE_GROUP("Scene Graph\\Static Mesh" FILES ${STATIC_MESH_HEADER_FILES} ${STATIC_MESH_SOURCE_FILES})