|
Bicameral Engine
GPU-resident engine for a magic-research open-world game
|
Classes | |
| struct | CpuTree |
| struct | BlockStepResult |
| class | CellThermals |
Functions | |
| std::vector< uint8_t > | MarkConductionWants (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > stepped, const MultiresStepOptions &options) |
| void | ComputeConduction (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > stepped, std::span< const uint8_t > frozen, std::span< const uint8_t > wantsFraction, std::span< const uint8_t > implicitBlocks, const MultiresStepOptions &options, std::span< MrEnergyDelta > deltas) |
| std::vector< MrEnergyDelta > | StepConduction (MultiresNest &nest, const ReactionTableView &view, std::span< uint8_t > stepped, const MultiresStepOptions &options, uint32_t wakeMark, std::span< BlockStepResult > results) |
| bool | InImplicitConduction (const MultiresNest &nest, uint32_t slot, const MultiresStepOptions &options) |
| bool | IsImplicitBlock (std::span< const uint8_t > implicitBlocks, uint32_t slot) |
| std::vector< uint8_t > | MarkImplicitBlocks (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > frozen, const MultiresStepOptions &options) |
| void | AddImplicitConduction (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > frozen, std::span< const uint8_t > implicitBlocks, const MultiresStepOptions &options, std::span< MrEnergyDelta > deltas) |
| void | ApplyEnergyDelta (MultiresNest &nest, uint32_t slot, uint32_t index, RxCell &cell, const MrEnergyDelta &delta) |
| std::vector< uint8_t > | ExpandForStep (MultiresNest &nest, std::span< BlockStepResult > results) |
| std::vector< BlockStepResult > | StepBlocks (MultiresNest &nest, const ReactionTableView &view, std::span< uint8_t > stepped, uint64_t worldSeed, uint64_t tick, const MultiresStepOptions &options, uint32_t wakeMark) |
| void | ResolvePokes (MultiresNest &nest, uint64_t tick) |
| void | RecordWaitResults (MultiresNest &nest, std::span< const BlockStepResult > results, uint64_t tick) |
| std::vector< uint32_t > | ExpandWantedPages (MultiresNest &nest) |
| reaction::RxCell & | UniformAt (MultiresNest &nest, uint32_t slot) |
| const reaction::RxCell & | UniformAt (const MultiresNest &nest, uint32_t slot) |
| reaction::RxCell & | PageCellAt (MultiresNest &nest, uint32_t page, uint32_t index) |
| reaction::RxCell & | CellAt (MultiresNest &nest, uint32_t slot, uint32_t index) |
| uint32_t & | FreePageAt (MultiresNest &nest, uint32_t position) |
| uint32_t | PopPage (MultiresNest &nest) |
| multires::MrFraction | FractionAt (const MultiresNest &nest, uint32_t fractionSlot, uint32_t index) |
| void | SetFraction (MultiresNest &nest, uint32_t fractionSlot, uint32_t index, const multires::MrFraction &fraction) |
| size_t | PageCellAddress (const MultiresNest &nest, uint32_t page, uint32_t index) |
| void | ApplyEnergyDelta (MultiresNest &nest, uint32_t slot, uint32_t index, reaction::RxCell &cell, const multires::MrEnergyDelta &delta) |
| void | WakeAround (MultiresNest &nest, uint32_t slot, uint32_t mark) |
| void | ComputeConduction (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > stepped, std::span< const uint8_t > frozen, std::span< const uint8_t > wantsFraction, std::span< const uint8_t > implicitBlocks, const MultiresStepOptions &options, std::span< multires::MrEnergyDelta > deltas) |
| void | AddImplicitConduction (MultiresNest &nest, CellThermals &thermals, std::span< const uint8_t > frozen, std::span< const uint8_t > implicitBlocks, const MultiresStepOptions &options, std::span< multires::MrEnergyDelta > deltas) |
| void | PokeBlock (MultiresNest &nest, uint32_t slot) |
| void bicameral::sim::nest_detail::AddImplicitConduction | ( | MultiresNest & | nest, |
| CellThermals & | thermals, | ||
| std::span< const uint8_t > | frozen, | ||
| std::span< const uint8_t > | implicitBlocks, | ||
| const MultiresStepOptions & | options, | ||
| std::span< MrEnergyDelta > | deltas ) |
Definition at line 252 of file multires_implicit_conduction.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::BuildImplicitGrid(), bicameral::sim::MultiresNest::captureImplicitGrid, bicameral::sim::MultiresNest::captureImplicitNest, bicameral::sim::ImplicitGrid::cells, bicameral::sim::ImplicitCell::energy, bicameral::sim::ImplicitCell::fraction, bicameral::sim::MultiresNest::implicitCells, bicameral::sim::MultiresNest::implicitCost, bicameral::sim::MultiresNest::implicitGrid, bicameral::sim::MultiresNest::implicitLevels, bicameral::sim::MultiresStepOptions::implicitLimits, bicameral::sim::MultiresNest::implicitNest, bicameral::sim::MultiresImplicitLimits::links, bicameral::sim::MultiresImplicitLimits::nodes, PageCellAddress(), and bicameral::sim::StepImplicit().
Referenced by StepConduction().
| void bicameral::sim::nest_detail::AddImplicitConduction | ( | MultiresNest & | nest, |
| CellThermals & | thermals, | ||
| std::span< const uint8_t > | frozen, | ||
| std::span< const uint8_t > | implicitBlocks, | ||
| const MultiresStepOptions & | options, | ||
| std::span< multires::MrEnergyDelta > | deltas ) |
| void bicameral::sim::nest_detail::ApplyEnergyDelta | ( | MultiresNest & | nest, |
| uint32_t | slot, | ||
| uint32_t | index, | ||
| reaction::RxCell & | cell, | ||
| const multires::MrEnergyDelta & | delta ) |
| void bicameral::sim::nest_detail::ApplyEnergyDelta | ( | MultiresNest & | nest, |
| uint32_t | slot, | ||
| uint32_t | index, | ||
| RxCell & | cell, | ||
| const MrEnergyDelta & | delta ) |
Definition at line 246 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks, FractionAt(), and SetFraction().
Referenced by bicameral::sim::anonymous_namespace{multires_conduction.cpp}::ApplyEndingDeltas(), and bicameral::sim::anonymous_namespace{multires_nest.cpp}::StepPagedBlock().
|
inline |
Definition at line 40 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::blocks, and PageCellAt().
Referenced by bicameral::sim::anonymous_namespace{multires_conduction.cpp}::ApplyEndingDeltas(), bicameral::sim::ApplyLabCommands(), and bicameral::sim::MakeLabBoxNest().
| void bicameral::sim::nest_detail::ComputeConduction | ( | MultiresNest & | nest, |
| CellThermals & | thermals, | ||
| std::span< const uint8_t > | stepped, | ||
| std::span< const uint8_t > | frozen, | ||
| std::span< const uint8_t > | wantsFraction, | ||
| std::span< const uint8_t > | implicitBlocks, | ||
| const MultiresStepOptions & | options, | ||
| std::span< MrEnergyDelta > | deltas ) |
Definition at line 290 of file multires_conduction.cpp.
References bicameral::sim::MultiresNest::blocks, and IsImplicitBlock().
Referenced by StepConduction().
| void bicameral::sim::nest_detail::ComputeConduction | ( | MultiresNest & | nest, |
| CellThermals & | thermals, | ||
| std::span< const uint8_t > | stepped, | ||
| std::span< const uint8_t > | frozen, | ||
| std::span< const uint8_t > | wantsFraction, | ||
| std::span< const uint8_t > | implicitBlocks, | ||
| const MultiresStepOptions & | options, | ||
| std::span< multires::MrEnergyDelta > | deltas ) |
| std::vector< uint8_t > bicameral::sim::nest_detail::ExpandForStep | ( | MultiresNest & | nest, |
| std::span< BlockStepResult > | results ) |
Definition at line 265 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks, and ExpandWantedPages().
Referenced by StepBlocks(), and StepConduction().
| std::vector< uint32_t > bicameral::sim::nest_detail::ExpandWantedPages | ( | MultiresNest & | nest | ) |
Definition at line 355 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, bicameral::sim::MultiresNest::counters, PageCellAt(), PopPage(), bicameral::sim::MultiresNest::seeds, UniformAt(), and bicameral::sim::MultiresCapacity::worldBlocks.
Referenced by ExpandForStep().
|
inline |
Definition at line 59 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::fractions.
Referenced by ApplyEnergyDelta(), and bicameral::sim::anonymous_namespace{multires_activity.cpp}::ReturnFractionsToLedger().
|
inline |
Definition at line 47 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::capacity, bicameral::sim::MultiresNest::freeBlocks, and bicameral::sim::MultiresCapacity::worldBlocks.
Referenced by bicameral::sim::MakeMultiresNest(), and PopPage().
|
nodiscard |
Definition at line 209 of file multires_implicit_conduction.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, bicameral::sim::MultiresStepOptions::implicitConduction, bicameral::sim::MultiresStepOptions::implicitMaxGap, bicameral::sim::MultiresStepOptions::subcycleBaseLevel, and bicameral::sim::MultiresCapacity::worldBlocks.
Referenced by MarkImplicitBlocks().
|
nodiscard |
Definition at line 218 of file multires_implicit_conduction.cpp.
Referenced by bicameral::sim::anonymous_namespace{multires_conduction.cpp}::CollectCellFaces(), ComputeConduction(), and bicameral::sim::anonymous_namespace{multires_implicit_conduction.cpp}::MakeSystem().
| std::vector< uint8_t > bicameral::sim::nest_detail::MarkConductionWants | ( | MultiresNest & | nest, |
| CellThermals & | thermals, | ||
| std::span< const uint8_t > | stepped, | ||
| const MultiresStepOptions & | options ) |
Definition at line 279 of file multires_conduction.cpp.
References bicameral::sim::MultiresNest::blocks.
Referenced by StepConduction().
|
nodiscard |
Definition at line 222 of file multires_implicit_conduction.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, bicameral::sim::MultiresImplicitBudget::cells, bicameral::sim::Explicit, bicameral::sim::MultiresStepOptions::implicitConduction, bicameral::sim::MultiresNest::implicitDeferredBlocks, bicameral::sim::MultiresStepOptions::implicitLimits, bicameral::sim::MultiresStepOptions::implicitOverflow, InImplicitConduction(), bicameral::sim::MakeMultiresImplicitBudget(), bicameral::sim::MultiresImplicitBudget::unknowns, and bicameral::sim::MultiresCapacity::worldBlocks.
Referenced by StepConduction().
|
inline |
Definition at line 76 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::blocks.
Referenced by bicameral::sim::anonymous_namespace{multires_conduction.cpp}::AddCellFlows(), AddImplicitConduction(), bicameral::sim::anonymous_namespace{multires_conduction.cpp}::ApplyEndingDeltas(), and bicameral::sim::anonymous_namespace{multires_nest.cpp}::StepPagedBlock().
|
inline |
Definition at line 35 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::blocks, and bicameral::sim::MultiresNest::cells.
Referenced by CellAt(), and ExpandWantedPages().
|
inline |
Definition at line 171 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::blocks, and bicameral::sim::MultiresNest::seeds.
Referenced by bicameral::sim::ApplyLabCommands(), bicameral::sim::FoldQuietPages(), and bicameral::sim::PlaceRootBlock().
|
inline |
Definition at line 52 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::counters, and FreePageAt().
Referenced by ExpandWantedPages(), and bicameral::sim::PlaceRootBlock().
| void bicameral::sim::nest_detail::RecordWaitResults | ( | MultiresNest & | nest, |
| std::span< const BlockStepResult > | results, | ||
| uint64_t | tick ) |
Definition at line 340 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::nest_detail::BlockStepResult::changed, bicameral::sim::nest_detail::BlockStepResult::evaluated, bicameral::sim::nest_detail::BlockStepResult::expanded, and bicameral::sim::nest_detail::BlockStepResult::wakeTick.
Referenced by bicameral::sim::StepActive(), and bicameral::sim::StepNest().
| void bicameral::sim::nest_detail::ResolvePokes | ( | MultiresNest & | nest, |
| uint64_t | tick ) |
Definition at line 329 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks.
Referenced by StepBlocks().
|
inline |
Definition at line 66 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::fractions.
Referenced by bicameral::sim::anonymous_namespace{multires_conduction.cpp}::AllocateConductionFractions(), and ApplyEnergyDelta().
| std::vector< BlockStepResult > bicameral::sim::nest_detail::StepBlocks | ( | MultiresNest & | nest, |
| const ReactionTableView & | view, | ||
| std::span< uint8_t > | stepped, | ||
| uint64_t | worldSeed, | ||
| uint64_t | tick, | ||
| const MultiresStepOptions & | options, | ||
| uint32_t | wakeMark ) |
Definition at line 279 of file multires_nest.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::nest_detail::BlockStepResult::changed, bicameral::sim::MultiresStepOptions::conduction, bicameral::sim::nest_detail::BlockStepResult::expanded, ExpandForStep(), ResolvePokes(), StepConduction(), and UniformAt().
Referenced by bicameral::sim::StepActive(), and bicameral::sim::StepNest().
| std::vector< multires::MrEnergyDelta > bicameral::sim::nest_detail::StepConduction | ( | MultiresNest & | nest, |
| const ReactionTableView & | view, | ||
| std::span< uint8_t > | stepped, | ||
| const MultiresStepOptions & | options, | ||
| uint32_t | wakeMark, | ||
| std::span< BlockStepResult > | results ) |
Definition at line 310 of file multires_conduction.cpp.
References AddImplicitConduction(), bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::cells, ComputeConduction(), ExpandForStep(), bicameral::sim::MultiresStepOptions::implicitConduction, MarkConductionWants(), MarkImplicitBlocks(), bicameral::sim::MultiresStepOptions::maxSubcycleGap, and bicameral::sim::MULTIRES_MAX_SUBCYCLE_GAP.
Referenced by StepBlocks().
|
inline |
Definition at line 31 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::cells.
|
inline |
Definition at line 27 of file multires_nest_internal.h.
References bicameral::sim::MultiresNest::cells.
Referenced by ExpandWantedPages(), and StepBlocks().
| void bicameral::sim::nest_detail::WakeAround | ( | MultiresNest & | nest, |
| uint32_t | slot, | ||
| uint32_t | mark ) |
Definition at line 184 of file multires_activity.cpp.
References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, and bicameral::sim::MultiresCapacity::rootLevel.
Referenced by bicameral::sim::StepActive(), and bicameral::sim::anonymous_namespace{multires_conduction.cpp}::WakeChangedBlocks().