76 Q_DISABLE_COPY(QSSGBufferManager)
78 enum MipMode : quint8 {
79 MipModeFollowRenderImage,
98 QSSGRenderTextureData *
data;
122 ~QSSGBufferManager();
126 void releaseCachedResources();
147 void releaseGeometry(QSSGRenderGeometry *geometry,
const QString &lightmapSource = QString());
168 static void registerMeshData(
const QString &assetId,
const QVector<QSSGMesh::Mesh> &meshData);
184 const QHash<std::pair<QSSGRenderPath, QString>, MeshData> &getMeshMap()
const {
return meshMap; }
185 const QHash<std::pair<QSSGRenderGeometry *, QString>, MeshData> &getCustomMeshMap()
const {
return customMeshMap; }
194 QRhiResourceUpdateBatch *meshBufferUpdateBatch();
196 static QSSGMesh::Mesh loadPrimitive(
const QString &inRelativePath);
197 enum CreateRhiTextureFlag {
198 ScanForTransparency = 0x01,
202 Q_DECLARE_FLAGS(CreateRhiTextureFlags, CreateRhiTextureFlag)
203 bool setRhiTexture(QSSGRenderImageTexture &texture,
204 const QSSGLoadedTexture *inTexture,
206 CreateRhiTextureFlags inFlags,
207 const QString &debugObjectName,
208 bool *wasTextureCreated =
nullptr);
213 QSSGRenderMesh *createRenderMesh(
const QSSGMesh::Mesh &mesh,
const QString &debugObjectName = {});
214 bool createEnvironmentMap(
const QSSGLoadedTexture *inImage, QSSGRenderImageTexture *outTexture,
const QString &debugObjectName);
216 void releaseMesh(
const QSSGRenderPath &inSourcePath);
222 QHash<ImageCacheKey, ImageData> imageMap;
223 QHash<CustomImageCacheKey, ImageData> customTextureMap;
224 QHash<QSGTexture *, ImageData> qsgImageMap;
225 QHash<
const QSSGRenderExtension *, ImageData> renderExtensionTexture;
226 QHash<std::pair<QSSGRenderPath, QString>, MeshData> meshMap;
227 QHash<std::pair<QSSGRenderGeometry *, QString>, MeshData> customMeshMap;
229 using QSSGUserRenderPassManagerWeakPtr = std::weak_ptr<QSSGUserRenderPassManager>;
230 std::vector<QSSGUserRenderPassManagerWeakPtr> userRenderPassManagers;
232 QRhiResourceUpdateBatch *meshBufferUpdates =
nullptr;
233 QMutex meshBufferMutex;
235 quint32 frameCleanupIndex = 0;
236 quint32 frameResetIndex = 0;
237 QSSGRenderLayer *currentLayer =
nullptr;
240 QString lightmapSource;
241 bool lightmapFileValid =
false;
242 bool lightmapSourceDirty =
true;
243 bool currentlyLightmapBaking =
false;
244 bool validateLightmap();