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