Noise
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user