MaterialX 1.38.10
Loading...
Searching...
No Matches
MdlSyntax.h
Go to the documentation of this file.
1//
2// Copyright Contributors to the MaterialX Project
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#ifndef MATERIALX_MDLSYNTAX_H
7#define MATERIALX_MDLSYNTAX_H
8
11
13
15
16MATERIALX_NAMESPACE_BEGIN
17
18class MdlSyntax;
19
21using MdlSyntaxPtr = shared_ptr<MdlSyntax>;
22
25class MX_GENMDL_API MdlSyntax : public Syntax
26{
27 public:
28 MdlSyntax();
29
30 static SyntaxPtr create() { return std::make_shared<MdlSyntax>(); }
31
32 const string& getConstantQualifier() const override { return CONST_QUALIFIER; };
33 const string& getUniformQualifier() const override { return UNIFORM_QUALIFIER; };
34 const string& getSourceFileExtension() const override { return SOURCE_FILE_EXTENSION; };
35
36 string getSwizzledVariable(const string& srcName, const TypeDesc* srcType, const string& channels, const TypeDesc* dstType) const override;
37
39 string getArrayTypeSuffix(const TypeDesc* type, const Value& value) const override;
40
42 string getArrayVariableSuffix(const TypeDesc*, const Value&) const override { return EMPTY_STRING; };
43
44 static const string CONST_QUALIFIER;
45 static const string UNIFORM_QUALIFIER;
46 static const string SOURCE_FILE_EXTENSION;
47 static const StringVec VECTOR2_MEMBERS;
48 static const StringVec VECTOR3_MEMBERS;
49 static const StringVec VECTOR4_MEMBERS;
50 static const StringVec COLOR3_MEMBERS;
51 static const StringVec COLOR4_MEMBERS;
52 static const StringVec ADDRESSMODE_MEMBERS;
53 static const StringVec COORDINATESPACE_MEMBERS;
54 static const StringVec FILTERLOOKUPMODE_MEMBERS;
55 static const StringVec FILTERTYPE_MEMBERS;
56 static const StringVec DISTRIBUTIONTYPE_MEMBERS;
57 static const StringVec SCATTER_MODE_MEMBERS;
58
60 const TypeDesc* getEnumeratedType(const string& value) const;
61
64 bool remapEnumeration(const string& value, const TypeDesc* type, const string& enumNames, std::pair<const TypeDesc*, ValuePtr>& result) const override;
65
67 void makeValidName(string& name) const override;
68};
69
70namespace Type
71{
72
73extern MX_GENMDL_API const TypeDesc* MDL_ADDRESSMODE;
74extern MX_GENMDL_API const TypeDesc* MDL_COORDINATESPACE;
75extern MX_GENMDL_API const TypeDesc* MDL_FILTERLOOKUPMODE;
76extern MX_GENMDL_API const TypeDesc* MDL_FILTERTYPE;
77extern MX_GENMDL_API const TypeDesc* MDL_DISTRIBUTIONTYPE;
78
79} // namespace Type
80
81MATERIALX_NAMESPACE_END
82
83#endif
vector< string > StringVec
A vector of strings.
Definition: Library.h:57
Macros for declaring imported and exported symbols.
shared_ptr< MdlSyntax > MdlSyntaxPtr
Shared pointer to an MdlSyntax.
Definition: MdlSyntax.h:21
Base class for syntax handling for shader generators.
shared_ptr< Syntax > SyntaxPtr
Shared pointer to a Syntax.
Definition: Syntax.h:26
Syntax class for MDL (Material Definition Language)
Definition: MdlSyntax.h:26
const string & getConstantQualifier() const override
Get the qualifier used when declaring constant variables.
Definition: MdlSyntax.h:32
const string & getUniformQualifier() const override
Get the qualifier used when declaring uniform variables.
Definition: MdlSyntax.h:33
const string & getSourceFileExtension() const override
Return the file extension used for source code files in this language.
Definition: MdlSyntax.h:34
string getArrayVariableSuffix(const TypeDesc *, const Value &) const override
Override to indicate array variables have no array suffix.
Definition: MdlSyntax.h:42
Base class for syntax objects used by shader generators to emit code with correct syntax for each lan...
Definition: Syntax.h:40
virtual bool remapEnumeration(const string &value, const TypeDesc *type, const string &enumNames, std::pair< const TypeDesc *, ValuePtr > &result) const
Given an input specification attempt to remap this to an enumeration which is accepted by the shader ...
Definition: Syntax.cpp:335
virtual string getSwizzledVariable(const string &srcName, const TypeDesc *srcType, const string &channels, const TypeDesc *dstType) const
Get syntax for a swizzled variable.
Definition: Syntax.cpp:142
virtual void makeValidName(string &name) const
Modify the given name string to remove any invalid characters or tokens.
Definition: Syntax.cpp:298
virtual string getArrayTypeSuffix(const TypeDesc *, const Value &) const
Return the array suffix to use for declaring an array type.
Definition: Syntax.h:158
A type descriptor for MaterialX data types.
Definition: TypeDesc.h:28
A generic, discriminated value, whose type may be queried dynamically.
Definition: Value.h:45