This commit is contained in:
Confideo-IOM
2026-09-07 16:25:43 +01:00
parent ad8695b7a4
commit 4f008cd809
63 changed files with 391 additions and 338 deletions
+4
View File
@@ -21,6 +21,7 @@ project(
"../Libraries/imgui/backends/imgui_impl_glfw.h"
"../Libraries/imgui/backends/imgui_impl_opengl3.cpp"
"../Libraries/imgui/backends/imgui_impl_opengl3.h")
add_compile_definitions(_EXPORTING)
add_library(HydraEngine SHARED ${SOURCES} ${IMGUI_SOURCES})
@@ -52,6 +53,9 @@ include_directories(HydraEngine, "../Libraries/box3d/include/")
#********** IMGUI ********
include_directories(HydraEngine, "../Libraries/imgui/")
include_directories(HydraEngine, "../Libraries/imgui/backends")
#**********FastNoiseLite*******
include_directories(HydraEngine, "../Libraries/FastNoiseLite/cpp/")
include_directories(HydraClient "${CMAKE_SOURCE_DIR}/HydraEngine/includes")
if(WIN32)
@@ -343,23 +343,23 @@ float SampleCascadeShadow(vec4 frag_clip_space, sampler2DArray sampler_shadow_ma
// PCF
if(shadow_trans_idx < 1)
{
bias = 0.0000005;
bias = 0.000005;
}
if(shadow_trans_idx < 2)
{
bias = 0.00005;
bias = 0.0005;
}
else if(shadow_trans_idx < 3)
{
bias = 0.00005;
bias = 0.0005;
}
else if(shadow_trans_idx == 3)
{
bias = 0.0001;// + (0.000001 * mapped_distance);
bias = 0.001;// + (0.000001 * mapped_distance);
}
else
{
bias = 0.0005;
bias = 0.005;
}
float shadow = 0.0;
vec2 texel_size = 1.0 / textureSize(sampler_shadow_map, 0).xy;
@@ -560,7 +560,7 @@ void main()
float metal = metal_rough[2];
float ao = 1;
vec3 ambient = vec3(0.05) * diffuse.xyz * ao;
vec3 Lo = ambient;
vec3 Lo;// = ambient;
if(metal_rough[0] > 0)
{
@@ -647,7 +647,7 @@ void main()
}
float lighting = 0;
vec3 output_color = Lo;
vec3 output_color = Lo + ambient;
// HDR tonemapping
output_color = output_color / (output_color + vec3(1.0));
@@ -214,8 +214,8 @@ void HydraPlanetActor::_CreateRenderableComponent()
void HydraPlanetActor::_CreateQuads()
{
uint32_t divisions = 100;
float diameter = 100000.0f;
float quad_size = 100000.0f;
float diameter = 100.0f;
float quad_size = 100.0f;
float radius = diameter /2.0f;
m_quads[0] = GetEngine()->ActorManager()->CreateActor<HydraPlanetQuadActor>();
HydraPlanetQuadActor* quad0 = static_cast<HydraPlanetQuadActor*>(GetEngine()->ActorManager()->GetActor(m_quads[0]));
@@ -7,12 +7,15 @@
#include "../../ecs/components/HydraMeshComponent.h"
#include "../../ecs/components/HydraRenderableComponent.h"
#include "../../ecs/components/HydraMaterialComponent.h"
#include "../../ecs/components/HydraShadowCasterComponent.h"
#include "../../buffer/HydraMaterialBufferManager.h"
#include "../../buffer/HydraTextureBufferManager.h"
#include "../../buffer/HydraMaterialBuffer.h"
#include "../../mesh/HydraMeshManager.h"
#include "../../mesh/HydraMesh.h"
#include <FastNoiseLite.h>
void HydraPlanetQuadActor::InitialiseComponents()
{
// HydraECS* ecs = GetEngine()->ECS();
@@ -40,13 +43,23 @@ void HydraPlanetQuadActor::InitialiseQuad(float planet_diameter, float quad_dime
}
glm::vec3 HydraPlanetQuadActor::_ProjectSphere(glm::dvec4 vert_in, glm::mat4 trans, glm::mat4 inv_trans, double diameter, glm::vec3 origin)
{
{
glm::dvec4 vert = trans * vert_in;
vert = glm::normalize(vert);
vert.x *= (m_planet_diameter / 2.0);
vert.y *= (m_planet_diameter / 2.0);
vert.z *= (m_planet_diameter / 2.0);
vert = vert * (m_planet_diameter / 2.0);
FastNoiseLite fnl;
fnl.SetFrequency(0.1f);
fnl.SetNoiseType(FastNoiseLite::NoiseType::NoiseType_OpenSimplex2);
fnl.SetFractalType(FastNoiseLite::FractalType::FractalType_FBm);
fnl.SetSeed(341411);
float noise = fnl.GetNoise(vert.x, vert.y, vert.z);
vert = glm::normalize(vert) * ((m_planet_diameter / 2.0) + (noise * 1.0f));
vert = inv_trans * glm::dvec4(vert.x, vert.y, vert.z, 1.0);
return glm::vec3(vert);
}
@@ -63,6 +76,8 @@ 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());
@@ -116,6 +131,8 @@ glm::mat4 inv_trans = glm::inverse(trans);
glm::dvec4 vert = glm::dvec4(x, y, min_z, 1.0);
glm::vec3 final_vert = _ProjectSphere(vert, trans, inv_trans, m_planet_diameter, m_origin);
mesh->vertexes[vert_idx] = {final_vert.x, final_vert.y, final_vert.z, u, v, actor_id, mat_comp.material_id, 0};
uint32_t ind0 = vert_idx;
@@ -210,7 +227,10 @@ void HydraPlanetQuadActor::_CreatePhysics()
void HydraPlanetQuadActor::_CreateRenderableComponent()
{
HydraRenderableComponent render_comp;
HydraShadowCasterComponent shad_caster;
HydraECS *ecs = GetEngine()->ECS();
render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_COLOUR, true);
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);
}