载入中...
搜索中...
未找到
eve::daynight::DayNight类 参考

DayNight module — a time-of-day cycle that drives the sun, sky and light. 更多...

#include <DayNight.h>

类 eve::daynight::DayNight 继承关系图:
eve::Module

struct  Impl
 

Public 成员函数

 Module_REG (DayNight)
 
 DayNight ()
 
 ~DayNight () override
 
void init (graphics::Graphics *gfx)
 Idempotent; builds lights / sky cubemap on first call.
 
void update (float dt, graphics::Graphics *gfx)
 Advance the clock and push sun/sky/light state; before gfx.render3D().
 
void setTimeOfDay (float hours)
 
float getTimeOfDay () const
 
void setSpeed (float hoursPerRealHour)
 
float getSpeed () const
 
void setPaused (bool paused)
 
bool isPaused () const
 
bool isNight () const
 True when the sun is below the horizon (night).
 
float getSunElevation () const
 Solar elevation in degrees (max at local noon, ~70°).
 
float getSunAzimuth () const
 Solar azimuth in degrees, measured clockwise from +Z.
 
float getSunDirX () const
 World-space direction pointing AT the sun (normalized).
 
float getSunDirY () const
 
float getSunDirZ () const
 
float getSunIntensity () const
 0..1 sun energy; ramps to 0 below the horizon.
 
float getSkyR () const
 
float getSkyG () const
 
float getSkyB () const
 
float getAmbientR () const
 
float getAmbientG () const
 
float getAmbientB () const
 
float getAmbientBrightness () const
 
void setSkyboxEnabled (bool enabled)
 
bool isSkyboxEnabled () const
 
void setNightLight (const std::string &name, bool enabled)
 Enable a named light system: "moonlight"|"starlight"|"fire"|"fireflies".
 
bool isNightLight (const std::string &name) const
 
void setFirePosition (float x, float y, float z)
 Position of the campfire point light (fire system).
 
void addFirefly (float x, float y, float z)
 Add one firefly anchor (world space); up to kMaxFireflies.
 
void clearFireflies ()
 
int getFireflyCount () const
 
- Public 成员函数 继承自 eve::Module
virtual ~Module ()
 
virtual std::string getName () const =0
 

静态 Public 属性

static const char *const kNamedLights [] = {"moonlight", "starlight", "fire", "fireflies"}
 
static const int kNamedLightCount = 4
 

详细描述

DayNight module — a time-of-day cycle that drives the sun, sky and light.

Advances a 24-hour clock (configurable speed) and, each frame, repositions the directional sun to match the current solar elevation / azimuth. A procedural sky cubemap (sky gradient + sun disc + night stars) is generated on demand and registered as the 3D IBL environment so both the skybox angle and the reflected sky follow the sun as time flows.

At night the module can switch between complementary lighting systems, each implemented as a pool of Light3D entities:

  • moonlight : a cool, low directional light from the moon direction
  • starlight : a faint, slightly-blue ambient that softens the dark
  • fire : a warm point light at a caller-provided campfire position
  • fireflies : a set of warm, gently-drifting point lights

Usage from script: daynight.setTimeOfDay(12.0); // solar noon daynight.setSpeed(1.0); // 1 real hour per simulated hour daynight.setNightLight("fireflies", true); // each frame before gfx.render3D(): daynight.update(dt, gfx); camera.setAmbient(daynight.getAmbientR(), ...);

在文件 DayNight.h39 行定义.

构造及析构函数说明

◆ DayNight()

eve::daynight::DayNight::DayNight ( )

在文件 DayNight.cpp174 行定义.

◆ ~DayNight()

eve::daynight::DayNight::~DayNight ( )
override

在文件 DayNight.cpp175 行定义.

成员函数说明

◆ addFirefly()

◆ clearFireflies()

void eve::daynight::DayNight::clearFireflies ( )

◆ getAmbientB()

float eve::daynight::DayNight::getAmbientB ( ) const

◆ getAmbientBrightness()

float eve::daynight::DayNight::getAmbientBrightness ( ) const

◆ getAmbientG()

float eve::daynight::DayNight::getAmbientG ( ) const

◆ getAmbientR()

float eve::daynight::DayNight::getAmbientR ( ) const

在文件 DayNight.cpp210 行定义.

引用了 getAmbientBrightness().

◆ getFireflyCount()

int eve::daynight::DayNight::getFireflyCount ( ) const

在文件 DayNight.cpp280 行定义.

引用了 eve::daynight::DayNight::Impl::flies.

◆ getSkyB()

float eve::daynight::DayNight::getSkyB ( ) const

在文件 DayNight.cpp205 行定义.

引用了 eve::daynight::DayNight::Impl::sunEnergy.

被这些函数引用 update().

◆ getSkyG()

float eve::daynight::DayNight::getSkyG ( ) const

在文件 DayNight.cpp204 行定义.

