MaterialX 1.39.1
Loading...
Searching...
No Matches
TextureBaker< Renderer, ShaderGen > Class Template Reference

A helper class for baking procedural material content to textures. More...

#include <TextureBaker.h>

Inheritance diagram for TextureBaker< Renderer, ShaderGen >:

Classes

class  BakedConstant
 
class  BakedImage
 

Public Member Functions

void setExtension (const string &extension)
 Set the file extension for baked textures.
 
const string & getExtension () const
 Return the file extension for baked textures.
 
void setColorSpace (const string &colorSpace)
 Set the color space in which color textures are encoded. More...
 
const string & getColorSpace () const
 Return the color space in which color textures are encoded.
 
void setDistanceUnit (const string &unitSpace)
 Set the distance unit to which textures are baked. Defaults to meters.
 
const string & getDistanceUnit () const
 Return the distance unit to which textures are baked.
 
void setAverageImages (bool enable)
 Set whether images should be averaged to generate constants. Defaults to false.
 
bool getAverageImages () const
 Return whether images should be averaged to generate constants.
 
void setOptimizeConstants (bool enable)
 Set whether uniform textures should be stored as constants. Defaults to true.
 
bool getOptimizeConstants () const
 Return whether uniform textures should be stored as constants.
 
void setOutputImagePath (const FilePath &outputImagePath)
 Set the output location for baked texture images. More...
 
const FilePathgetOutputImagePath ()
 Get the current output location for baked texture images.
 
void setBakedGraphName (const string &name)
 Set the name of the baked graph element.
 
const string & getBakedGraphName () const
 Return the name of the baked graph element.
 
void setBakedGeomInfoName (const string &name)
 Set the name of the baked geometry info element.
 
const string & getBakedGeomInfoName () const
 Return the name of the baked geometry info element.
 
const string & getTextureFilenameTemplate () const
 Get the texture filename template.
 
void setTextureFilenameTemplate (const string &filenameTemplate)
 Set the texture filename template.
 
void setFilenameTemplateVarOverride (const string &key, const string &value)
 Set texFilenameOverrides if template variable exists.
 
void setOutputStream (std::ostream *outputStream)
 Set the output stream for reporting progress and warnings. Defaults to std::cout.
 
std::ostream * getOutputStream () const
 Return the output stream for reporting progress and warnings.
 
void setHashImageNames (bool enable)
 Set whether to create a short name for baked images by hashing the baked image filenames This is useful for file systems which may have a maximum limit on filename size. More...
 
bool getHashImageNames () const
 Return whether automatic baked texture resolution is set.
 
void setTextureSpaceMin (const Vector2 &min)
 Set the minimum texcoords used in texture baking. Defaults to 0, 0.
 
Vector2 getTextureSpaceMin () const
 Return the minimum texcoords used in texture baking.
 
void setTextureSpaceMax (const Vector2 &max)
 Set the maximum texcoords used in texture baking. Defaults to 1, 1.
 
Vector2 getTextureSpaceMax () const
 Return the maximum texcoords used in texture baking.
 
void setupUnitSystem (DocumentPtr unitDefinitions)
 Set up the unit definitions to be used in baking.
 
void bakeShaderInputs (NodePtr material, NodePtr shader, GenContext &context, const string &udim=EMPTY_STRING)
 Bake textures for all graph inputs of the given shader.
 
void bakeGraphOutput (OutputPtr output, GenContext &context, const StringMap &filenameTemplateMap)
 Bake a texture for the given graph output.
 
void optimizeBakedTextures (NodePtr shader)
 Optimize baked textures before writing.
 
DocumentPtr bakeMaterialToDoc (DocumentPtr doc, const FileSearchPath &searchPath, const string &materialPath, const StringVec &udimSet, std::string &documentName)
 Bake material to document in memory and write baked textures to disk.
 
void bakeAllMaterials (DocumentPtr doc, const FileSearchPath &searchPath, const FilePath &outputFileName)
 Bake materials in the given document and write them to disk. More...
 
void writeDocumentPerMaterial (bool value)
 Set whether to write a separate document per material when calling bakeAllMaterials. More...
 
string getValueStringFromColor (const Color4 &color, const string &type)
 

Protected Types

using BakedImageVec = vector< BakedImage >
 
using BakedImageMap = std::unordered_map< OutputPtr, BakedImageVec >
 
using BakedConstantMap = std::unordered_map< OutputPtr, BakedConstant >
 

Protected Member Functions

 TextureBaker (unsigned int width, unsigned int height, Image::BaseType baseType, bool flipSavedImage)
 
StringMap initializeFileTemplateMap (InputPtr input, NodePtr shader, const string &udim=EMPTY_STRING)
 
size_t findVarInTemplate (const string &filename, const string &var, size_t start=0)
 
FilePath generateTextureFilename (const StringMap &fileTemplateMap)
 
DocumentPtr generateNewDocumentFromShader (NodePtr shader, const StringVec &udimSet)
 
bool writeBakedImage (const BakedImage &baked, ImagePtr image)
 

Protected Attributes

string _extension
 
string _colorSpace
 
string _distanceUnit
 
bool _averageImages
 
bool _optimizeConstants
 
FilePath _outputImagePath
 
string _bakedGraphName
 
string _bakedGeomInfoName
 
string _textureFilenameTemplate
 
std::ostream * _outputStream
 
bool _hashImageNames
 
Vector2 _textureSpaceMin
 
Vector2 _textureSpaceMax
 
ShaderGeneratorPtr _generator
 
ConstNodePtr _material
 
ImagePtr _frameCaptureImage
 
BakedImageMap _bakedImageMap
 
BakedConstantMap _bakedConstantMap
 
StringSet _permittedOverrides
 
StringMap _texTemplateOverrides
 
StringMap _bakedInputMap
 
std::unordered_map< string, NodePtr_worldSpaceNodes
 
bool _flipSavedImage
 
bool _writeDocumentPerMaterial
 
DocumentPtr _bakedTextureDoc
 

Detailed Description

template<typename Renderer, typename ShaderGen>
class TextureBaker< Renderer, ShaderGen >

A helper class for baking procedural material content to textures.

TODO: Add support for graphs containing geometric nodes such as position and normal.

Member Function Documentation

◆ bakeAllMaterials()

void bakeAllMaterials ( DocumentPtr  doc,
const FileSearchPath searchPath,
const FilePath outputFileName 
)

Bake materials in the given document and write them to disk.

If multiple documents are written, then the given output filename will be used as a template.

◆ setColorSpace()

void setColorSpace ( const string &  colorSpace)
inline

Set the color space in which color textures are encoded.

By default, this color space is srgb_texture, and color inputs are automatically transformed to this space by the baker. If another color space is set, then the input graph is responsible for transforming colors to this space.

◆ setHashImageNames()

void setHashImageNames ( bool  enable)
inline

Set whether to create a short name for baked images by hashing the baked image filenames This is useful for file systems which may have a maximum limit on filename size.

By default names are not hashed.

◆ setOutputImagePath()

void setOutputImagePath ( const FilePath outputImagePath)
inline

Set the output location for baked texture images.

Defaults to the root folder of the destination material.

◆ writeDocumentPerMaterial()

void writeDocumentPerMaterial ( bool  value)
inline

Set whether to write a separate document per material when calling bakeAllMaterials.

By default separate documents are written.


The documentation for this class was generated from the following file: