Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
probe_sim.cpp File Reference
#include "sim/probe_sim.h"
#include <algorithm>
#include <cstddef>
#include "core/aliases.h"
#include "core/log.h"
#include "gpu/com_ptr.h"
#include "gpu/resources.h"
Include dependency graph for probe_sim.cpp:

Go to the source code of this file.

Classes

struct  bicameral::sim::anonymous_namespace{probe_sim.cpp}::EventRingHeader
struct  bicameral::sim::anonymous_namespace{probe_sim.cpp}::ReferenceGeneration

Namespaces

namespace  bicameral
namespace  bicameral::sim
namespace  bicameral::sim::anonymous_namespace{probe_sim.cpp}

Functions

gpu::GraphStatsLayout bicameral::sim::anonymous_namespace{probe_sim.cpp}::MakeConductStatsLayout ()
template<typename T>
void bicameral::sim::anonymous_namespace{probe_sim.cpp}::WriteAt (std::byte *base, uint32_t offset, const T &value)
template<typename T>
ComPtr< ID3D12Resource > bicameral::sim::anonymous_namespace{probe_sim.cpp}::CreateFilledUpload (ID3D12Device *device, const std::vector< T > &data, const wchar_t *name)
ComPtr< ID3D12PipelineState > bicameral::sim::anonymous_namespace{probe_sim.cpp}::LoadComputePipeline (ID3D12Device *device, ID3D12RootSignature *rootSignature, std::string_view shaderPath)
void bicameral::sim::anonymous_namespace{probe_sim.cpp}::SetUnitConstants (ID3D12GraphicsCommandList10 *list, uint64_t tick, uint32_t argument)
ProbeCommand bicameral::sim::MakePokeCommand (uint64_t targetTick, uint32_t sequence, uint32_t x, uint32_t y, uint32_t z)
ProbeCommand bicameral::sim::MakePushCommand (uint64_t targetTick, uint32_t sequence, const std::array< int64_t, 3 > &origin, const std::array< int32_t, 3 > &direction, uint32_t impulseMillinewtonSeconds)
ProbeCommand bicameral::sim::MakeTableCommand (uint64_t targetTick, uint32_t sequence, uint64_t version)
bool bicameral::sim::anonymous_namespace{probe_sim.cpp}::InCrate (uint32_t value)
bool bicameral::sim::anonymous_namespace{probe_sim.cpp}::OnCrateWall (uint32_t value)
bool bicameral::sim::anonymous_namespace{probe_sim.cpp}::IsCrateWall (uint32_t x, uint32_t y, uint32_t z)
std::vector< reaction::RxCell > bicameral::sim::MakeProbeInitialWorld (const BakedReactionTable &table)
std::array< uint32_t, PROBE_VIEW_SPECIES_COUNT > bicameral::sim::ProbeViewSpecies (const BakedReactionTable &table)
void bicameral::sim::anonymous_namespace{probe_sim.cpp}::MarkWithNeighbors (std::vector< uint8_t > &scheduled, uint32_t block)
std::vector< uint8_t > bicameral::sim::anonymous_namespace{probe_sim.cpp}::ScheduleBlocks (std::span< const uint8_t > seeds)
uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CountWokenBlocks (std::span< const uint8_t > flags, std::span< const uint8_t > previousScheduled)
uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::ApplyPokes (const ReactionTableView &table, ReferenceGeneration current, uint64_t tick, std::span< const ProbeCommand > commands, std::vector< uint8_t > &seeds, std::vector< uint64_t > &changedMarks)
ProbeCellStep bicameral::sim::anonymous_namespace{probe_sim.cpp}::ReferenceStepCell (const ReactionTableView &table, ReferenceGeneration current, uint32_t index, uint64_t tick, uint64_t changedMark)
uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::BlockOfCellIndex (uint32_t index)
std::vector< uint64_t > bicameral::sim::ProbeInitialBlockWakes (const BakedReactionTable &table, std::span< const reaction::RxCell > cells)
std::vector< uint32_t > bicameral::sim::ProbeInitialScheduleWords (const BakedReactionTable &table, std::span< const reaction::RxCell > cells)
uint64_t bicameral::sim::ProbeStateHash (std::span< const reaction::RxCell > cells)
std::vector< uint32_t > bicameral::sim::MakeProbeExtractionCells (std::span< const reaction::RxCell > cells, std::span< const reaction::HcThermalCache > caches, const std::array< uint32_t, PROBE_VIEW_SPECIES_COUNT > &viewSpecies)
uint64_t bicameral::sim::ProbeExtractionHash (std::span< const uint32_t > words)
uint64_t bicameral::sim::ProbeEnergySum (std::span< const reaction::RxCell > cells)

Variables

constexpr gpu::RootSignatureLayout bicameral::sim::anonymous_namespace{probe_sim.cpp}::ROOT_LAYOUT
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_CELLS = 0
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_EVENTS = 1
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_EXTRACTION0 = 2
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_EXTRACTION1 = 3
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_BUSY_SINK = 4
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_EXTRACTION2 = 5
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_HASHES = 6
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_COMMAND_QUEUE = 7
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_TICK_EVENTS = 8
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_ACTIVE_LIST0 = 9
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_ACTIVE_LIST1 = 10
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_BLOCK_SCHEDULE = 11
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_THERMAL = 12
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::UAV_BODIES = 13
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::SRV_INPUT = 0
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::SRV_REACTION_FIRST = 1
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::TIMESTAMPS_PER_SLOT = ProbeSim::MAX_UNITS_PER_FRAME + 2
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CELL_BYTES = uint64_t{PROBE_CELL_COUNT} * sizeof(reaction::RxCell)
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::THERMAL_BYTES = uint64_t{PROBE_CELL_COUNT} * sizeof(reaction::HcThermalCache)
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::SLICE_BYTES = PROBE_SLICE_CELL_COUNT * 4
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::BUSY_GROUPS = PROBE_GRID_SIZE / PROBE_GROUP_SIZE
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::LINEAR_CELL_GROUPS = PROBE_CELL_COUNT / PROBE_LINEAR_GROUP_SIZE
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::BLOCK_GROUPS = (PROBE_BLOCK_COUNT + PROBE_LINEAR_GROUP_SIZE - 1) / PROBE_LINEAR_GROUP_SIZE
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::EXTRACTION_BYTES = PROBE_EXTRACTION_WORDS * 4
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::MAX_LOGGED_DEBUG_MESSAGES = 8
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::AIR_OXYGEN_MICROMOLES = 1063800
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::AIR_NITROGEN_MICROMOLES = 4014200
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_CELLULOSE_MICROMOLES = 38600000
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_OXYGEN_MICROMOLES = 983000
constexpr uint64_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_NITROGEN_MICROMOLES = 3697000
constexpr int32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::INITIAL_TEMPERATURE_MILLIKELVIN = 300000
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_SIZE = 8
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_BEGIN = (PROBE_GRID_SIZE - CRATE_SIZE) / 2
constexpr uint32_t bicameral::sim::anonymous_namespace{probe_sim.cpp}::CRATE_END = CRATE_BEGIN + CRATE_SIZE