RenderManAPI  24.0
RixPattern.h
Go to the documentation of this file.
1 /*
2 # ------------------------------------------------------------------------------
3 #
4 # Copyright (c) 2020 Pixar. All rights reserved.
5 #
6 # The information in this file (the "Software") is provided for the exclusive
7 # use of the software licensees of Pixar ("Licensees"). Licensees have the
8 # right to incorporate the Software into other products for use by other
9 # authorized software licensees of Pixar, without fee. Except as expressly
10 # permitted herein, the Software may not be disclosed to third parties, copied
11 # or duplicated in any form, in whole or in part, without the prior written
12 # permission of Pixar.
13 #
14 # The copyright notices in the Software and this entire statement, including the
15 # above license grant, this restriction and the following disclaimer, must be
16 # included in all copies of the Software, in whole or in part, and all permitted
17 # derivative works of the Software, unless such copies or derivative works are
18 # solely in the form of machine-executable object code generated by a source
19 # language processor.
20 #
21 # PIXAR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
22 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL PIXAR BE
23 # LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
24 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
25 # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
26 # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. IN NO CASE WILL
27 # PIXAR'S TOTAL LIABILITY FOR ALL DAMAGES ARISING OUT OF OR IN CONNECTION WITH
28 # THE USE OR PERFORMANCE OF THIS SOFTWARE EXCEED $50.
29 #
30 # Pixar
31 # 1200 Park Ave
32 # Emeryville CA 94608
33 #
34 # ------------------------------------------------------------------------------
35 */
36 
37 #ifndef RixPattern_h
38 #define RixPattern_h
39 
40 #include <cstddef> // for NULL
41 #include "RixShading.h" // for RixSCParamInfo (ptr only), etc
42 #include "prmanapi.h" // for PRMANEXPORT
43 #include "RiTypesHelper.h" // for RtUString, etc
44 #include "ndspy.h" // for UserParameter
45 
46 class RixBakeContext;
47 
58 {
59 public:
60  int GetInterface() const override { return k_RixPattern; }
61 
62  struct OutputSpec
63  {
64  int paramId;
66  void const* value;
67  };
68 
76  virtual int ComputeOutputParams(
77  RixShadingContext const* sCtx,
78  int* numOutputs,
79  OutputSpec** outputs,
80  void* instanceData,
81  RixSCParamInfo const* instanceTable) = 0;
82 
84  struct Bake2dSpec
85  {
86  Bake2dSpec(int _uTile, int _vTile, int _paramId) :
87  uTile(_uTile), vTile(_vTile), paramId(_paramId) {}
88  int const uTile;
89  int const vTile;
90  int const paramId;
95  bool vInvert;
96  bool atlas;
97  int resolution[2];
100  };
101 
114  virtual bool Bake2dOutput(
115  RixBakeContext const* bCtx,
116  Bake2dSpec& output,
117  void* instanceData) = 0;
118 
120  struct Bake3dSpec
121  {
122  Bake3dSpec(int _paramId) : paramId(_paramId) {}
123  int const paramId;
127  float maxDistance;
129  bool interpolate;
132  };
133 
143  virtual bool Bake3dOutput(
144  RixBakeContext const* bCtx,
145  Bake3dSpec& output,
146  void* instanceData) = 0;
147 
148 protected:
150  virtual ~RixPattern() {}
151 };
152 
153 #define RIX_PATTERNCREATE \
154  extern "C" PRMANEXPORT RixPattern* CreateRixPattern(const char* hint)
155 
156 #define RIX_PATTERNDESTROY \
157  extern "C" PRMANEXPORT void DestroyRixPattern(RixPattern* pattern)
158 
164 {
165 public:
167  virtual void* Allocate(size_t size) const = 0;
168 
169 protected:
171  ~RixBakeContext() override {}
172 };
173 
174 #endif
RixShadingContext is analogous to a RenderMan grid - it is a group of 1 or more points that may be sh...
Definition: RixShading.h:663
Output specification for 3d baking.
Definition: RixPattern.h:120
RixBakeContext()
Definition: RixPattern.h:170
bool interpolate
Interpolate output points. Default is false.
Definition: RixPattern.h:129
virtual ~RixPattern()
Definition: RixPattern.h:150
#define k_RixShadingVersion
Definition: RixShading.h:97
Rix interfaces are obtained from an RixContext.
Definition: RixInterfaces.h:172
void const * value
output values
Definition: RixPattern.h:66
RixShadingPlugin is the base class for RixBxdfFactory, RixDisplacementFactory, RixDisplayFilter, RixIntegrator, RixLightFilter, RixLightFactory, RixPattern, RixProjection, and RixSampleFilter.
Definition: RixShading.h:168
RixSCParamInfo captures the characteristics of an individual ScParam.
Definition: RixShading.h:512
RixSCDetail detail
output detail may be determined by inputs
Definition: RixPattern.h:65
RtUString display
Display driver name, e.g. openexr, tiff.
Definition: RixPattern.h:93
Definition: ndspy.h:343
RtUString display
Display driver name, e.g. pointcloud.
Definition: RixPattern.h:126
RixSCDetail
RixSCDetail enumerates the valid sizing qualifiers for SC parameters.
Definition: RixShading.h:432
RtUString primVar[2]
2d texture coord, either a joined float[2] primvar or two separate floats. Default is st...
Definition: RixPattern.h:94
int displayParamCount
Number of display parameters.
Definition: RixPattern.h:98
int const paramId
Constant paramId index.
Definition: RixPattern.h:123
Definition: RixShading.h:112
The RixBakeContext is used to query information about the context of the bake node in a networked sha...
Definition: RixPattern.h:163
float maxDistance
Worldspace baking distance. Smaller values bake more points.
Definition: RixPattern.h:127
RixPattern()
Definition: RixPattern.h:149
virtual bool Bake2dOutput(RixBakeContext const *bCtx, Bake2dSpec &output, void *instanceData)=0
This method is called when baking for every pattern parameter.
RtUString filename
Output filename.
Definition: RixPattern.h:92
int GetInterface() const override
Definition: RixPattern.h:60
virtual void * Allocate(size_t size) const =0
Allocate space for the duration of a bake node evaluation.
Bake3dSpec(int _paramId)
Definition: RixPattern.h:122
virtual int ComputeOutputParams(RixShadingContext const *sCtx, int *numOutputs, OutputSpec **outputs, void *instanceData, RixSCParamInfo const *instanceTable)=0
Patterns are expected to allocate space for OutputSpec array and buffers for all output values via Ri...
UserParameter * displayParam
User specified display parameters.
Definition: RixPattern.h:131
int displayParamCount
Number of display parameters.
Definition: RixPattern.h:130
int paramId
into param table
Definition: RixPattern.h:64
virtual bool Bake3dOutput(RixBakeContext const *bCtx, Bake3dSpec &output, void *instanceData)=0
This method is called when baking for every pattern parameter.
RixSCType dataType
Output data type. Default is that of the output parameter.
Definition: RixPattern.h:91
Output specification for 2d baking.
Definition: RixPattern.h:84
~RixBakeContext() override
Definition: RixPattern.h:171
The RixPattern interface characterizes pattern generation for the purposes of RixBxdf parameterizatio...
Definition: RixPattern.h:57
RixSCType
RixSCType enumerates the valid atomic datatypes.
Definition: RixShading.h:349
Bake2dSpec(int _uTile, int _vTile, int _paramId)
Definition: RixPattern.h:86
UserParameter * displayParam
User specified display parameters.
Definition: RixPattern.h:99
int const uTile
Constant u-tile index, base 0.
Definition: RixPattern.h:88
RtUString coordsys
Baking coordinate space. Default is object.
Definition: RixPattern.h:128
bool atlas
Bake multi-tile output such as UDIM. Default is false.
Definition: RixPattern.h:96
RixSCType dataType
Output data type. Default is that of the output parameter.
Definition: RixPattern.h:124
bool vInvert
Invert v coords when baking. Default is false.
Definition: RixPattern.h:95
int const vTile
Constant v-tile index, base 0.
Definition: RixPattern.h:89
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
int resolution[2]
Output file resolution. Default is 512x512.
Definition: RixPattern.h:97
RtUString filename
Output filename.
Definition: RixPattern.h:125
Definition: RixPattern.h:62
int const paramId
Constant paramId index.
Definition: RixPattern.h:90