引用了 eve::daynight::DayNight::Impl::sunEnergy.

被这些函数引用 update().

◆ getSkyR()

float eve::daynight::DayNight::getSkyR ( ) const

在文件 DayNight.cpp203 行定义.

引用了 eve::daynight::DayNight::Impl::sunEnergy.

被这些函数引用 update().

◆ getSpeed()

float eve::daynight::DayNight::getSpeed ( ) const

在文件 DayNight.cpp189 行定义.

引用了 eve::daynight::DayNight::Impl::speed.

◆ getSunAzimuth()

float eve::daynight::DayNight::getSunAzimuth ( ) const

Solar azimuth in degrees, measured clockwise from +Z.

在文件 DayNight.cpp196 行定义.

引用了 eve::daynight::DayNight::Impl::azimDeg.

◆ getSunDirX()

float eve::daynight::DayNight::getSunDirX ( ) const

World-space direction pointing AT the sun (normalized).

在文件 DayNight.cpp197 行定义.

引用了 eve::daynight::DayNight::Impl::sunDir.

◆ getSunDirY()

float eve::daynight::DayNight::getSunDirY ( ) const

在文件 DayNight.cpp198 行定义.

引用了 eve::daynight::DayNight::Impl::sunDir.

◆ getSunDirZ()

float eve::daynight::DayNight::getSunDirZ ( ) const

在文件 DayNight.cpp199 行定义.

引用了 eve::daynight::DayNight::Impl::sunDir.

◆ getSunElevation()

float eve::daynight::DayNight::getSunElevation ( ) const

Solar elevation in degrees (max at local noon, ~70°).

在文件 DayNight.cpp195 行定义.

引用了 eve::daynight::DayNight::Impl::elevDeg.

◆ getSunIntensity()

float eve::daynight::DayNight::getSunIntensity ( ) const

0..1 sun energy; ramps to 0 below the horizon.

在文件 DayNight.cpp200 行定义.

引用了 eve::daynight::DayNight::Impl::sunEnergy.

◆ getTimeOfDay()

float eve::daynight::DayNight::getTimeOfDay ( ) const

在文件 DayNight.cpp186 行定义.

引用了 eve::daynight::DayNight::Impl::timeOfDay.

◆ init()

◆ isNight()

bool eve::daynight::DayNight::isNight ( ) const

True when the sun is below the horizon (night).

在文件 DayNight.cpp193 行定义.

引用了 eve::daynight::DayNight::Impl::elevDeg.

◆ isNightLight()

bool eve::daynight::DayNight::isNightLight ( const std::string &  name) const

◆ isPaused()

bool eve::daynight::DayNight::isPaused ( ) const

在文件 DayNight.cpp191 行定义.

引用了 eve::daynight::DayNight::Impl::paused.

◆ isSkyboxEnabled()

bool eve::daynight::DayNight::isSkyboxEnabled ( ) const

在文件 DayNight.cpp231 行定义.

引用了 eve::daynight::DayNight::Impl::skyboxEnabled.

◆ Module_REG()

eve::daynight::DayNight::Module_REG ( DayNight  )

◆ setFirePosition()

void eve::daynight::DayNight::setFirePosition ( float  x,
float  y,
float  z 
)

◆ setNightLight()

void eve::daynight::DayNight::setNightLight ( const std::string &  name,
bool  enabled 
)

Enable a named light system: "moonlight"|"starlight"|"fire"|"fireflies".

在文件 DayNight.cpp237 行定义.

引用了 enabled, kNamedLightCount, kNamedLights, name , 以及 eve::daynight::DayNight::Impl::nightLight.

◆ setPaused()

void eve::daynight::DayNight::setPaused ( bool  paused)

在文件 DayNight.cpp190 行定义.

引用了 p , 以及 eve::daynight::DayNight::Impl::paused.

◆ setSkyboxEnabled()

void eve::daynight::DayNight::setSkyboxEnabled ( bool  enabled)

◆ setSpeed()

void eve::daynight::DayNight::setSpeed ( float  hoursPerRealHour)

在文件 DayNight.cpp188 行定义.

引用了 eve::daynight::DayNight::Impl::speed.

◆ setTimeOfDay()

void eve::daynight::DayNight::setTimeOfDay ( float  hours)

在文件 DayNight.cpp181 行定义.

引用了 h , 以及 eve::daynight::DayNight::Impl::timeOfDay.

◆ update()

类成员变量说明

◆ kNamedLightCount

const int eve::daynight::DayNight::kNamedLightCount = 4
static

在文件 DayNight.h91 行定义.

被这些函数引用 isNightLight() , 以及 setNightLight().

◆ kNamedLights

const char *const eve::daynight::DayNight::kNamedLights = {"moonlight", "starlight", "fire", "fireflies"}
static

在文件 DayNight.h90 行定义.

被这些函数引用 isNightLight() , 以及 setNightLight().


该类的文档由以下文件生成: