|
Katana Plug-in APIs 0.1
|
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
1.7.3