LeviLamina
Loading...
Searching...
No Matches
TextureAtlas.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core_graphics/MipMapSupport.h"
7#include "mc/deps/core_graphics/TextureDescription.h"
8
9// auto generated forward declare list
10// clang-format off
11class TintMapColor;
12namespace cg { class ImageBuffer; }
13namespace cg { struct AtlasCreationTile; }
14namespace cg { struct TextureAtlasTileUVs; }
15namespace mce { class Color; }
16// clang-format on
17
18namespace cg {
19
21public:
22 // member variables
23 // NOLINTBEGIN
24 ::ll::TypedStorage<8, 24, ::std::vector<::cg::ImageBuffer>> mAtlasMipStorage;
25 ::ll::TypedStorage<8, 24, ::std::vector<::cg::TextureAtlasTileUVs>> mTileUVs;
26 ::ll::TypedStorage<4, 24, ::cg::TextureDescription> mAtlasTextureDescription;
27 ::ll::TypedStorage<4, 4, uint> mPadSize;
28 ::ll::TypedStorage<4, 4, uint> mReductionMips;
29 ::ll::TypedStorage<8, 8, uint64> mStorageAllocated;
30 // NOLINTEND
31
32public:
33 // member functions
34 // NOLINTBEGIN
35#ifdef LL_PLAT_C
36 MCAPI void _allocateTexture();
37
38 MCAPI bool _tryCreateAtlasUnderMax(::std::vector<::cg::AtlasCreationTile> const& inTiles, uint maxArea);
39
40 MCAPI void createAtlasForTiles(
41 ::std::vector<::cg::AtlasCreationTile> const& inTiles,
42 uint maxArea,
43 uint padSize,
44 ::cg::MipMapSupport mipMapSupport,
45 uint maxMips
46 );
47
48 MCFOLD ::cg::TextureDescription const& getAtlasTextureDescription() const;
49
50 MCAPI ::cg::ImageBuffer& getImage(uint mipLevel);
51
52 MCFOLD ::cg::TextureDescription const& getImageDescription() const;
53
54 MCFOLD ::std::vector<::cg::ImageBuffer>& getImages();
55
56 MCFOLD uint getPadSize() const;
57
58 MCFOLD uint getReductionMips() const;
59
60 MCAPI ::cg::TextureAtlasTileUVs const& getUVsForTextureIndex(int textureIndex) const;
61
62 MCAPI uint64 getUsedMemory() const;
63
64 MCAPI bool isAtlasTextureValid() const;
65
66 MCAPI void updateTextureAtUVs(
67 ::cg::TextureAtlasTileUVs const& inUVs,
68 ::cg::ImageBuffer const* const srcImage,
69 uint mipLevel,
70 ::mce::Color const& defaultColor,
71 bool isQuad,
72 bool isAdditive,
73 bool applyTint,
74 ::cg::ImageBuffer const* const srcImageTint,
75 bool multiChannelTint,
76 ::TintMapColor const& multiChannelTintBaseColor,
77 ::TintMapColor const& multiChannelTintColor,
78 ::mce::Color const& singleChannelTintColor,
79 bool applyOverlay,
80 ::mce::Color const& overlayColor,
81 bool fadeMip,
82 float fadeMipAmount,
83 ::mce::Color const& fadeMipColor
84 );
85
86 MCAPI ~TextureAtlas();
87#endif
88 // NOLINTEND
89
90public:
91 // static functions
92 // NOLINTBEGIN
93#ifdef LL_PLAT_C
94 MCAPI static void _readTexture(
95 ::glm::vec<4, uchar>& color,
96 ::glm::vec2 const& uv,
97 ::cg::ImageBuffer const& textureData,
98 uint textureDataStride,
99 ::glm::ivec2 const& maxDimensions
100 );
101
102 MCAPI static bool _tryCreateUVs(
103 ::std::vector<::cg::AtlasCreationTile> const& inTiles,
104 uint width,
105 uint height,
106 uint padSize,
107 ::std::vector<::cg::TextureAtlasTileUVs>& outTileUvs,
108 uint& outMaxWidth,
109 uint& outMaxHeight
110 );
111#endif
112 // NOLINTEND
113
114public:
115 // destructor thunk
116 // NOLINTBEGIN
117#ifdef LL_PLAT_C
118 MCFOLD void $dtor();
119#endif
120 // NOLINTEND
121};
122
123} // namespace cg
Definition TintMapColor.h:8
Definition ImageBuffer.h:16
Definition TextureAtlas.h:20
Definition Color.h:13
Definition AtlasCreationTile.h:7
Definition TextureAtlasTileUVs.h:7