载入中...
搜索中...
未找到
EcsGpu.h
浏览该文件的文档.
26 static_assert(std::is_trivially_copyable_v<Comp>, "EcsGpu component must be trivially copyable");
36 size_t entityCapacity() const { return floats_.capacity() / size_t(sizeof(Comp) / sizeof(float)); }
116void unpackViewComponent(ShaderSystem &sys, int binding, int count, EcsGpuWorkspace<Comp> &workspace) {
157 std::memcpy(workspace.floats_.data() + size_t(packed) * size_t(floatsPer), static_cast<const void *>(comp),
161 if (packed > 0) sys.uploadRange(binding, workspace.floats_.data(), packed * floatsPer, firstEntity * floatsPer);
176 sys.downloadRange(binding, workspace.floats_.data(), count * floatsPer, firstEntity * floatsPer);
Reusable typed CPU staging for a GPU ECS component stream. Ownership stays with the caller; one works...
Definition EcsGpu.h:24
friend void unpackViewComponent(ShaderSystem &, int, int, EcsGpuWorkspace< C > &)
friend int packViewComponent(ShaderSystem &, int, EcsGpuWorkspace< C > &)
friend int unpackViewComponentRange(ShaderSystem &, int, int, int, EcsGpuWorkspace< C > &)
void reserveEntities(int entityCount)
Reserve staging storage for at least entityCount components.
Definition EcsGpu.h:31
friend int packViewComponentRange(ShaderSystem &, int, int, int, EcsGpuWorkspace< C > &)
size_t entityCapacity() const
Current allocated staging capacity expressed as entity records.
Definition EcsGpu.h:36
void upload(int binding, const float *data, int floatCount)
Uploads upload.
Definition ShaderSystem.cpp:76
void downloadRange(int binding, float *out, int floatCount, int startFloat) const
Download floats from an existing resident buffer range.
Definition ShaderSystem.cpp:102
void download(int binding, float *out, int floatCount) const
Downloads download.
Definition ShaderSystem.cpp:83
void uploadRange(int binding, const float *data, int floatCount, int startFloat)
Upload floats into an existing resident buffer range.
Definition ShaderSystem.cpp:91
void unpackViewComponent(ShaderSystem &sys, int binding, int count, EcsGpuWorkspace< Comp > &workspace)
Write ShaderSystem binding floats back into View<Base, Comp> (same order as pack)....
Definition EcsGpu.h:116
int packViewComponentRange(ShaderSystem &sys, int binding, int firstEntity, int entityCount, EcsGpuWorkspace< Comp > &workspace)
Pack a stable contiguous View range into an existing resident buffer. The full buffer must have been ...
Definition EcsGpu.h:145
int packViewComponent(ShaderSystem &sys, int binding, EcsGpuWorkspace< Comp > &workspace)
Pack View<Base, Comp> into ShaderSystem binding as AoS floats. Returns entity count (0 if empty).
Definition EcsGpu.h:78
int unpackViewComponentRange(ShaderSystem &sys, int binding, int firstEntity, int entityCount, EcsGpuWorkspace< Comp > &workspace)
Unpack a stable contiguous resident-buffer range into a matching View range.
Definition EcsGpu.h:168
int runViewComponentSystem(ShaderSystem &sys, int binding, float dt)
Pack + dispatch + unpack a single-component GPU system. Additional bindings must be uploaded by the c...
Definition EcsGpu.h:198