3#include <Tempest/DescriptorArray>
4#include <Tempest/StorageBuffer>
25 Id(
Id&& other)
noexcept;
29 uint16_t
toInt()
const {
return id; }
47 auto ssbo() const -> const Tempest::StorageBuffer& {
return bucketsGpu; }
48 auto buckets() ->
const std::vector<Bucket>&;
51 auto&
vbo()
const {
return desc.vbo; }
52 auto&
ibo()
const {
return desc.ibo; }
53 auto&
morphId()
const {
return desc.morphId; }
54 auto&
morph()
const {
return desc.morph; }
56 bool commit(Tempest::Encoder<Tempest::CommandBuffer>& cmd, uint8_t fId);
59 void updateBindlessArrays();
61 enum BucketFlg : uint32_t {
68 struct BucketGpu final {
69 Tempest::Vec4 bbox[2];
70 Tempest::Point texAniMapDirPeriod;
72 float waveMaxAmplitude = 0;
73 float alphaWeight = 1;
76 uint32_t padd[1] = {};
80 Tempest::DescriptorArray
tex;
81 Tempest::DescriptorArray
vbo;
82 Tempest::DescriptorArray
ibo;
87 std::vector<Bucket> bucketsCpu;
88 Tempest::StorageBuffer bucketsGpu;
89 bool bucketsDurtyBit =
false;
Id & operator=(Id &&other) noexcept
Id alloc(const Material &mat, const StaticMesh &mesh)
Tempest::DescriptorArray tex
bool commit(Tempest::Encoder< Tempest::CommandBuffer > &cmd, uint8_t fId)
Tempest::DescriptorArray ibo
Tempest::DescriptorArray morphId
auto buckets() -> const std::vector< Bucket > &
const Bucket & operator[](size_t i)
auto ssbo() const -> const Tempest::StorageBuffer &
Tempest::DescriptorArray vbo
Tempest::DescriptorArray morph
const StaticMesh * staticMesh
const AnimMesh * animMesh