Go to the documentation of this file.
28 #ifndef __MaterialSerializer_H__
29 #define __MaterialSerializer_H__
136 { (void)ser; (void)event; (void)skip; (void)mat; }
147 { (void)ser; (void)event; (void)skip; (void)tech; }
158 { (void)ser; (void)event; (void)skip; (void)pass; }
255 const unsigned short level = 4,
const bool useMainBuffer =
true);
257 const unsigned short level = 4,
const bool useMainBuffer =
true);
259 const unsigned short level = 4,
const bool useMainBuffer =
true);
264 bool isFloat,
bool isDouble,
size_t physicalIndex,
size_t physicalSize,
266 const unsigned short level,
const bool useMainBuffer);
332 bool exportDefaults =
false,
const String& materialName =
"");
355 const bool includeProgDef =
false,
const String& programFilename =
"",
356 const String& materialName =
"");
385 void beginSection(
unsigned short level,
const bool useMainBuffer =
true)
387 String& buffer = (useMainBuffer ? mBuffer : mGpuProgramBuffer);
389 for (
unsigned short i = 0; i < level; ++i)
395 void endSection(
unsigned short level,
const bool useMainBuffer =
true)
397 String& buffer = (useMainBuffer ? mBuffer : mGpuProgramBuffer);
399 for (
unsigned short i = 0; i < level; ++i)
408 String& buffer = (useMainBuffer ? mBuffer : mGpuProgramBuffer);
410 for (
unsigned short i = 0; i < level; ++i)
419 String& buffer = (useMainBuffer ? mBuffer : mGpuProgramBuffer);
420 buffer += (
" " + val);
425 if (val.find_first_of(
" \t") != String::npos)
426 return (
"\"" + val +
"\"");
433 String& buffer = (useMainBuffer ? mBuffer : mGpuProgramBuffer);
435 for (
unsigned short i = 0; i < level; ++i)
439 buffer +=
"// " + comment;
vector< std::pair< String, String > >::type customParameters
void writeSceneBlendFactor(const SceneBlendFactor c_src, const SceneBlendFactor c_dest, const SceneBlendFactor a_src, const SceneBlendFactor a_dest)
Class representing the state of a single texture unit during a Pass of a Technique,...
void writeScrollEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
AttribParserList mTechniqueAttribParsers
Parsers for the technique section of a script.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
void writeRotationEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
void queueForExport(const MaterialPtr &pMat, bool clearQueued=false, bool exportDefaults=false, const String &materialName="")
Queue an in-memory Material to the internal buffer for export.
void writeGpuPrograms(void)
void writeLayerBlendOperationEx(const LayerBlendOperationEx op)
void finishProgramDefinition(void)
Internal method for saving a program definition which has been built up.
void writeMaterial(const MaterialPtr &pMat, const String &materialName="")
bool parseScriptLine(String &line)
internal method for parsing a material
virtual void passEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Pass *pass)
Called when pass section event raised.
bool isFragmentProgramShadowCaster
When referencing, are we in context of shadow caster.
vector< String >::type StringVector
virtual void techniqueEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Technique *tech)
Called when technique section event raised.
String convertFiltering(FilterOptions fo)
set< String >::type GpuProgramDefinitionContainer
void writeLowLevelGpuProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
void writeLayerBlendSource(const LayerBlendSource lbs)
AttribParserList mMaterialAttribParsers
Parsers for the material section of a script.
LayerBlendSource
List of valid sources of values for blending operations used in TextureUnitState::setColourOperation ...
Structure recording the use of an automatic parameter.
AttribParserList mTextureUnitAttribParsers
Parsers for the texture unit section of a script.
void writeCompareFunction(const CompareFunction cf)
void writeComment(unsigned short level, const String &comment, const bool useMainBuffer=true)
void writeVertexProgramRef(const Pass *pPass)
Class encapsulates rendering properties of an object.
bool usesVertexTextureFetch
Class that allows listening in on the various stages of material serialization process.
AttribParserList mProgramAttribParsers
Parsers for the program definition section of a script.
void writeValue(const String &val, const bool useMainBuffer=true)
void writeSceneBlendFactor(const SceneBlendFactor sbf)
MaterialScriptSection section
virtual ~MaterialSerializer()
default destructor
void writeShadowCasterFragmentProgramRef(const Pass *pPass)
void fireTextureUnitStateEvent(SerializeEvent event, bool &skip, const TextureUnitState *textureUnit)
Internal methods that invokes registered listeners callback.
bool isVertexProgramShadowReceiver
When referencing, are we in context of shadow caster.
void writeNamedGpuProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
bool(* ATTRIBUTE_PARSER)(String ¶ms, MaterialScriptContext &context)
Function def for material attribute parser; return value determines if the next line should be {.
Class defining a single pass of a Technique (of a Material), i.e.
Class representing an approach to rendering this particular Material.
void exportQueued(const String &filename, const bool includeProgDef=false, const String &programFilename="")
Exports queued material(s) to a named material script file.
bool isVertexProgramShadowCaster
Used when referencing a program, not when defining it.
MaterialScriptContext mScriptContext
GpuProgramDefinitionContainer mGpuProgramDefinitionContainer
void writeShadowReceiverFragmentProgramRef(const Pass *pPass)
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
AttribParserList mProgramDefaultParamAttribParsers
Parsers for the program definition section of a script.
GpuProgramType
Enumerates the types of programs which can run on the GPU.
GpuProgramDefinitionContainer::iterator GpuProgramDefIterator
Struct for holding a program definition which is in progress.
AttribParserList mRootAttribParsers
Parsers for the root of the material script.
void beginSection(unsigned short level, const bool useMainBuffer=true)
void removeListener(Listener *listener)
Remove a listener from this Serializer.
multimap< TextureUnitState::TextureEffectType, TextureUnitState::TextureEffect >::type EffectMap
SceneBlendFactor
Blending factors for manually blending objects with the scene.
virtual void materialEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Material *mat)
Called when material section event raised.
AttribParserList mProgramRefAttribParsers
Parsers for the program reference section of a script.
map< String, ATTRIBUTE_PARSER >::type AttribParserList
Keyword-mapped attribute parsers.
String quoteWord(const String &val)
void writeGpuProgramParameter(const String &commandName, const String &identifier, const GpuProgramParameters::AutoConstantEntry *autoEntry, const GpuProgramParameters::AutoConstantEntry *defaultAutoEntry, bool isFloat, bool isDouble, size_t physicalIndex, size_t physicalSize, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level, const bool useMainBuffer)
void addListener(Listener *listener)
Register a listener to this Serializer.
Class for serializing Materials to / from a .material script.
map< String, String >::type AliasTextureNamePairList
Alias / Texture name pair (first = alias, second = texture name)
ListenerList::iterator ListenerListIterator
FilterOptions
Filtering options for textures / mipmaps.
ushort numAnimationParametrics
void writeTextureUnit(const TextureUnitState *pTex)
void parseScript(DataStreamPtr &stream, const String &groupName)
Parses a Material script file passed as a stream.
void writeColourValue(const ColourValue &colour, bool writeAlpha=false)
Collects together the program parameters used for a GpuProgram.
size_t lineNo
Error reporting state.
MaterialSerializer()
default constructor
int techLev
This is used while defining a program.
void writeEnvironmentMapEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
void writeGpuProgramRef(const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms)
MaterialScriptSection
Enum to identify material sections.
bool supportsSkeletalAnimation
void clearQueue()
Clears the internal buffer.
void writeSceneBlendFactor(const SceneBlendFactor sbf_src, const SceneBlendFactor sbf_dest)
vector< Listener * >::type ListenerList
Listeners list of this Serializer.
void endSection(unsigned short level, const bool useMainBuffer=true)
GpuProgramParametersSharedPtr programParams
When referencing, are we in context of shadow caster.
void writeGPUProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
AttribParserList mPassAttribParsers
Parsers for the pass section of a script.
ushort supportsPoseAnimation
void writeTechnique(const Technique *pTech)
std::multimap< K, V, P, A > type
virtual void textureUnitStateEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const TextureUnitState *textureUnit)
Called when texture unit state section event raised.
Class representing colour.
void writeShadowCasterVertexProgramRef(const Pass *pPass)
void exportMaterial(const MaterialPtr &pMat, const String &filename, bool exportDefaults=false, const bool includeProgDef=false, const String &programFilename="", const String &materialName="")
Exports a single in-memory Material to the named material script file.
void firePassEvent(SerializeEvent event, bool &skip, const Pass *pass)
Internal methods that invokes registered listeners callback.
StringVector defaultParamLines
const String & getQueuedAsString() const
Returns a string representing the parsed material(s)
void writeAttribute(unsigned short level, const String &att, const bool useMainBuffer=true)
void writeShadowReceiverVertexProgramRef(const Pass *pPass)
void gpuProgramRefEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams)
Called when GPU program reference section event raised.
Struct for holding the script context while parsing.
void fireGpuProgramRefEvent(SerializeEvent event, bool &skip, const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams)
Internal methods that invokes registered listeners callback.
MaterialScriptProgramDefinition * programDef
void writeTransformEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
bool invokeParser(String &line, AttribParserList &parsers)
internal method for finding & invoking an attribute parser.
LayerBlendOperationEx
Expert list of valid texture blending operations, for use with TextureUnitState::setColourOperationEx...
bool supportsMorphAnimation
void fireMaterialEvent(SerializeEvent event, bool &skip, const Material *mat)
Internal methods that invokes registered listeners callback.
TextureUnitState * textureUnit
void writeFragmentProgramRef(const Pass *pPass)
void writePass(const Pass *pPass)
ListenerList::const_iterator ListenerListConstIterator
bool isFragmentProgramShadowReceiver
When referencing, are we in context of shadow caster.
AliasTextureNamePairList textureAliases
Internal structure defining a texture effect.
void fireTechniqueEvent(SerializeEvent event, bool &skip, const Technique *tech)
Internal methods that invokes registered listeners callback.
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.