We got exr loading

This commit is contained in:
2026-01-22 02:04:11 +01:00
parent a5b26f3bdd
commit 41ed926409
23 changed files with 529 additions and 283 deletions

View File

@@ -28,6 +28,11 @@ void OrbitAndSpin::Randomize(uint32_t seed)
std::uniform_real_distribution<float> spinSpeedDist(0.5f, 6.0f);
std::uniform_real_distribution<float> phaseDist(0.0f, 6.28318530718f);
// grow randomness
std::uniform_real_distribution<float> growMinDist(0.03f, 0.08f);
std::uniform_real_distribution<float> growMaxDist(0.2f, 0.4f);
std::uniform_real_distribution<float> growSpeedDist(0.5f, 2.5f);
m_OrbitAxis = RandomUnitVector(rng);
m_SpinAxis = RandomUnitVector(rng);
@@ -35,6 +40,15 @@ void OrbitAndSpin::Randomize(uint32_t seed)
m_SpinSpeed = spinSpeedDist(rng);
m_OrbitPhase = phaseDist(rng);
m_GrowMin = growMinDist(rng);
m_GrowMax = growMaxDist(rng);
m_GrowSpeed = growSpeedDist(rng);
m_GrowPhase = phaseDist(rng); // random start offset
// safety: ensure min < max
if (m_GrowMin > m_GrowMax)
std::swap(m_GrowMin, m_GrowMax);
BuildOrbitBasis();
}
@@ -70,19 +84,27 @@ void OrbitAndSpin::Update()
// grow (always positive)
m_GrowPhase += m_GrowSpeed * dt;
float t = 0.5f * (std::sin(m_GrowPhase) + 1.0f); // 0..1
float s = 1.50 + t * 0.70f; // 0.05..0.15 (pick what you want)
m_GrowPhase += m_GrowSpeed * dt;
GetTransform().SetLocalScale(glm::vec3(std::sin(m_GrowPhase)));
// 0..1
float t = 0.5f * (std::sin(m_GrowPhase) + 1.0f);
// random per-object range
float s = glm::mix(m_GrowMin, m_GrowMax, t);
// respect original scale
GetTransform().SetLocalScale(glm::vec3(s));
// GetTransform().SetLocalScale(glm::vec3(std::sin(m_GrowPhase)));
// material color
// auto& mat = GameState::GetInstance().Renderer().getMaterialMutable(m_MaterialID);
// mat.baseColor = glm::vec3(
// 0.5f + 0.5f * std::sin(m_OrbitAngle * 2.0f),
// 0.5f + 0.5f * std::sin(m_OrbitAngle * 3.0f + 2.0f),
// 0.5f + 0.5f * std::sin(m_OrbitAngle * 4.0f + 4.0f)
// );
// GameState::GetInstance().Renderer().updateMaterialGPU(m_MaterialID);
auto& mat = GameState::GetInstance().Renderer().getMaterialMutable(m_MaterialID);
mat.baseColor = glm::vec3(
0.5f + 0.5f * std::sin(m_OrbitAngle * 2.0f),
0.5f + 0.5f * std::sin(m_OrbitAngle * 3.0f + 2.0f),
0.5f + 0.5f * std::sin(m_OrbitAngle * 4.0f + 4.0f)
);
GameState::GetInstance().Renderer().updateMaterialGPU(m_MaterialID);
}
void OrbitAndSpin::Start() {