Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
frame_loop.cpp File Reference
#include "frame/frame_loop.h"
#include <chrono>
#include <cmath>
#include <deque>
#include <expected>
#include <thread>
#include "core/aliases.h"
#include "core/log.h"
#include "core/unicode.h"
#include "editor/editor_overlay.h"
#include "editor/time_control.h"
#include "frame/sim_scheduler.h"
#include "frame/table_hot_reload.h"
#include "frame/trace_capture.h"
#include "gpu/com_ptr.h"
#include "gpu/queue.h"
#include "gpu/resources.h"
#include "gpu/swap_chain.h"
#include "platform/window.h"
#include "render/debug_view_controller.h"
#include "render/probe_view.h"
#include "render/screenshot.h"
#include "save/replay_session.h"
#include "script/reaction_table_loader.h"
#include "sim/physics_world.h"
#include "sim/probe_peek.h"
#include "sim/probe_sim.h"
#include "sim/probe_trace.h"
#include "sim/reaction_table.h"
Include dependency graph for frame_loop.cpp:

Go to the source code of this file.

Classes

struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameSlot
struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::SimSubmission
struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::CompletedExtraction
struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::PendingClick
struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::Stats
struct  bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoopParts
class  bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop

Namespaces

namespace  bicameral
namespace  bicameral::frame
namespace  bicameral::frame::anonymous_namespace{frame_loop.cpp}

Typedefs

using bicameral::frame::anonymous_namespace{frame_loop.cpp}::Clock = chr::steady_clock

Functions

editor::TimeRequest bicameral::frame::anonymous_namespace{frame_loop.cpp}::AutoTimeRequest (uint64_t frame)
double bicameral::frame::anonymous_namespace{frame_loop.cpp}::Milliseconds (Clock::duration duration)
double bicameral::frame::anonymous_namespace{frame_loop.cpp}::TimestampMilliseconds (uint64_t ticks, uint64_t frequency)
double bicameral::frame::anonymous_namespace{frame_loop.cpp}::TimestampMilliseconds (uint64_t begin, uint64_t end, uint64_t frequency)
std::expected< std::unique_ptr< Window >, std::string > bicameral::frame::anonymous_namespace{frame_loop.cpp}::CreateWindowForLoop ()
gpu::DeviceOptions bicameral::frame::anonymous_namespace{frame_loop.cpp}::LoopDeviceOptions (const FrameLoopOptions &options)
std::expected< sim::ProbeSim, std::string > bicameral::frame::anonymous_namespace{frame_loop.cpp}::CreateSimulation (ID3D12Device5 *device, const FrameLoopOptions &options, const sim::BakedReactionTable &reactionTable)
std::expected< std::shared_ptr< const script::LoadedReactionTable >, std::string > bicameral::frame::anonymous_namespace{frame_loop.cpp}::LoadWorldReactionTable (const FrameLoopOptions &options)
std::expected< FrameLoopParts, std::string > bicameral::frame::anonymous_namespace{frame_loop.cpp}::CreateParts (const FrameLoopOptions &options)
void bicameral::frame::anonymous_namespace{frame_loop.cpp}::PushFromCommand (sim::PhysicsWorld &world, const sim::ProbeCommand &command)
int bicameral::frame::RunFrameLoop (const FrameLoopOptions &options)

Variables

constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::FRAME_SLOT_COUNT = gpu::SwapChain::BUFFER_COUNT
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::SIM_SLOT_COUNT = sim::ProbeSim::FRAME_SLOT_COUNT
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::INITIAL_CLIENT_WIDTH = 1280
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::INITIAL_CLIENT_HEIGHT = 720
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::FRAME_WAIT_TIMEOUT_MS = 100
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::CONSTANTS_BYTES = 256
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::TIMESTAMPS_PER_FRAME = 2
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_CLICK_INTERVAL_FRAMES = 20
constexpr auto bicameral::frame::anonymous_namespace{frame_loop.cpp}::STATS_INTERVAL = chr::seconds(1)
constexpr auto bicameral::frame::anonymous_namespace{frame_loop.cpp}::MINIMIZED_SLEEP = chr::milliseconds(16)
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::TRACE_KEY_TICKS = 60
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::TRACE_KEY_RADIUS_CELLS = 8
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TRACE_FRAME = 30
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_PUSH_FRAME = 60
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_PAUSE_FRAME = 20
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_HOLD_FRAME = 36
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_HOLD_CHECK_FRAME = 44
constexpr std::array< uint64_t, 3 > bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_STEP_FRAMES = {45, 50, 55}
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_STEP_CHECK_FRAME = 64
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_FASTER_FRAME = 65
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_RESUME_FRAME = 70
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_SLOWER_FRAME = 100
constexpr uint64_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::AUTO_TIME_NORMAL_FRAME = 130
constexpr uint32_t bicameral::frame::anonymous_namespace{frame_loop.cpp}::PUSH_IMPULSE_MILLINEWTON_SECONDS = 5'000'000