Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
bicameral::sim::anonymous_namespace{multires_nest.cpp} Namespace Reference

Functions

bool IsObserverSlot (const MultiresNest &nest, uint32_t slot)
void RefineShadowLevel (MultiresNest &nest, uint32_t parentSlot, uint32_t childSlot, const MultiresPoint &point)
void PullBackLevel (MultiresNest &nest, const ReactionTableView &table, uint32_t shadowSlot)
Wide256 MakeWide256 (uint64_t high, uint64_t low, bool negative)
Wide256 ShiftLeft (const Wide256 &value, uint32_t bits)
Wide256 MultiplySmall (Wide256 value, uint32_t factor)
void AddTo (Wide256 &sum, const Wide256 &value)
void AddCellTotals (ConservedTotals &totals, const BakedReactionTable &table, const RxCell &cell, const MrFraction &fraction, uint32_t shiftBits)
Wide256 LedgerValue (uint64_t value, int32_t level, int32_t finestLevel)
void AddLedgerColumn (ConservedTotals &totals, const BakedReactionTable &table, uint32_t column, const Wide256 &amount)
void AddLedgerTotals (ConservedTotals &totals, const MultiresNest &nest, const BakedReactionTable &table, int32_t finestLevel)
uint64_t HashFraction (const MrFraction &fraction)
uint64_t HashBlock (const MrBlock &block)
uint64_t FractionEnergy (const MultiresNest &nest, uint32_t fractionSlot, uint32_t index)
nest_detail::BlockStepResult StepPagedBlock (MultiresNest &nest, const ReactionTableView &view, uint32_t slot, uint64_t worldSeed, uint64_t tick, bool react, std::span< const MrEnergyDelta > deltas)
reaction::RxCell & CellAt (MultiresNest &nest, uint32_t slot, uint32_t index)
multires::MrFraction FractionAt (const MultiresNest &nest, uint32_t fractionSlot, uint32_t index)
reaction::RxCell & PageCellAt (MultiresNest &nest, uint32_t page, uint32_t index)
reaction::RxCell & UniformAt (MultiresNest &nest, uint32_t slot)

Function Documentation

◆ AddCellTotals()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::AddCellTotals ( ConservedTotals & totals,
const BakedReactionTable & table,
const RxCell & cell,
const MrFraction & fraction,
uint32_t shiftBits )

Definition at line 112 of file multires_nest.cpp.

References AddCellTotals(), AddTo(), bicameral::sim::ConservedTotals::elements, bicameral::sim::ConservedTotals::energy, MakeWide256(), MultiplySmall(), ShiftLeft(), and bicameral::sim::BakedReactionTable::speciesElements.

Referenced by AddCellTotals().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddLedgerColumn()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::AddLedgerColumn ( ConservedTotals & totals,
const BakedReactionTable & table,
uint32_t column,
const Wide256 & amount )

Definition at line 138 of file multires_nest.cpp.

References AddLedgerColumn(), AddTo(), bicameral::sim::ConservedTotals::elements, bicameral::sim::ConservedTotals::energy, MultiplySmall(), and bicameral::sim::BakedReactionTable::speciesElements.

Referenced by AddLedgerColumn(), and AddLedgerTotals().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddLedgerTotals()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::AddLedgerTotals ( ConservedTotals & totals,
const MultiresNest & nest,
const BakedReactionTable & table,
int32_t finestLevel )

Definition at line 154 of file multires_nest.cpp.

References AddLedgerColumn(), AddLedgerTotals(), bicameral::sim::MultiresNest::capacity, bicameral::sim::MultiresNest::ledger, bicameral::sim::MultiresCapacity::ledgerColumns, and LedgerValue().

Referenced by AddLedgerTotals().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTo()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::AddTo ( Wide256 & sum,
const Wide256 & value )

Definition at line 102 of file multires_nest.cpp.

References AddTo().

Referenced by AddCellTotals(), AddLedgerColumn(), and AddTo().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CellAt()

reaction::RxCell & bicameral::sim::nest_detail::CellAt ( MultiresNest & nest,
uint32_t slot,
uint32_t index )
inline

Definition at line 40 of file multires_nest_internal.h.

Referenced by PullBackLevel(), and StepPagedBlock().

Here is the caller graph for this function:

◆ FractionAt()

multires::MrFraction bicameral::sim::nest_detail::FractionAt ( const MultiresNest & nest,
uint32_t fractionSlot,
uint32_t index )
inline

Definition at line 59 of file multires_nest_internal.h.

Referenced by FractionEnergy().

Here is the caller graph for this function:

◆ FractionEnergy()

uint64_t bicameral::sim::anonymous_namespace{multires_nest.cpp}::FractionEnergy ( const MultiresNest & nest,
uint32_t fractionSlot,
uint32_t index )

Definition at line 195 of file multires_nest.cpp.

References FractionAt(), and FractionEnergy().

