Katana Plug-in APIs 0.1

FnRenderOutputUtils.h

00001 // Copyright (c) 2013 The Foundry Visionmongers Ltd. All Rights Reserved.
00002 
00003 #ifndef FNRENDEROUTPUTUTILS_RENDEROUTPUTUTILS_H
00004 #define FNRENDEROUTPUTUTILS_RENDEROUTPUTUTILS_H
00005 #include <set>
00006 #include <string>
00007 #include <vector>
00008 
00009 #include "FnAttribute/FnAttribute.h"
00010 #include "FnPluginSystem/FnPluginSystem.h"
00011 #include "FnScenegraphIterator/FnScenegraphIterator.h"
00012 
00013 #include "FnRenderOutputUtils/CameraInfo.h"
00014 #include "FnRenderOutputUtils/FnRenderOutputUtilsAPI.h"
00015 #include "FnRenderOutputUtils/ShadingNodeConnectionDescription.h"
00016 #include "FnRenderOutputUtils/ShadingNodeDescription.h"
00017 #include "FnRenderOutputUtils/ShadingNodeDescriptionMap.h"
00018 #include "FnRenderOutputUtils/XFormMatrix.h"
00019 #include "FnRenderOutputUtils/ns.h"
00020 
00021 FNRENDEROUTPUTUTILS_NAMESPACE_ENTER
00022 {
00031 namespace RenderOutputUtils
00032 {
00036     enum ProceduralArgsType
00037     {
00038         kProceduralArgsType_Classic,
00039         kProceduralArgsType_ScenegraphAttr
00040     };
00041 
00046     struct FNRENDEROUTPUTUTILS_API ProceduralOutputContextInfo
00047     {
00048         int   _frameNumber;
00049         float _shutterOpen;
00050         float _shutterClose;
00051         float _cropWindowXMin;
00052         float _cropWindowXMax;
00053         float _cropWindowYMin;
00054         float _cropWindowYMax;
00055         int   _xres;
00056         int   _yres;
00057 
00058         ProceduralOutputContextInfo()
00059         : _frameNumber(1)
00060         , _shutterOpen(0)
00061         , _shutterClose(0)
00062         , _cropWindowXMin(0)
00063         , _cropWindowXMax(1)
00064         , _cropWindowYMin(0)
00065         , _cropWindowYMax(1)
00066         , _xres(0)
00067         , _yres(0)
00068         {}
00069     };
00070 
00074     FNRENDEROUTPUTUTILS_API std::string buildProceduralArgsString(FnScenegraphIterator sgIterator,
00075                                                                ProceduralArgsType type,
00076                                                                const std::string& argsAttrName,
00077                                                                const ProceduralOutputContextInfo& contextInfo);
00078 
00083     FNRENDEROUTPUTUTILS_API void flushProceduralDsoCaches(const std::string& apiName="");
00084 
00089     FNRENDEROUTPUTUTILS_API int getPixelAreaThroughCamera(FnScenegraphIterator sgIterator,
00090                                                        const std::string& cameraName,
00091                                                        const std::string& resolution);
00092 
00097     FNRENDEROUTPUTUTILS_API void findSampleTimesRelevantToShutterRange(std::vector<float>& sampleTimes,
00098                                                                     const std::set<float>& inputSamples,
00099                                                                     float shutterOpen,
00100                                                                     float shutterClose);
00101 
00106     FNRENDEROUTPUTUTILS_API std::string getRenderResolution(FnScenegraphIterator rootIterator,
00107                                                          int *width,
00108                                                          int *height);
00109 
00114     FNRENDEROUTPUTUTILS_API std::string getCameraPath(FnScenegraphIterator rootIterator);
00115 
00116     typedef std::vector<float>                    TransformData;
00117     typedef std::pair<std::string, TransformData> TransformPair;
00118     typedef std::vector<TransformPair>            TransformList;
00119 
00124     struct Transform
00125     {
00126         TransformList transformList;    
00127         std::vector<float> sampleTimes; 
00128     };
00129 
00134     FNRENDEROUTPUTUTILS_API void fillXFormListForLocation(std::vector<Transform>& xFormList,
00135                                                        FnScenegraphIterator sgIterator,
00136                                                        float shutterClose = 0.0f);
00137 
00142     FNRENDEROUTPUTUTILS_API bool fillXFormListFromAttributes(std::vector<Transform>& xFormList,
00143                                                           const FnAttribute::GroupAttribute& xformAttr,
00144                                                           float shutterClose = 0.0f,
00145                                                           bool invertMatrix = true);
00146 
00151     FNRENDEROUTPUTUTILS_API FnAttribute::GroupAttribute convertTexturesToArbitraryAttr(const FnAttribute::GroupAttribute& texturesAttr);
00152 
00153 
00154     FNRENDEROUTPUTUTILS_API std::string getArchString();
00155     FNRENDEROUTPUTUTILS_API std::string expandArchPath(const std::string& path);
00156 
00161     FNRENDEROUTPUTUTILS_API FnAttribute::GroupAttribute getFlattenedMaterialAttr(FnScenegraphIterator sgIterator,
00162                                                                               const FnAttribute::StringAttribute& terminalNamesAttr);
00163 
00168     FNRENDEROUTPUTUTILS_API void emptyFlattenedMaterialCache();
00169 
00174     FNRENDEROUTPUTUTILS_API CameraInfo getCameraInfo(FnScenegraphIterator sgIterator,
00175                                                   const std::string& cameraInfoPath);
00176 
00177     FNRENDEROUTPUTUTILS_API FnPlugStatus setHost(FnPluginHost* host);
00178     FNRENDEROUTPUTUTILS_API FnPluginHost *getHost();
00179 
00196     FNRENDEROUTPUTUTILS_API bool processLocation(FnScenegraphIterator sgIterator,
00197                                               const std::string& rendererName,
00198                                               const std::string& locationName,
00199                                               void* optionalInput,
00200                                               void** optionalOutput);
00201 
00217     FNRENDEROUTPUTUTILS_API void fillDelegateHandledLocationTypesList(std::vector<std::string>& delegateHandledLocationTypesList,
00218                                                                    const std::string& renderer = std::string());
00219 
00236     FNRENDEROUTPUTUTILS_API std::string buildTempRenderLocation(FnScenegraphIterator sgIterator,
00237                                                              const std::string& outputName,
00238                                                              const std::string& prefix,
00239                                                              const std::string& fileExtension,
00240                                                              const float frameTime);
00241 
00254     FNRENDEROUTPUTUTILS_API std::string buildTileLocation(FnScenegraphIterator sgIterator,
00255                                                        const std::string& outputPath);
00256 
00257     extern RenderOutputUtilsSuite_v3* _suite ;
00258 
00259     }  // namespace RenderOutputUtils
00263 }
00264 FNRENDEROUTPUTUTILS_NAMESPACE_EXIT
00265 
00266 #endif
 All Classes Functions Variables Typedefs Enumerations Enumerator