Split improvemnts before tess shader

This commit is contained in:
Confideo-IOM
2026-09-26 18:40:34 +01:00
parent 5ded63d3f4
commit 6e1a531f94
29 changed files with 282 additions and 201 deletions
@@ -58,8 +58,8 @@ void HydraPlanetQuadActor::CheckResolution(glm::dvec3 player_position)
double distance_to_quad = glm::length(player_position - m_centre);
// might need to bias this so it splits sooner and merges later
if (distance_to_quad < m_quad_dimension)
{
if ((distance_to_quad < m_quad_dimension)&& (m_quad_dimension > 64))
{
should_split = true;
}
if(distance_to_quad > m_quad_dimension * 1.1f)
@@ -111,6 +111,7 @@ HydraPlanetQuadActor::~HydraPlanetQuadActor()
{
GetEngine()->ActorManager()->DeleteActor(m_center_actor);
}
}
void HydraPlanetQuadActor::_MergeQuads()
@@ -129,8 +130,8 @@ glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::dmat4 tr
fnl.SetFractalType(FastNoiseLite::FractalType::FractalType_Ridged);
fnl.SetSeed(341411);
fnl.SetFrequency(0.00009);
fnl.SetFractalOctaves(8);
fnl.SetFractalOctaves(15);
fnl.SetFractalLacunarity(2.1);
float noise = fnl.GetNoise(vert.x, vert.y, vert.z);
vert = glm::normalize(vert) * ((m_planet_diameter / 2.0) + (noise * 500.0f));
@@ -154,7 +155,9 @@ glm::dvec3 HydraPlanetQuadActor::_ProjectCentre(glm::vec3 vert_in, glm::dmat4 tr
fnl.SetFractalType(FastNoiseLite::FractalType::FractalType_Ridged);
fnl.SetSeed(341411);
fnl.SetFrequency(0.00009);
fnl.SetFractalOctaves(8);
fnl.SetFractalOctaves(15);
fnl.SetFractalLacunarity(2.1);
float noise = fnl.GetNoise(vert.x, vert.y, vert.z);
@@ -204,7 +207,7 @@ void HydraPlanetQuadActor::_CreateMesh()
HydraMeshManager *mesh_manager = GetEngine()->MeshManager();
HydraID mesh_id = mesh_manager->CreateMesh();
HydraMesh *mesh = mesh_manager->GetMesh(mesh_id);
HydraMaterialComponent mat_comp = GetEngine()->ECS()->GetComponent<HydraMaterialComponent>(GetID());
HydraPositionComponent pos_comp = GetEngine()->ECS()->GetComponent<HydraPositionComponent>(GetID());
@@ -325,11 +328,12 @@ void HydraPlanetQuadActor::_CreateMesh()
mesh_comp.mesh_state = HYDRA_STATE::Waiting;
ecs->AddComponent<HydraMeshComponent>(GetID(), mesh_comp);
HydraRenderableComponent& render_comp = GetEngine()->ECS()->GetComponent<HydraRenderableComponent>(GetID());
render_comp.active = true;
}
void HydraPlanetQuadActor::_CreateMaterial()
{
HydraEngine *engine = GetEngine();
std::string filename = std::string(texture_base) + std::string("/DesignArea/DesignArea_Albedo_white.png");
@@ -374,4 +378,5 @@ void HydraPlanetQuadActor::_CreateRenderableComponent()
render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_SHADOW_CASTER, true);
ecs->AddComponent<HydraRenderableComponent>(GetID(), render_comp);
ecs->AddComponent<HydraShadowCasterComponent>(GetID(), shad_caster);
render_comp.active = false;
}