Referenced by FractionEnergy(), and StepPagedBlock().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HashBlock()

uint64_t bicameral::sim::anonymous_namespace{multires_nest.cpp}::HashBlock ( const MrBlock & block)

Definition at line 178 of file multires_nest.cpp.

References HashBlock().

Referenced by HashBlock().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HashFraction()

uint64_t bicameral::sim::anonymous_namespace{multires_nest.cpp}::HashFraction ( const MrFraction & fraction)

Definition at line 167 of file multires_nest.cpp.

References HashFraction().

Referenced by HashFraction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsObserverSlot()

bool bicameral::sim::anonymous_namespace{multires_nest.cpp}::IsObserverSlot ( const MultiresNest & nest,
uint32_t slot )

Definition at line 25 of file multires_nest.cpp.

References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, IsObserverSlot(), and bicameral::sim::MultiresCapacity::worldBlocks.

Referenced by IsObserverSlot(), and RefineShadowLevel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LedgerValue()

Wide256 bicameral::sim::anonymous_namespace{multires_nest.cpp}::LedgerValue ( uint64_t value,
int32_t level,
int32_t finestLevel )

Definition at line 131 of file multires_nest.cpp.

References LedgerValue(), and ShiftLeft().

Referenced by AddLedgerTotals(), and LedgerValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeWide256()

Wide256 bicameral::sim::anonymous_namespace{multires_nest.cpp}::MakeWide256 ( uint64_t high,
uint64_t low,
bool negative )

Definition at line 67 of file multires_nest.cpp.

References MakeWide256().

Referenced by AddCellTotals(), and MakeWide256().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MultiplySmall()

Wide256 bicameral::sim::anonymous_namespace{multires_nest.cpp}::MultiplySmall ( Wide256 value,
uint32_t factor )

Definition at line 90 of file multires_nest.cpp.

References MultiplySmall().

Referenced by AddCellTotals(), AddLedgerColumn(), and MultiplySmall().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PageCellAt()

reaction::RxCell & bicameral::sim::nest_detail::PageCellAt ( MultiresNest & nest,
uint32_t page,
uint32_t index )
inline

Definition at line 35 of file multires_nest_internal.h.

Referenced by RefineShadowLevel().

Here is the caller graph for this function:

◆ PullBackLevel()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::PullBackLevel ( MultiresNest & nest,
const ReactionTableView & table,
uint32_t shadowSlot )

Definition at line 44 of file multires_nest.cpp.

References bicameral::sim::MultiresNest::blocks, CellAt(), bicameral::sim::MultiresNest::counters, bicameral::sim::LoadNestCell(), and PullBackLevel().

Referenced by PullBackLevel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RefineShadowLevel()

void bicameral::sim::anonymous_namespace{multires_nest.cpp}::RefineShadowLevel ( MultiresNest & nest,
uint32_t parentSlot,
uint32_t childSlot,
const MultiresPoint & point )

Definition at line 29 of file multires_nest.cpp.

References bicameral::sim::MultiresNest::blocks, bicameral::sim::MultiresNest::capacity, IsObserverSlot(), bicameral::sim::MultiresPoint::level, bicameral::sim::LoadNestCell(), PageCellAt(), RefineShadowLevel(), bicameral::sim::MultiresCapacity::worldBlocks, bicameral::sim::MultiresPoint::x, bicameral::sim::MultiresPoint::y, and bicameral::sim::MultiresPoint::z.

Referenced by RefineShadowLevel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShiftLeft()

Wide256 bicameral::sim::anonymous_namespace{multires_nest.cpp}::ShiftLeft ( const Wide256 & value,
uint32_t bits )

Definition at line 74 of file multires_nest.cpp.

References ShiftLeft().

Referenced by AddCellTotals(), LedgerValue(), and ShiftLeft().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StepPagedBlock()

nest_detail::BlockStepResult bicameral::sim::anonymous_namespace{multires_nest.cpp}::StepPagedBlock ( MultiresNest & nest,
const ReactionTableView & view,
uint32_t slot,
uint64_t worldSeed,
uint64_t tick,
bool react,
std::span< const MrEnergyDelta > deltas )

Definition at line 201 of file multires_nest.cpp.

References bicameral::sim::nest_detail::ApplyEnergyDelta(), bicameral::sim::MultiresNest::blocks, CellAt(), bicameral::sim::nest_detail::BlockStepResult::changed, bicameral::sim::MultiresNest::counters, bicameral::sim::nest_detail::BlockStepResult::evaluated, FractionEnergy(), bicameral::sim::nest_detail::PageCellAddress(), StepPagedBlock(), and bicameral::sim::nest_detail::BlockStepResult::wakeTick.

Referenced by StepPagedBlock().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UniformAt()

reaction::RxCell & bicameral::sim::nest_detail::UniformAt ( MultiresNest & nest,
uint32_t slot )
inline

Definition at line 27 of file multires_nest_internal.h.