3#include <Tempest/Device>
4#include <Tempest/Shader>
6#include <zenkit/world/VobTree.hh>
30 std::pair<Tempest::Vec3, Tempest::Vec3>
bbox()
const;
34 void tick(uint64_t dt);
41 void prepareGlobals(Tempest::Encoder<Tempest::CommandBuffer> &cmd, uint8_t fId);
43 void setGbuffer(
const Tempest::Texture2d& diffuse,
44 const Tempest::Texture2d& norm);
47 const Tempest::ZBuffer& pageData,
48 const Tempest::StorageImage& pageTbl,
49 const Tempest::StorageImage& pageHiZ,
50 const Tempest::StorageBuffer& pageList);
51 void setHiZ(
const Tempest::Texture2d& hiZ);
52 void setSceneImages(
const Tempest::Texture2d& clr,
const Tempest::Texture2d& depthAux,
const Tempest::ZBuffer& depthNative);
60 void visibilityPass (Tempest::Encoder<Tempest::CommandBuffer>& cmd,
int pass);
61 void visibilityVsm (Tempest::Encoder<Tempest::CommandBuffer>& cmd);
63 void drawHiZ (Tempest::Encoder<Tempest::CommandBuffer>& cmd);
64 void drawShadow (Tempest::Encoder<Tempest::CommandBuffer>& cmd, uint8_t frameId, uint8_t layer);
65 void drawVsm (Tempest::Encoder<Tempest::CommandBuffer>& cmd);
66 void drawGBuffer (Tempest::Encoder<Tempest::CommandBuffer>& cmd, uint8_t frameId);
67 void drawWater (Tempest::Encoder<Tempest::CommandBuffer>& cmd);
68 void drawTranslucent(Tempest::Encoder<Tempest::CommandBuffer>& cmd, uint8_t frameId);
80 void dbgClusters(Tempest::Painter& p, Tempest::Vec2 wsz);
83 const Sky&
sky()
const {
return gSky; }
89 auto instanceSsbo() const -> const Tempest::StorageBuffer&;
93 std::pair<Tempest::Vec3, Tempest::Vec3> aabb;
103 bool needToUpdateCmd(uint8_t frameId) const;
104 void invalidateCmd();
void prepareGlobals(Tempest::Encoder< Tempest::CommandBuffer > &cmd, uint8_t fId)
const DrawBuckets & drawBuckets() const
void setShadowMaps(const Tempest::Texture2d *shadow[])
MeshObjects::Mesh addStaticView(const ProtoMesh *visual, bool staticDraw=false)
void drawShadow(Tempest::Encoder< Tempest::CommandBuffer > &cmd, uint8_t frameId, uint8_t layer)
MeshObjects::Mesh addDecalView(const zenkit::VisualDecal &vob)
void setHiZ(const Tempest::Texture2d &hiZ)
void drawGBuffer(Tempest::Encoder< Tempest::CommandBuffer > &cmd, uint8_t frameId)
void drawTranslucent(Tempest::Encoder< Tempest::CommandBuffer > &cmd, uint8_t frameId)
MeshObjects::Mesh addView(std::string_view visual, int32_t headTex, int32_t teethTex, int32_t bodyColor)
MeshObjects::Mesh addAtachView(const ProtoMesh::Attach &visual, const int32_t version)
LightGroup::Light addLight(const zenkit::VLight &vob)
const SceneGlobals & sceneGlobals() const
auto instanceSsbo() const -> const Tempest::StorageBuffer &
MeshObjects::Mesh addItmView(std::string_view visual, int32_t material)
const Tempest::Vec3 & ambientLight() const
const DrawClusters & clusters() const
const Landscape & landscape() const
void dbgLights(DbgPainter &p) const
void visibilityPass(Tempest::Encoder< Tempest::CommandBuffer > &cmd, int pass)
void drawHiZ(Tempest::Encoder< Tempest::CommandBuffer > &cmd)
void drawVsm(Tempest::Encoder< Tempest::CommandBuffer > &cmd)
void setGbuffer(const Tempest::Texture2d &diffuse, const Tempest::Texture2d &norm)
bool isInPfxRange(const Tempest::Vec3 &pos) const
void setSceneImages(const Tempest::Texture2d &clr, const Tempest::Texture2d &depthAux, const Tempest::ZBuffer &depthNative)
void visibilityVsm(Tempest::Encoder< Tempest::CommandBuffer > &cmd)
std::pair< Tempest::Vec3, Tempest::Vec3 > bbox() const
const DrawCommands & drawCommands() const
void updateFrustrum(const Frustrum fr[])
void preFrameUpdate(const Camera &camera, uint64_t tickCount, uint8_t fId)
void drawWater(Tempest::Encoder< Tempest::CommandBuffer > &cmd)
void setVirtualShadowMap(bool enabled, const Tempest::ZBuffer &pageData, const Tempest::StorageImage &pageTbl, const Tempest::StorageImage &pageHiZ, const Tempest::StorageBuffer &pageList)
const LightSource & mainLight() const
void dbgClusters(Tempest::Painter &p, Tempest::Vec2 wsz)
const LightGroup & lights() const
friend class LightGroup::Light