MaterialX 1.38.2
BlurNode.h
1//
2// TM & (c) 2017 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3// All rights reserved. See LICENSE.txt for license.
4//
5
6#ifndef MATERIALX_BLURNODE_H
7#define MATERIALX_BLURNODE_H
8
9#include <MaterialXGenShader/Nodes/ConvolutionNode.h>
10
11namespace MaterialX
12{
13
15class MX_GENSHADER_API BlurNode : public ConvolutionNode
16{
17 public:
18 void emitFunctionDefinition(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
19 void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
20
21 protected:
23 BlurNode();
24
26 virtual void emitSamplingFunctionDefinition(const ShaderNode& node, GenContext& context, ShaderStage& stage) const = 0;
27
29 bool acceptsInputType(const TypeDesc* type) const override;
30
32 void computeSampleOffsetStrings(const string& sampleSizeName, const string& offsetTypeString,
33 unsigned int filterWidth, StringVec& offsetStrings) const override;
34
36 virtual void outputSampleArray(const ShaderGenerator& shadergen, ShaderStage& stage, const TypeDesc* inputType,
37 const string& sampleName, const StringVec& sampleStrings) const;
38
39 static const string _sampleSizeFunctionUV;
40 static const float _filterSize;
41 static const float _filterOffset;
42
44 static const string BOX_FILTER;
46 static const string BOX_WEIGHTS_VARIABLE;
47
49 static const string GAUSSIAN_FILTER;
51 static const string GAUSSIAN_WEIGHTS_VARIABLE;
52
54 static const string FILTER_LIST;
55
57 static const string IN_STRING;
58 static const string FILTER_TYPE_STRING;
59 static const string FILTER_SIZE_STRING;
60};
61
62} // namespace MaterialX
63
64#endif
vector< string > StringVec
A vector of strings.
Definition: Library.h:56
Blur node implementation.
Definition: BlurNode.h:16
static const string IN_STRING
String constants.
Definition: BlurNode.h:57
static const string _sampleSizeFunctionUV
Name of function to compute sample size in uv space.
Definition: BlurNode.h:39
virtual void emitSamplingFunctionDefinition(const ShaderNode &node, GenContext &context, ShaderStage &stage) const =0
Emit function definitions for sampling functions used by this node.
static const string BOX_WEIGHTS_VARIABLE
Box filter weights variable name.
Definition: BlurNode.h:46
static const string FILTER_LIST
List of filters.
Definition: BlurNode.h:54
static const string BOX_FILTER
Box filter option on blur.
Definition: BlurNode.h:44
static const string GAUSSIAN_FILTER
Gaussian filter option on blur.
Definition: BlurNode.h:49
static const string GAUSSIAN_WEIGHTS_VARIABLE
Gaussian filter weights variable name.
Definition: BlurNode.h:51
Utility class for implementations of nodes which perform convolutions.
Definition: ConvolutionNode.h:23
A context class for shader generation.
Definition: GenContext.h:27
Base class for shader generators All third-party shader generators should derive from this class.
Definition: ShaderGenerator.h:30
Class representing a node in the shader generation DAG.
Definition: ShaderNode.h:326
A shader stage, containing the state and resulting source code for the stage.
Definition: ShaderStage.h:124
A type descriptor for MaterialX data types.
Definition: TypeDesc.h:29