RenderManAPI  24.0
RixDisplacement.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 RixDisplacement_h
38 #define RixDisplacement_h
39 
40 #include "RixShading.h" // for RixShadingPlugin
41 #include "RiTypesHelper.h" // for RtPoint3, etc.
42 
43 class RixDisplacement;
44 
46 {
47 public:
48  int GetInterface() const override { return k_RixDisplacementFactory; }
49 
51  RixShadingContext const*,
53  void* instanceData) = 0;
54 
55  virtual void EndDisplacement(class RixDisplacement* disp) = 0;
56 
57 protected:
60 };
61 
63 {
64 public:
66  : shadingCtx(sCtx), displacementFactory(fact)
67  {
68  }
69 
70  virtual ~RixDisplacement() {}
71 
72  virtual bool GetDisplacement(RtPoint3* P) = 0;
73 
74  RixShadingContext const* GetShadingCtx() const { return shadingCtx; }
75 
77  {
78  return displacementFactory;
79  }
80 
86  virtual void Release()
87  {
90  }
91 
92 protected:
95 };
96 
97 // clang-format off
98 #define RIX_DISPLACEMENTCREATE \
99  extern "C" PRMANEXPORT RixDisplacementFactory* CreateRixDisplacementFactory(const char* hint)
100 
101 #define RIX_DISPLACEMENTDESTROY \
102  extern "C" PRMANEXPORT void DestroyRixDisplacementFactory(RixDisplacementFactory* bxdf)
103 // clang-format on
104 
105 #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
#define k_RixShadingVersion
Definition: RixShading.h:97
virtual ~RixDisplacement()
Definition: RixDisplacement.h:70
RixShadingPlugin is the base class for RixBxdfFactory, RixDisplacementFactory, RixDisplayFilter, RixIntegrator, RixLightFilter, RixLightFactory, RixPattern, RixProjection, and RixSampleFilter.
Definition: RixShading.h:168
Definition: RixDisplacement.h:45
RtFloat3 RtPoint3
Definition: RiTypesHelper.h:70
int GetInterface() const override
Definition: RixDisplacement.h:48
RixShadingContext const * GetShadingCtx() const
Definition: RixDisplacement.h:74
Definition: RixShading.h:118
RixSCShadingMode
RixSCShadingMode conveys the current operating mode associated with the shading context.
Definition: RixShading.h:553
RixDisplacementFactory()
Definition: RixDisplacement.h:58
RixShadingContext const * shadingCtx
Definition: RixDisplacement.h:93
RixDisplacement(RixShadingContext const *sCtx, RixDisplacementFactory *fact)
Definition: RixDisplacement.h:65
virtual void Release()
Release does any cleanup that might be needed (often none and the base implementation is fine) and th...
Definition: RixDisplacement.h:86
RixDisplacementFactory * displacementFactory
Definition: RixDisplacement.h:94
virtual RixDisplacement * BeginDisplacement(RixShadingContext const *, RixSCShadingMode, void *instanceData)=0
virtual void EndDisplacement(class RixDisplacement *disp)=0
virtual bool GetDisplacement(RtPoint3 *P)=0
Definition: RixDisplacement.h:62
~RixDisplacementFactory() override
Definition: RixDisplacement.h:59
RixDisplacementFactory * GetDisplacementFactory() const
Definition: RixDisplacement.h:76