|
Bicameral Engine
GPU-resident engine for a magic-research open-world game
|
Classes | |
| struct | RefineRecord |
| struct | ActivityHeader |
| struct | ObserverRecord |
| struct | ChainRecord |
Enumerations | |
| enum | Entry : uint8_t { EntryRefine , EntryCoarsenRequest , EntryPullBack , EntryRemoveShadow } |
| enum | ActivityEntry : uint8_t { ActivityEntrySeed , ActivityEntryObserver , ActivityEntryExpand } |
| enum | TreePass : uint8_t { PassResolve , PassSettle , PassAllocate , PassRelease , PassClearIndex , PassFillIndex , PassQuiet , PassExpand , PassFoldCheck , PassFold , PassFractions , PassQuietCheck } |
| enum | ConductPass : uint8_t { ConductPassBegin , ConductPassMark , ConductPassPrepare , ConductPassFlows , ConductPassApply , ConductPassEnd } |
Functions | |
| uint32_t | ImplicitFlags (const MultiresStepOptions &options) |
| uint32_t | SubcycleFlags (uint32_t flags, const MultiresStepOptions &options, uint32_t substep) |
| uint32_t | GroupsFor (uint32_t threads, uint32_t perGroup) |
| template<typename T> | |
| ComPtr< ID3D12Resource > | CreateFilledUpload (ID3D12Device *device, std::span< const T > data) |
| bool | WriteUpload (ID3D12Resource *upload, std::span< const std::byte > bytes) |
| std::expected< ComPtr< ID3D12PipelineState >, std::string > | LoadComputePipeline (ID3D12Device5 *device, ID3D12RootSignature *rootSignature, const char *path) |
| void | UavBarrier (ID3D12GraphicsCommandList10 *list) |
Variables | |
| constexpr uint32_t | ROOT_CONSTANT_COUNT = 25 |
| constexpr uint32_t | EXTERNAL_VIEW_FIRST = 4 |
| constexpr uint32_t | UAV_COUNT = 14 |
| constexpr uint32_t | ACTIVITY_VIEW = 13 |
| constexpr gpu::RootSignatureLayout | ROOT_LAYOUT |
| constexpr uint32_t | TREE_THREADS = 64 |
| constexpr std::array< const char *, 12 > | TREE_SHADERS |
| constexpr std::array< const char *, 6 > | CONDUCT_SHADERS |
| constexpr uint32_t | STEP_FLAG_CONDUCTION = 1 |
| constexpr uint32_t | STEP_FLAG_LISTED = 2 |
| constexpr uint32_t | STEP_FLAG_SUBSTEP_WAKE = 4 |
| constexpr uint32_t | STEP_FLAG_WAKE_SEEDS = 16 |
| constexpr uint32_t | STEP_FLAG_IMPLICIT = 8 |
| constexpr uint32_t | STEP_IMPLICIT_GAP_SHIFT = 5 |
| constexpr uint32_t | MAX_GPU_IMPLICIT_GAP = 8 |
| constexpr uint32_t | STEP_FLAG_BITS = 0xFF |
| constexpr uint32_t | STEP_SUBSTEP_SHIFT = 8 |
| constexpr uint32_t | STEP_GAP_SHIFT = 14 |
| constexpr uint32_t | STEP_BASE_SHIFT = 16 |
| constexpr uint32_t | WAKE_THREADS = 64 |
| constexpr uint64_t | CONDUCT_MARK_BYTES = 16 * sizeof(uint32_t) |
| constexpr uint64_t | CONDUCT_DELTA_BYTES = 16 |
| constexpr uint32_t | GRAPH_INPUT_REFINE_HEADER = 0 |
| constexpr uint32_t | GRAPH_INPUT_COARSEN_HEADER = 32 |
| constexpr uint32_t | REFINE_RECORD_BYTES = 24 |
| constexpr uint32_t | GRAPH_INPUT_BYTES = 64 + ((REFINE_RECORD_BYTES + 4) * (MR_MAX_REQUESTS + 1)) |
| constexpr uint32_t | GRAPH_INPUT_EXPAND_HEADER = (GRAPH_INPUT_BYTES + 15) & ~15u |
| constexpr std::array< uint32_t, 4 > | GRAPH_INPUT_CONDUCT_HEADERS |
| constexpr uint32_t | GRAPH_INPUT_EXPAND_RECORDS = GRAPH_INPUT_EXPAND_HEADER + 160 |
| constexpr uint64_t | ACTIVITY_EMPTY_BYTES = sizeof(ActivityHeader) + sizeof(uint32_t) |
| constexpr uint64_t | ACTIVITY_EMPTY_STRIDE = 64 |
| constexpr uint64_t | ACTIVITY_FIRST_OFFSET = 2 * ACTIVITY_EMPTY_STRIDE |
| constexpr uint64_t | REQUEST_UPLOAD_BYTES = (uint64_t{MR_MAX_REQUESTS} * sizeof(MrRequest)) + 256 |
| enum bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ActivityEntry : uint8_t |
| Enumerator | |
|---|---|
| ActivityEntrySeed | |
| ActivityEntryObserver | |
| ActivityEntryExpand | |
Definition at line 45 of file gpu_multires.cpp.
| enum bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ConductPass : uint8_t |
| Enumerator | |
|---|---|
| ConductPassBegin | |
| ConductPassMark | |
| ConductPassPrepare | |
| ConductPassFlows | |
| ConductPassApply | |
| ConductPassEnd | |
Definition at line 69 of file gpu_multires.cpp.
| enum bicameral::sim::anonymous_namespace{gpu_multires.cpp}::Entry : uint8_t |
| Enumerator | |
|---|---|
| EntryRefine | |
| EntryCoarsenRequest | |
| EntryPullBack | |
| EntryRemoveShadow | |
Definition at line 37 of file gpu_multires.cpp.
| enum bicameral::sim::anonymous_namespace{gpu_multires.cpp}::TreePass : uint8_t |
| Enumerator | |
|---|---|
| PassResolve | |
| PassSettle | |
| PassAllocate | |
| PassRelease | |
| PassClearIndex | |
| PassFillIndex | |
| PassQuiet | |
| PassExpand | |
| PassFoldCheck | |
| PassFold | |
| PassFractions | |
| PassQuietCheck | |
Definition at line 48 of file gpu_multires.cpp.
| ComPtr< ID3D12Resource > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CreateFilledUpload | ( | ID3D12Device * | device, |
| std::span< const T > | data ) |
Definition at line 190 of file gpu_multires.cpp.
References bicameral::gpu::CreateBuffer(), CreateFilledUpload(), and bicameral::gpu::Upload.
Referenced by CreateFilledUpload().
| uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::GroupsFor | ( | uint32_t | threads, |
| uint32_t | perGroup ) |
Definition at line 180 of file gpu_multires.cpp.
References GroupsFor().
Referenced by GroupsFor().
| uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::ImplicitFlags | ( | const MultiresStepOptions & | options | ) |
Definition at line 99 of file gpu_multires.cpp.
References bicameral::sim::MultiresStepOptions::implicitConduction, ImplicitFlags(), bicameral::sim::MultiresStepOptions::implicitMaxGap, MAX_GPU_IMPLICIT_GAP, bicameral::sim::MultiresStepOptions::maxSubcycleGap, STEP_FLAG_IMPLICIT, and STEP_IMPLICIT_GAP_SHIFT.
Referenced by ImplicitFlags(), and SubcycleFlags().
| std::expected< ComPtr< ID3D12PipelineState >, std::string > bicameral::sim::anonymous_namespace{gpu_multires.cpp}::LoadComputePipeline | ( | ID3D12Device5 * | device, |
| ID3D12RootSignature * | rootSignature, | ||
| const char * | path ) |
Definition at line 217 of file gpu_multires.cpp.
References bicameral::gpu::CreateComputePipeline(), LoadComputePipeline(), and bicameral::gpu::LoadShader().
Referenced by LoadComputePipeline().
| uint32_t bicameral::sim::anonymous_namespace{gpu_multires.cpp}::SubcycleFlags | ( | uint32_t | flags, |
| const MultiresStepOptions & | options, | ||
| uint32_t | substep ) |
Definition at line 112 of file gpu_multires.cpp.
References ImplicitFlags(), bicameral::sim::MultiresStepOptions::maxSubcycleGap, bicameral::sim::MULTIRES_MAX_SUBCYCLE_GAP, STEP_BASE_SHIFT, STEP_FLAG_BITS, STEP_GAP_SHIFT, STEP_SUBSTEP_SHIFT, bicameral::sim::MultiresStepOptions::subcycleBaseLevel, and SubcycleFlags().
Referenced by SubcycleFlags().
| void bicameral::sim::anonymous_namespace{gpu_multires.cpp}::UavBarrier | ( | ID3D12GraphicsCommandList10 * | list | ) |
Definition at line 231 of file gpu_multires.cpp.
References bicameral::gpu::UavBarrier(), and UavBarrier().
Referenced by UavBarrier().
| bool bicameral::sim::anonymous_namespace{gpu_multires.cpp}::WriteUpload | ( | ID3D12Resource * | upload, |
| std::span< const std::byte > | bytes ) |
Definition at line 204 of file gpu_multires.cpp.
References WriteUpload().
Referenced by WriteUpload().
|
constexpr |
Definition at line 167 of file gpu_multires.cpp.
|
constexpr |
Definition at line 168 of file gpu_multires.cpp.
|
constexpr |
Definition at line 169 of file gpu_multires.cpp.
|
constexpr |
Definition at line 32 of file gpu_multires.cpp.
|
constexpr |
Definition at line 124 of file gpu_multires.cpp.
|
constexpr |
Definition at line 123 of file gpu_multires.cpp.
|
constexpr |
Definition at line 77 of file gpu_multires.cpp.
|
constexpr |
Definition at line 30 of file gpu_multires.cpp.
|
constexpr |
Definition at line 130 of file gpu_multires.cpp.
|
constexpr |
Definition at line 128 of file gpu_multires.cpp.
|
constexpr |
Definition at line 133 of file gpu_multires.cpp.
|
constexpr |
Definition at line 131 of file gpu_multires.cpp.
|
constexpr |
Definition at line 136 of file gpu_multires.cpp.
|
constexpr |
Definition at line 127 of file gpu_multires.cpp.
|
constexpr |
Definition at line 88 of file gpu_multires.cpp.
Referenced by ImplicitFlags().
|
constexpr |
Definition at line 129 of file gpu_multires.cpp.
|
constexpr |
Definition at line 178 of file gpu_multires.cpp.
|
constexpr |
Definition at line 29 of file gpu_multires.cpp.
|
constexpr |
Definition at line 33 of file gpu_multires.cpp.
|
constexpr |
Definition at line 92 of file gpu_multires.cpp.
Referenced by SubcycleFlags().
|
constexpr |
Definition at line 89 of file gpu_multires.cpp.
Referenced by SubcycleFlags().
|
constexpr |
Definition at line 82 of file gpu_multires.cpp.
|
constexpr |
Definition at line 86 of file gpu_multires.cpp.
Referenced by ImplicitFlags().
|
constexpr |
Definition at line 83 of file gpu_multires.cpp.
|
constexpr |
Definition at line 84 of file gpu_multires.cpp.
|
constexpr |
Definition at line 85 of file gpu_multires.cpp.
|
constexpr |
Definition at line 91 of file gpu_multires.cpp.
Referenced by SubcycleFlags().
|
constexpr |
Definition at line 87 of file gpu_multires.cpp.
Referenced by ImplicitFlags().
|
constexpr |
Definition at line 90 of file gpu_multires.cpp.
Referenced by SubcycleFlags().
|
constexpr |
Definition at line 62 of file gpu_multires.cpp.
|
constexpr |
Definition at line 35 of file gpu_multires.cpp.
|
constexpr |
Definition at line 31 of file gpu_multires.cpp.
|
constexpr |
Definition at line 95 of file gpu_multires.cpp.