aboutsummaryrefslogtreecommitdiff
path: root/mayaPlug/shaveMayaRenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'mayaPlug/shaveMayaRenderer.h')
-rw-r--r--mayaPlug/shaveMayaRenderer.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/mayaPlug/shaveMayaRenderer.h b/mayaPlug/shaveMayaRenderer.h
new file mode 100644
index 0000000..a4eba01
--- /dev/null
+++ b/mayaPlug/shaveMayaRenderer.h
@@ -0,0 +1,71 @@
+#ifndef shaveMayaRenderer_h
+#define shaveMayaRenderer_h
+
+// Shave and a Haircut
+// (c) 2019 Epic Games
+// US Patent 6720962
+
+#include "shaveConstant.h"
+#include "shaveRenderCallback.h"
+#include "shaveRenderer.h"
+
+class shaveHairShape;
+
+
+class shaveMayaRenderer : public shaveRenderer
+{
+public:
+ shaveMayaRenderer();
+ virtual ~shaveMayaRenderer();
+
+ virtual void frameEnd(const shaveGlobals::Globals& g);
+ virtual void frameStart(const shaveGlobals::Globals& g);
+ virtual float getPixelAspect() const;
+
+ virtual shaveConstant::RenderMode
+ getBaseRenderMode(bool* renderInstances = NULL) const;
+
+ virtual bool isGeomNode(const shaveHairShape* nodePtr) const;
+ virtual bool needVertexColours() const;
+ virtual void postCompositeCleanup();
+
+ virtual void render(
+ float frame,
+ shaveConstant::ShutterState shutter,
+ const MDagPath& camera
+ );
+
+ virtual void renderEnd();
+ virtual void renderInterrupted();
+ virtual void renderStart();
+ virtual void timeChange(const MTime& newTime);
+
+
+//************************************************
+//
+// Helper Methods
+//
+//************************************************
+
+protected:
+ void setupShadowShaders();
+
+
+private:
+ enum TimeState
+ {
+ kAwaitingNothing,
+ kAwaitingShutterOpen,
+ kAwaitingCenterFrame,
+ kAwaitingShutterClose
+ };
+
+ bool mHaveVolumeShader;
+ shaveRenderCallback* mRenderCallback;
+ MString mRenderCamera;
+ TimeState mTimeState;
+ mutable bool mWarningGivenUnsupportedHairMode;
+ mutable bool mWarningGivenUnsupportedInstanceMode;
+};
+
+#endif