1 //****************************************************************************** 2 /// 3 /// @file povms/povmsid.h 4 /// 5 /// This module contains all defines, typedefs, and prototypes for the POVMS 6 /// interface. 7 /// 8 /// @copyright 9 /// @parblock 10 /// 11 /// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8. 12 /// Copyright 1991-2018 Persistence of Vision Raytracer Pty. Ltd. 13 /// 14 /// POV-Ray is free software: you can redistribute it and/or modify 15 /// it under the terms of the GNU Affero General Public License as 16 /// published by the Free Software Foundation, either version 3 of the 17 /// License, or (at your option) any later version. 18 /// 19 /// POV-Ray is distributed in the hope that it will be useful, 20 /// but WITHOUT ANY WARRANTY; without even the implied warranty of 21 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 /// GNU Affero General Public License for more details. 23 /// 24 /// You should have received a copy of the GNU Affero General Public License 25 /// along with this program. If not, see <http://www.gnu.org/licenses/>. 26 /// 27 /// ---------------------------------------------------------------------------- 28 /// 29 /// POV-Ray is based on the popular DKB raytracer version 2.12. 30 /// DKBTrace was originally written by David K. Buck. 31 /// DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins. 32 /// 33 /// @endparblock 34 /// 35 //****************************************************************************** 36 37 #ifndef POVMSID_H 38 #define POVMSID_H 39 40 /* 41 * The following instructions are an example of how to add a POVMS option 42 * to POV-Ray, e.g. a new command-line switch or whatever. In this case we 43 * are discussing the best way to add the Render_Block_Size option; you 44 * should be able to extrapolate from this to whatever it is you intend doing. 45 * 46 * Take a look at frontend/processrenderoptions.cpp, i.e. Final_Frame in the 47 * RenderOptions_INI_Table table. As you see, apart from a name, you need a 48 * enum for POVMS. Those are in povms/povmsid.h . Please note that the Enums 49 * follow a strict convention there to allow easily tracing back a four 50 * character code to the variable. The block size is part of the view/rendered, 51 * so it goes into the section marked with the comment "// options handled by 52 * view/renderer". As you notice, options are groups by functions and separated 53 * by a blank line. Thread specs are a new option, so a new group would be 54 * appropriate (just add it at the end of that section). 55 * 56 * Now to the naming: The four characters are the initial characters of each 57 * word in the variable. However, Sometimes that isn't enough, so the rule is 58 * to use the initial characters except for the last word if there are less 59 * than four characters so far, the second and third characters of the last 60 * word are used as well, and those are lower case, for example: 61 * 62 * kPOVAttrib_DebugConsole -> Debug CONsole -> DCon 63 * 64 * However, sometimes this does not yield a valid difference, for example: 65 * 66 * kPOVAttrib_PreSceneCommand -> Pre Scene COmmand -> PSCo 67 * kPOVAttrib_PostSceneCommand -> Post Scene COmmand -> PSCo 68 * 69 * So the rule then goes that the word that makes a difference is expanded, so 70 * the "Post" and "Pre", which yields: 71 * 72 * kPOVAttrib_PreSceneCommand -> PRe Scene Command -> PrSC 73 * kPOVAttrib_PostSceneCommand -> POst Scene Command -> PoSC 74 * 75 * However, there are exptions to this rule as well because the names on the 76 * kPOVAttrib_xxx enums folow those in the INI file, which are not always 77 * consistent. Hence, for example there would be: 78 * 79 * kPOVAttrib_SamplingMethod -> Sampling METhod -> SMet 80 * 81 * BUT, this is an anit-aliasing option, just without a prepended AnitAliasing 82 * in the kPOVAttrib_xxx name (because it follows the option name). Thus, here 83 * the rule is to implicitly prepend the AnitAliasing, yielding: 84 * 85 * kPOVAttrib_SamplingMethod -> (Anti Aliasing) Sampling Method -> AASM 86 * 87 * Then there is yet another rule for files: They should be written with an 88 * implied "Name" at the end, i.e.: 89 * 90 * kPOVAttrib_DebugFile -> Debug File (NAme) -> DFNa 91 * 92 * The implied "Name" at the end is more for historic reasons, but as it is 93 * used throughout, it should be kept as is ;-) 94 * 95 * So, now that you know how to define it, make sure you select a useful name, 96 * i.e. "RenderBlockSize" in the INI option, so you would get "RBSi" for the 97 * four character code and an easy to read INI file. 98 * 99 * After this, also decide if you want an command-line option. Look at the 100 * RenderOptions_Cmd_Table table in frontend/processrenderoptions.cpp. Be 101 * aware that the order has to be alphabethical in that table, and with the 102 * shortest multicharacter option at the end. That is, for example the order 103 * is "KFF", "KFI", "KF", "K", ***NOT*** "K", "KF", "KFF", "KFI". The reason 104 * is really simple: The command-line parser picks the first match as that 105 * makes it easier to implement (no look-ahead). 106 * 107 * For each of the two tables, the second column defines the POVMS name and the 108 * third the POVMS type. There is the additional "kUseSpecialHandler" to 109 * support special handling of options - that is, parsing more complex options 110 * which commonly yield more than one POVMS attribute or different attributes. 111 * 112 * For the command-line argument table there is a fourth column. It provides 113 * an optional binary POVMS attribute to set depending on the switch, i.e. "-" 114 * sets it to "false" while a "+" and "/" set it to "true". I.e. the "UA" 115 * command-line option just works via the +/- and doesn't have an argument. 116 * 117 * NOTE: The default is not stored in the table at all, that is completely 118 * inside the core code. That is, if the option isn't specified, it just 119 * doesn't have a value. 120 * 121 * The parsers will automatically handle POVMS types kPOVMSType_Float, 122 * kPOVMSType_Int, kPOVMSType_CString and kPOVMSType_Bool and set POVMS 123 * attributes accordingly. 124 * 125 * So once you added the entries to one or both of the tables, the INI and 126 * command-line parser can handle the option. 127 */ 128 129 /***************************************************************************** 130 * NOTE: If you do not understand the code below, stay away! If your compiler 131 * warns you about the code below, your compiler warning configuration is 132 * incorrect. Turn off that warning! Do not, ever, mess with the code below to 133 * just please your compiler. Do not, ever, complain to the POV-Team about the 134 * code below! Just stay away from this code, please!!! 135 * RATIONALE: If you do understand the code below and are concerned about 136 * portability, please direct your attention to the file povms.cpp. There are 137 * several methods there that do determine the byteorder at runtime. Please 138 * refer to POVMSStream_Init, POVMSStream_ReadType and POVMSStream_WriteType 139 * in that file for details. If you have a failure of those functions to 140 * report, please include as many details about your platform and compiler 141 * as possible! 142 ******************************************************************************/ 143 144 // POV-Ray Object Classes 145 enum 146 { 147 kPOVObjectClass_Rectangle = 'Rect', 148 kPOVObjectClass_ElapsedTime = 'ETim', 149 150 kPOVObjectClass_IsectStat = 'ISta', 151 kPOVObjectClass_SceneCamera = 'SCam', 152 153 kPOVObjectClass_ShellCommand = 'SCmd', 154 kPOVObjectClass_IniOptions = 'IniO', 155 kPOVObjectClass_FrontendOptions = 'FOpt', 156 157 kPOVObjectClass_AnimationOptions = 'AOpt', 158 kPOVObjectClass_OutputOptions = 'OOpt', 159 kPOVObjectClass_ParserOptions = 'POpt', 160 kPOVObjectClass_RenderOptions = 'ROpt', 161 kPOVObjectClass_ParserStatistics = 'PSta', 162 kPOVObjectClass_RenderStatistics = 'RSta', 163 164 kPOVObjectClass_PlatformData = 'PlaD', 165 kPOVObjectClass_ControlData = 'CtrD', 166 kPOVObjectClass_ResultData = 'ResD', 167 kPOVObjectClass_PixelData = 'PixD', 168 kPOVObjectClass_FileData = 'FilD', 169 170 kPOVObjectClass_ParserProgress = 'ParP', 171 kPOVObjectClass_BoundingProgress = 'BouP', 172 kPOVObjectClass_PhotonProgress = 'PhoP', 173 kPOVObjectClass_RadiosityProgress = 'RadP', 174 kPOVObjectClass_RenderProgress = 'RenP', 175 }; 176 177 // POV-Ray Message Classes 178 enum 179 { 180 kPOVMsgClass_BackendControl = 'BCtr', 181 kPOVMsgClass_SceneControl = 'SCtr', 182 kPOVMsgClass_ViewControl = 'VCtr', 183 kPOVMsgClass_SceneOutput = 'SOut', 184 kPOVMsgClass_ViewOutput = 'VOut', 185 kPOVMsgClass_ViewImage = 'VImg', 186 kPOVMsgClass_FileAccess = 'FAcc', 187 }; 188 189 // POV-Ray Message Identifiers 190 enum 191 { 192 // BackendControl 193 kPOVMsgIdent_InitInfo = 'Info', 194 195 kPOVMsgIdent_CreateScene = 'CreS', 196 kPOVMsgIdent_CloseScene = 'CloS', 197 198 // SceneControl 199 kPOVMsgIdent_CreateView = 'CreV', 200 kPOVMsgIdent_CloseView = 'CloV', 201 202 kPOVMsgIdent_StartParser = 'StaP', 203 kPOVMsgIdent_StopParser = 'StpP', 204 kPOVMsgIdent_PauseParser = 'PauP', 205 kPOVMsgIdent_ResumeParser = 'ResP', 206 207 // SceneOutput 208 kPOVMsgIdent_ParserStatistics = 'PSta', 209 210 // ViewControl 211 kPOVMsgIdent_StartRender = 'StaR', 212 kPOVMsgIdent_StopRender = 'StpR', 213 kPOVMsgIdent_PauseRender = 'PauR', 214 kPOVMsgIdent_ResumeRender = 'ResR', 215 216 // ViewOutput 217 kPOVMsgIdent_RenderStatistics = 'RSta', 218 219 // ViewImage 220 kPOVMsgIdent_PixelSet = 'PxSe', 221 kPOVMsgIdent_PixelBlockSet = 'PxBS', 222 kPOVMsgIdent_PixelRowSet = 'RxRS', 223 kPOVMsgIdent_RectangleFrameSet = 'ReFS', 224 kPOVMsgIdent_FilledRectangleSet = 'FiRS', 225 226 // SceneOutput, ViewOutput 227 kPOVMsgIdent_Warning = 'Warn', 228 kPOVMsgIdent_Error = 'ErrW', 229 kPOVMsgIdent_FatalError = 'ErrF', 230 kPOVMsgIdent_Debug = 'Dbug', 231 232 kPOVMsgIdent_Progress = 'Prog', 233 234 // FileAccess 235 kPOVMsgIdent_FindFile = 'FinF', 236 kPOVMsgIdent_ReadFile = 'ReaF', 237 kPOVMsgIdent_CreatedFile = 'CreF', 238 239 // all 240 kPOVMsgIdent_Done = 'Done', 241 kPOVMsgIdent_Failed = 'Fail', 242 243 // shell command 244 kPOVMsgIdent_CmdPreParse = 'CPrP', 245 kPOVMsgIdent_CmdPostParse = 'CPoP', 246 kPOVMsgIdent_CmdPreRender = 'CPrR', 247 kPOVMsgIdent_CmdPostRender = 'CPoR', 248 kPOVMsgIdent_CmdError = 'CErr', 249 kPOVMsgIdent_CmdAbort = 'CAbo', 250 251 // other 252 kPOVMsgIdent_ParserOptions = 'POpt', 253 kPOVMsgIdent_RenderOptions = 'ROpt', 254 }; 255 256 // POV-Ray Message Attributes 257 enum 258 { 259 kPOVAttrib_ErrorNumber = 'ErrN', 260 261 kPOVAttrib_SceneId = 'ScId', 262 kPOVAttrib_ViewId = 'ViId', 263 264 kPOVAttrib_PlatformData = 'PlaD', 265 kPOVAttrib_MaxRenderThreads = 'MRTh', 266 kPOVAttrib_SceneCamera = 'SCam', 267 268 // universal use 269 kPOVAttrib_EnglishText = 'ETxt', 270 271 // FileAccess 272 kPOVAttrib_ReadFile = 'RFil', 273 kPOVAttrib_LocalFile = 'LFil', 274 kPOVAttrib_FileURL = 'FURL', 275 kPOVAttrib_CreatedFile = 'CFil', 276 277 // backend init 278 kPOVAttrib_CoreVersion = 'Core', 279 kPOVAttrib_CoreGeneration = 'CorG', 280 kPOVAttrib_PlatformName = 'Plat', 281 kPOVAttrib_Official = 'Offi', 282 kPOVAttrib_PrimaryDevs = 'Prim', 283 kPOVAttrib_AssistingDevs = 'Asst', 284 kPOVAttrib_ContributingDevs = 'Cont', 285 kPOVAttrib_ImageLibVersions = 'ILVe', 286 kPOVAttrib_Optimizations = 'Opti', 287 kPOVAttrib_CPUInfo = 'CPUI', 288 kPOVAttrib_CPUInfoDetails = 'CPUD', 289 290 // options handled by frontend 291 kPOVAttrib_TestAbort = 'TstA', // currently not supported by code 292 kPOVAttrib_TestAbortCount = 'TsAC', // currently not supported by code 293 kPOVAttrib_PauseWhenDone = 'PWDo', 294 295 kPOVAttrib_ContinueTrace = 'ConT', 296 kPOVAttrib_BackupTrace = 'BacT', 297 298 kPOVAttrib_Verbose = 'Verb', 299 kPOVAttrib_DebugConsole = 'DCon', 300 kPOVAttrib_FatalConsole = 'FCon', 301 kPOVAttrib_RenderConsole = 'RCon', 302 kPOVAttrib_StatisticsConsole = 'SCon', 303 kPOVAttrib_WarningConsole = 'WCon', 304 kPOVAttrib_AllConsole = 'ACon', 305 kPOVAttrib_DebugFile = 'DFNa', 306 kPOVAttrib_FatalFile = 'FFNa', 307 kPOVAttrib_RenderFile = 'RFNa', 308 kPOVAttrib_StatisticsFile = 'SFNa', 309 kPOVAttrib_WarningFile = 'WFNa', 310 kPOVAttrib_AllFile = 'AFNa', 311 kPOVAttrib_AppendConsoleFiles = 'ACFi', 312 313 kPOVAttrib_Display = 'Disp', 314 kPOVAttrib_VideoMode = 'VMod', // currently not supported by code 315 kPOVAttrib_Palette = 'Palt', // currently not supported by code 316 kPOVAttrib_DisplayGamma = 'DGam', 317 kPOVAttrib_DisplayGammaType = 'DGaT', 318 kPOVAttrib_FileGamma = 'FGam', 319 kPOVAttrib_FileGammaType = 'FGaT', 320 kPOVAttrib_LegacyGammaMode = 'LGaM', 321 kPOVAttrib_WorkingGammaType = 'WGaT', 322 kPOVAttrib_WorkingGamma = 'WGam', 323 kPOVAttrib_ViewingGamma = 'VGam', 324 kPOVAttrib_DitherMethod = 'DitM', 325 kPOVAttrib_Dither = 'Dith', 326 327 kPOVAttrib_InitialFrame = 'IFrm', 328 kPOVAttrib_FinalFrame = 'FFrm', 329 kPOVAttrib_InitialClock = 'IClk', 330 kPOVAttrib_FinalClock = 'FClk', 331 kPOVAttrib_SubsetStartFrame = 'SStF', 332 kPOVAttrib_SubsetEndFrame = 'SEnF', 333 kPOVAttrib_CyclicAnimation = 'CylA', 334 kPOVAttrib_FieldRender = 'FldR', // currently not supported by code 335 kPOVAttrib_OddField = 'OddF', // currently not supported by code 336 kPOVAttrib_FrameStep = 'FStp', 337 338 kPOVAttrib_OutputToFile = 'OToF', 339 kPOVAttrib_OutputFileType = 'OFTy', 340 kPOVAttrib_OutputAlpha = 'OAlp', 341 kPOVAttrib_BitsPerColor = 'BPCo', 342 kPOVAttrib_GrayscaleOutput = 'GOut', 343 kPOVAttrib_OutputFile = 'OFNa', 344 kPOVAttrib_OutputPath = 'OPat', 345 kPOVAttrib_Compression = 'OFCo', 346 347 kPOVAttrib_HistogramFileType = 'HFTy', // currently not supported by code 348 kPOVAttrib_HistogramFile = 'HFNa', // currently not supported by code 349 kPOVAttrib_HistogramGridSizeX = 'HGSX', // currently not supported by code 350 kPOVAttrib_HistogramGridSizeY = 'HGSY', // currently not supported by code 351 352 kPOVAttrib_PreSceneCommand = 'PrSC', 353 kPOVAttrib_PreFrameCommand = 'PrFC', 354 kPOVAttrib_PostSceneCommand = 'PoSc', 355 kPOVAttrib_PostFrameCommand = 'PoFC', 356 kPOVAttrib_UserAbortCommand = 'UAbC', 357 kPOVAttrib_FatalErrorCommand = 'FErC', 358 kPOVAttrib_CommandString = 'ComS', 359 kPOVAttrib_ReturnAction = 'RAct', 360 361 kPOVAttrib_CreateIni = 'CIni', 362 kPOVAttrib_LibraryPath = 'LibP', 363 kPOVAttrib_IncludeIni = 'IncI', 364 365 // options handled by scene/parser 366 kPOVAttrib_InputFile = 'IFNa', 367 kPOVAttrib_IncludeHeader = 'IncH', 368 369 kPOVAttrib_WarningLevel = 'WLev', 370 kPOVAttrib_Declare = 'Decl', 371 kPOVAttrib_Clock = 'Clck', 372 kPOVAttrib_ClocklessAnimation = 'Ckla', 373 kPOVAttrib_RealTimeRaytracing = 'RTRa', 374 kPOVAttrib_Version = 'Vers', 375 376 // options handled by view/renderer 377 kPOVAttrib_Height = 'Heig', 378 kPOVAttrib_Width = 'Widt', 379 380 kPOVAttrib_Left = 'Left', 381 kPOVAttrib_Top = 'Top ', 382 kPOVAttrib_Right = 'Righ', 383 kPOVAttrib_Bottom = 'Bott', 384 385 kPOVAttrib_Antialias = 'Anti', 386 kPOVAttrib_SamplingMethod = 'AASM', 387 kPOVAttrib_AntialiasThreshold = 'AATh', 388 kPOVAttrib_AntialiasConfidence = 'AACo', 389 kPOVAttrib_AntialiasDepth = 'AADe', 390 kPOVAttrib_Jitter = 'AAJi', 391 kPOVAttrib_JitterAmount = 'AAJA', 392 kPOVAttrib_AntialiasGamma = 'AAGa', 393 kPOVAttrib_AntialiasGammaType = 'AAGT', // currently not supported by code 394 kPOVAttrib_Quality = 'Qual', 395 kPOVAttrib_HighReproducibility = 'HRep', 396 kPOVAttrib_StochasticSeed = 'Seed', 397 398 kPOVAttrib_Bounding = 'Boun', 399 kPOVAttrib_BoundingMethod = 'BdMe', 400 kPOVAttrib_BoundingThreshold = 'BdTh', 401 kPOVAttrib_BSP_MaxDepth = 'BspD', 402 kPOVAttrib_BSP_ISectCost = 'BspI', 403 kPOVAttrib_BSP_BaseAccessCost = 'BspB', 404 kPOVAttrib_BSP_ChildAccessCost = 'BspC', 405 kPOVAttrib_BSP_MissChance = 'BspM', 406 kPOVAttrib_LightBuffer = 'LBuf', // currently not supported by code 407 kPOVAttrib_VistaBuffer = 'VBuf', // currently not supported by code 408 kPOVAttrib_RemoveBounds = 'RmBd', 409 kPOVAttrib_SplitUnions = 'SplU', 410 411 kPOVAttrib_CreateHistogram = 'CHis', // currently not supported by code 412 kPOVAttrib_DrawVistas = 'DrVi', // currently not supported by code 413 414 kPOVAttrib_PreviewStartSize = 'PStS', 415 kPOVAttrib_PreviewEndSize = 'PEnS', 416 417 kPOVAttrib_RadiosityFileName = 'RaFN', 418 kPOVAttrib_RadiosityFromFile = 'RaFF', 419 kPOVAttrib_RadiosityToFile = 'RaTF', 420 kPOVAttrib_RadiosityVainPretrace = 'RaVP', 421 422 kPOVAttrib_RenderBlockSize = 'RBSi', 423 424 kPOVAttrib_MaxImageBufferMem = 'MIBM', // [JG] for file backed image 425 426 kPOVAttrib_CameraIndex = 'CIdx', 427 428 // time statistics generated by frontend 429 kPOVAttrib_TotalTime = 'TotT', 430 kPOVAttrib_FrameTime = 'FTim', 431 kPOVAttrib_AnimationTime = 'ATim', 432 433 // time statistics generated by backend 434 kPOVAttrib_ParseTime = 'ParT', 435 kPOVAttrib_BoundingTime = 'BouT', 436 kPOVAttrib_PhotonTime = 'PhoT', 437 kPOVAttrib_RadiosityTime = 'RadT', 438 kPOVAttrib_TraceTime = 'TraT', 439 440 // statistics generated by frontend 441 kPOVAttrib_CurrentFrame = 'CurF', 442 kPOVAttrib_FrameCount = 'FCnt', 443 kPOVAttrib_AbsoluteCurFrame = 'AbsF', 444 kPOVAttrib_FirstClock = 'FirC', 445 kPOVAttrib_CurrentClock = 'CurC', 446 kPOVAttrib_LastClock = 'LasC', 447 448 // statistics generated by scene/parser 449 kPOVAttrib_FiniteObjects = 'FiOb', 450 kPOVAttrib_InfiniteObjects = 'InOb', 451 kPOVAttrib_LightSources = 'LiSo', 452 kPOVAttrib_Cameras = 'Cama', 453 454 // statistics generated by scene/bounding 455 kPOVAttrib_BSPNodes = 'BNod', 456 kPOVAttrib_BSPSplitNodes = 'BSNo', 457 kPOVAttrib_BSPObjectNodes = 'BONo', 458 kPOVAttrib_BSPEmptyNodes = 'BENo', 459 kPOVAttrib_BSPMaxObjects = 'BMOb', 460 kPOVAttrib_BSPAverageObjects = 'BAOb', 461 kPOVAttrib_BSPMaxDepth = 'BMDe', 462 kPOVAttrib_BSPAverageDepth = 'BADe', 463 kPOVAttrib_BSPAborts = 'BAbo', 464 kPOVAttrib_BSPAverageAborts = 'BAAb', 465 kPOVAttrib_BSPAverageAbortObjects = 'BAAO', 466 467 // statistics generated by view/render (radiosity) 468 kPOVAttrib_RadGatherCount = 'RGCt', 469 kPOVAttrib_RadUnsavedCount = 'RUCo', 470 kPOVAttrib_RadReuseCount = 'RRCt', 471 kPOVAttrib_RadRayCount = 'RYCt', 472 kPOVAttrib_RadTopLevelGatherCount= 'RGCT', 473 kPOVAttrib_RadTopLevelReuseCount = 'RRCT', 474 kPOVAttrib_RadTopLevelRayCount = 'RYCT', 475 kPOVAttrib_RadFinalGatherCount = 'RGCF', 476 kPOVAttrib_RadFinalReuseCount = 'RRCF', 477 kPOVAttrib_RadFinalRayCount = 'RYCF', 478 kPOVAttrib_RadOctreeNodes = 'ROcN', 479 kPOVAttrib_RadOctreeLookups = 'ROcL', 480 kPOVAttrib_RadOctreeAccepts0 = 'ROc0', 481 kPOVAttrib_RadOctreeAccepts1 = 'ROc1', 482 kPOVAttrib_RadOctreeAccepts2 = 'ROc2', 483 kPOVAttrib_RadOctreeAccepts3 = 'ROc3', 484 kPOVAttrib_RadOctreeAccepts4 = 'ROc4', 485 kPOVAttrib_RadOctreeAccepts5 = 'ROc5', 486 // [CLi] per-pass per-recursion sample count statistics 487 // (Note: Do not change the IDs of any of these "just for fun"; at several places they are computed from the first one) 488 kPOVAttrib_RadSamplesP1R0 = 'RS10', 489 kPOVAttrib_RadSamplesP1R1 = 'RS11', 490 kPOVAttrib_RadSamplesP1R2 = 'RS12', 491 kPOVAttrib_RadSamplesP1R3 = 'RS13', 492 kPOVAttrib_RadSamplesP1R4ff = 'RS14', 493 kPOVAttrib_RadSamplesP2R0 = 'RS20', 494 kPOVAttrib_RadSamplesP2R1 = 'RS21', 495 kPOVAttrib_RadSamplesP2R2 = 'RS22', 496 kPOVAttrib_RadSamplesP2R3 = 'RS23', 497 kPOVAttrib_RadSamplesP2R4ff = 'RS24', 498 kPOVAttrib_RadSamplesP3R0 = 'RS30', 499 kPOVAttrib_RadSamplesP3R1 = 'RS31', 500 kPOVAttrib_RadSamplesP3R2 = 'RS32', 501 kPOVAttrib_RadSamplesP3R3 = 'RS33', 502 kPOVAttrib_RadSamplesP3R4ff = 'RS34', 503 kPOVAttrib_RadSamplesP4R0 = 'RS40', 504 kPOVAttrib_RadSamplesP4R1 = 'RS41', 505 kPOVAttrib_RadSamplesP4R2 = 'RS42', 506 kPOVAttrib_RadSamplesP4R3 = 'RS43', 507 kPOVAttrib_RadSamplesP4R4ff = 'RS44', 508 kPOVAttrib_RadSamplesP5ffR0 = 'RS50', 509 kPOVAttrib_RadSamplesP5ffR1 = 'RS51', 510 kPOVAttrib_RadSamplesP5ffR2 = 'RS52', 511 kPOVAttrib_RadSamplesP5ffR3 = 'RS53', 512 kPOVAttrib_RadSamplesP5ffR4ff = 'RS54', 513 kPOVAttrib_RadSamplesFR0 = 'RSF0', 514 kPOVAttrib_RadSamplesFR1 = 'RSF1', 515 kPOVAttrib_RadSamplesFR2 = 'RSF2', 516 kPOVAttrib_RadSamplesFR3 = 'RSF3', 517 kPOVAttrib_RadSamplesFR4ff = 'RSF4', 518 kPOVAttrib_RadWeightR0 = 'RWt0', 519 kPOVAttrib_RadWeightR1 = 'RWt1', 520 kPOVAttrib_RadWeightR2 = 'RWt2', 521 kPOVAttrib_RadWeightR3 = 'RWt3', 522 kPOVAttrib_RadWeightR4ff = 'RWt4', 523 kPOVAttrib_RadQueryCountR0 = 'RQC0', 524 kPOVAttrib_RadQueryCountR1 = 'RQC1', 525 kPOVAttrib_RadQueryCountR2 = 'RQC2', 526 kPOVAttrib_RadQueryCountR3 = 'RQC3', 527 kPOVAttrib_RadQueryCountR4ff = 'RQC4', 528 529 // statistics generated by view/render (photons) 530 kPOVAttrib_TotalPhotonCount = 'TPCn', 531 kPOVAttrib_ObjectPhotonCount = 'OPCn', 532 kPOVAttrib_MediaPhotonCount = 'MPCn', 533 kPOVAttrib_PhotonXSamples = 'PXSa', 534 kPOVAttrib_PhotonYSamples = 'PYSa', 535 kPOVAttrib_PhotonsShot = 'PSho', 536 kPOVAttrib_PhotonsStored = 'PSto', 537 kPOVAttrib_GlobalPhotonsStored = 'GPSt', 538 kPOVAttrib_MediaPhotonsStored = 'MPSt', 539 kPOVAttrib_PhotonsPriQInsert = 'PPQI', 540 kPOVAttrib_PhotonsPriQRemove = 'PPQR', 541 kPOVAttrib_GatherPerformedCnt = 'GPCn', 542 kPOVAttrib_GatherExpandedCnt = 'GECn', 543 544 // render progress and statistics generated by view/render (trace) 545 kPOVAttrib_Pixels = 'Pixe', 546 kPOVAttrib_PixelSamples = 'PixS', 547 kPOVAttrib_SuperSampleCount = 'SSCn', 548 549 // statistics generated by view/render (all) 550 kPOVAttrib_Rays = 'Rays', 551 kPOVAttrib_RaysSaved = 'RSav', 552 553 kPOVAttrib_TraceLevel = 'TLev', 554 kPOVAttrib_MaxTraceLevel = 'MaxL', 555 556 kPOVAttrib_ShadowTest = 'ShdT', 557 kPOVAttrib_ShadowTestSuc = 'ShdS', 558 kPOVAttrib_ShadowCacheHits = 'ShdC', 559 560 kPOVAttrib_PolynomTest = 'PnmT', 561 kPOVAttrib_RootsEliminated = 'REli', 562 563 kPOVAttrib_CallsToNoise = 'CTNo', 564 kPOVAttrib_CallsToDNoise = 'CTDN', 565 566 kPOVAttrib_MediaSamples = 'MeSa', 567 kPOVAttrib_MediaIntervals = 'MeIn', 568 569 kPOVAttrib_ReflectedRays = 'RflR', 570 kPOVAttrib_InnerReflectedRays = 'IReR', 571 kPOVAttrib_RefractedRays = 'RfrT', 572 kPOVAttrib_TransmittedRays = 'TraR', 573 574 kPOVAttrib_IsoFindRoot = 'IFRo', 575 kPOVAttrib_FunctionVMCalls = 'FVMC', 576 kPOVAttrib_FunctionVMInstrEst = 'FVMI', 577 578 kPOVAttrib_CrackleCacheTest = 'CrCT', 579 kPOVAttrib_CrackleCacheTestSuc = 'CrCS', 580 581 kPOVAttrib_ObjectIStats = 'OISt', 582 kPOVAttrib_ISectsTests = 'ITst', 583 kPOVAttrib_ISectsSucceeded = 'ISuc', 584 585 kPOVAttrib_MinAlloc = 'MinA', 586 kPOVAttrib_MaxAlloc = 'MaxA', 587 kPOVAttrib_CallsToAlloc = 'CTAl', 588 kPOVAttrib_CallsToFree = 'CTFr', 589 kPOVAttrib_PeakMemoryUsage = 'PMUs', 590 591 // subject to elimination 592 kPOVAttrib_BoundingQueues = 'BQue', 593 kPOVAttrib_BoundingQueueResets = 'BQRs', 594 kPOVAttrib_BoundingQueueResizes = 'BQRz', 595 kPOVAttrib_IStackOverflow = 'IStO', 596 kPOVAttrib_ObjectName = 'ONam', 597 kPOVAttrib_ObjectID = 'OIde', 598 599 // time statistics and progress reporting 600 kPOVAttrib_RealTime = 'ReaT', 601 kPOVAttrib_CPUTime = 'CPUT', 602 kPOVAttrib_TimeSamples = 'TSam', 603 604 // parser progress 605 kPOVAttrib_CurrentTokenCount = 'CTCo', 606 607 // bounding progress 608 kPOVAttrib_CurrentNodeCount = 'CNCo', 609 610 // photon progress 611 kPOVAttrib_CurrentPhotonCount = 'CPCo', 612 613 // render progress 614 kPOVAttrib_PixelsPending = 'PPen', 615 kPOVAttrib_PixelsCompleted = 'PCom', 616 617 // render pixel data/control 618 kPOVAttrib_PixelId = 'PiId', ///< (Int) ID of render block; only set if rendered to completion. 619 kPOVAttrib_PixelSize = 'PiSi', 620 kPOVAttrib_PixelBlock = 'PBlo', 621 kPOVAttrib_PixelColors = 'PCol', 622 kPOVAttrib_PixelPositions = 'PPos', 623 kPOVAttrib_PixelSkipList = 'PSLi', 624 kPOVAttrib_PixelFinal = 'PFin', ///< (Void) Set if pixel data is relevant for final image. 625 626 // scene/view error reporting and TBD 627 kPOVAttrib_CurrentLine = 'CurL', 628 kPOVAttrib_LineCount = 'LCnt', 629 kPOVAttrib_AbsoluteCurrentLine = 'AbsL', 630 kPOVAttrib_FileName = 'File', 631 kPOVAttrib_State = 'Stat', 632 kPOVAttrib_Warning = 'Warn', 633 kPOVAttrib_Line = 'Line', 634 kPOVAttrib_Column = 'Colu', 635 kPOVAttrib_FilePosition = 'FPos', 636 kPOVAttrib_TokenName = 'TokN', 637 kPOVAttrib_Error = 'Erro', 638 kPOVAttrib_INIFile = 'IFil', 639 kPOVAttrib_RenderOptions = 'ROpt', 640 kPOVAttrib_Identifier = 'Iden', 641 kPOVAttrib_Value = 'Valu', 642 kPOVAttrib_ProgressStatus = 'ProS', 643 kPOVAttrib_MosaicPreviewSize = 'MPSi', 644 645 // Rendering order 646 kPOVAttrib_RenderBlockStep = 'RBSt', 647 kPOVAttrib_RenderPattern = 'RPat', 648 649 // helpers 650 kPOVAttrib_StartColumn = kPOVAttrib_Left, 651 kPOVAttrib_EndColumn = kPOVAttrib_Right, 652 kPOVAttrib_StartRow = kPOVAttrib_Top, 653 kPOVAttrib_EndRow = kPOVAttrib_Bottom 654 }; 655 656 enum 657 { 658 kPOVList_FileType_Unknown, 659 kPOVList_FileType_Targa, 660 kPOVList_FileType_CompressedTarga, 661 kPOVList_FileType_PNG, 662 kPOVList_FileType_JPEG, 663 kPOVList_FileType_PPM, 664 kPOVList_FileType_BMP, 665 kPOVList_FileType_OpenEXR, 666 kPOVList_FileType_RadianceHDR, 667 kPOVList_FileType_System, 668 kPOVList_FileType_CSV, // used for histogram file 669 }; 670 671 #endif // POVMSID_H 672