23#include "common/probe_sim.hlsli"
36 static_assert(PROBE_PEEK_BLOCK_CELLS == multires::MR_BLOCK_CELLS &&
37 PROBE_PEEK_BLOCK_EDGE == multires::MR_BLOCK_EDGE);
89 [[nodiscard]]
static std::expected<ProbePeek, std::string>
Create(ID3D12Device5* device,
125 void Advance(std::span<const reaction::RxCell> world, uint64_t tick);
130 [[nodiscard]] std::vector<uint32_t>
Extraction()
const;
Plan NextPlan(uint64_t tick)
PeekCell Requested() const
std::vector< uint32_t > Extraction() const
const BakedReactionTable * m_table
const MultiresNest & Nest() const
std::array< uint32_t, PROBE_VIEW_SPECIES_COUNT > m_viewSpecies
void Advance(std::span< const reaction::RxCell > world, uint64_t tick)
ProbePeekReference(const BakedReactionTable &table)
static std::expected< ProbePeek, std::string > Create(ID3D12Device5 *device, const BakedReactionTable &table)
void RecordReadback(ID3D12GraphicsCommandList10 *list)
ComPtr< ID3D12PipelineState > m_extractPipeline
ProbePeek(GpuMultires &&nest, const std::array< uint32_t, PROBE_VIEW_SPECIES_COUNT > &viewSpecies)
bool Read(MultiresNest &nest) const
ComPtr< ID3D12PipelineState > m_mirrorPipeline
void RecordAfterExtract(ID3D12GraphicsCommandList10 *list, const ProbeExtractContext &context)
std::array< uint32_t, PROBE_VIEW_SPECIES_COUNT > m_viewSpecies
PeekCell Requested() const
MultiresPoint PeekPointOfCell(PeekCell cell)
constexpr uint32_t PEEK_LEVEL_COUNT
constexpr uint32_t PEEK_FIRST_SHADOW_SLOT
constexpr uint32_t PEEK_MIRROR_SLOT
constexpr uint32_t PEEK_BLOCK_CAPACITY
bool operator==(const PeekCell &) const =default