14 #ifndef hifi_MaterialBaker_h
15 #define hifi_MaterialBaker_h
17 #include <QtCore/QSharedPointer>
21 #include "TextureBaker.h"
22 #include "baking/TextureFileNamer.h"
24 #include <HelperScriptEngine.h>
25 #include <procedural/ProceduralMaterialCache.h>
26 #include <ScriptEngine.h>
28 static const QString BAKED_MATERIAL_EXTENSION =
".baked.json";
30 using TextureKey = QPair<QUrl, image::TextureUsage::Type>;
32 class MaterialBaker :
public Baker {
35 MaterialBaker(
const QString& materialData,
bool isURL,
const QString& bakedOutputDir, QUrl destinationPath = QUrl());
37 QString getMaterialData()
const {
return _materialData; }
38 bool isURL()
const {
return _isURL; }
39 QString getBakedMaterialData()
const {
return _bakedMaterialData; }
41 void setMaterials(
const QHash<QString, hfm::Material>& materials,
const QString& baseURL);
42 void setMaterials(
const NetworkMaterialResourcePointer& materialResource);
44 NetworkMaterialResourcePointer getNetworkMaterialResource()
const {
return _materialResource; }
46 static void setNextOvenWorkerThreadOperator(std::function<QThread*()> getNextOvenWorkerThreadOperator) { _getNextOvenWorkerThreadOperator = getNextOvenWorkerThreadOperator; }
49 virtual void bake()
override;
50 virtual void abort()
override;
53 void originalMaterialLoaded();
56 void processMaterial();
57 void outputMaterial();
58 void handleFinishedTextureBaker();
63 QString _materialData;
65 QUrl _destinationPath;
67 NetworkMaterialResourcePointer _materialResource;
69 QHash<TextureKey, QSharedPointer<TextureBaker>> _textureBakers;
70 QMultiHash<TextureKey, std::shared_ptr<NetworkMaterial>> _materialsNeedingRewrite;
72 QString _bakedOutputDir;
73 QString _textureOutputDir;
74 QString _bakedMaterialData;
77 static std::function<QThread*()> _getNextOvenWorkerThreadOperator;
78 TextureFileNamer _textureFileNamer;
80 void addTexture(
const QString& materialName, image::TextureUsage::Type textureUsage,
const hfm::Texture& texture);
81 struct TextureUsageHash {
82 std::size_t operator()(image::TextureUsage::Type textureUsage)
const {
83 return static_cast<std::size_t
>(textureUsage);
86 std::unordered_map<std::string, std::unordered_map<image::TextureUsage::Type, std::pair<QByteArray, QString>, TextureUsageHash>> _textureContentMap;
Provides a wrapper around script engine that does not have ScriptManager.
Definition: HelperScriptEngine.h:31
A texture map.
Definition: HFM.h:132