#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