HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
BRAY_Stats.h
Go to the documentation of this file.
1
/*
2
* PROPRIETARY INFORMATION. This software is proprietary to
3
* Side Effects Software Inc., and is not to be reproduced,
4
* transmitted, or disclosed in any way without written permission.
5
*
6
* NAME: BRAY_Stats.h (BRAY Library, C++)
7
*
8
* COMMENTS:
9
*/
10
11
#ifndef __BRAY_Stats__
12
#define __BRAY_Stats__
13
14
#include "
BRAY_API.h
"
15
#include "
BRAY_Types.h
"
16
#include <
UT/UT_UniquePtr.h
>
17
#include <
UT/UT_Rect.h
>
18
#include <
UT/UT_NonCopyable.h
>
19
#include <
UT/UT_StringHolder.h
>
20
#include <
UT/UT_JSONValue.h
>
21
22
class
BRAY_StatsImpl;
23
class
BRAY_Renderer;
24
25
namespace
BRAY
26
{
27
28
class
BRAY_API
Stats
29
:
UT_NonCopyable
30
{
31
public
:
32
Stats
(
const
BRAY_Renderer &renderer);
33
~
Stats
();
34
35
enum
Key
36
{
37
// System information
38
USERNAME
,
// User name
39
HOSTNAME
,
// Host name
40
KARMA_VERSION
,
// Karma version
41
SYSTEM_THREADS
,
// Thread count
42
SYSTEM_CPU_BRAND
,
// CPU brand
43
SYSTEM_CPU_ARCHITECTURE
,
// CPU architecture
44
SYSTEM_MEMORY
,
// Current system memory usage
45
SYSTEM_TIME
,
// Current system times
46
SYSTEM_RESOURCE_USAGE
,
// Current system resource usage
47
48
// Global render state
49
ENGINE
,
// Rendering engine (cpu or xpu)
50
XPU_DEVICE_COUNT
,
// XPU device count
51
52
RENDER_SETTINGS
,
// JSON string of all global render settings
53
54
RENDER_CAMERA
,
// Path to render camera
55
DICING_CAMERA
,
// Path to dicing camera
56
RESOLUTION
,
// Image resoution
57
58
WORLD_TO_CAMERA
,
// World to camera transform
59
WORLD_TO_SCREEN
,
// World to screen transform
60
WORLD_TO_NDC
,
// World to NDC transform
61
WORLD_TO_RASTER
,
// World to raster space transform
62
63
CAMERA_NEAR_FAR
,
// Camera near/far clipping planes
64
65
AOV_BUFFERS
,
// AOV Buffer dictionary
66
AOV_RASTER_MEMORY
,
// Current/Peak memory used by rasters
67
68
// Texture information
69
UNIFIED_CACHE
,
// Unified cache information
70
TEXTURE_ERROR_FILES
,
// List of bad texture paths
71
TEXTURE_CONVERSIONS
,
// Textures converted interanally
72
73
RAT_STATS
,
// Number of .rat textures
74
RAT_DISK_CACHE
,
// RAT file disk cache performance
75
RAT_DISK_CACHE_ERRORS
,
// RAT file disk cache conversions
76
77
OIIO_STATS
,
// OIIO texture stats
78
OIIO_STATS_STRING
,
// OIIO stats string (direct from OIIO)
79
80
PTEX_STATS
,
// Ptex texture stats
81
82
// USD information
83
OBJECT_COUNTS
,
// Object counts in the scene
84
GEOMETRY_COUNTS
,
// Geometry prim counts in the scene
85
LIGHT_TYPES
,
// Counts for different light types
86
PRIMVAR_CACHE
,
// Information about primvar cache
87
88
// Rendering state information
89
PERCENT_COMPLETE
,
// Percent complete (0-1)
90
RENDER_STAGE
,
// Stage of rendering (inactive, loading, etc.)
91
RENDER_STAGE_LABEL
,
// Stage of rendering (inactive, loading, etc.)
92
LOAD_TIME
,
// Time to load scene
93
LOAD_MEMORY
,
// Memory after load
94
TTFP
,
// Time to first pixel
95
FILTER_ERRORS
,
// Errors in pixel/image filters (denoisers)
96
97
// Karma CPU
98
SHADER_CALLS
,
// Number of shader calls
99
SHADER_NODES
,
// Number of shader graph nodes
100
RAY_COUNTS
,
// Primary, indirect, occlusion, etc.
101
TIMINGS
,
// Breakdown of time
102
103
// Karma XPU
104
XPU_COMPILES
,
// XPU compile information
105
106
STOCHASTIC_DEPTH
,
// Depth of stochastic transparency
107
RAY_DEPTHS
,
// Distribution of ray-depths
108
RAY_DEPTHS_PERCENTAGE
,
// Distribution of ray-depths
109
RAY_BATCH_EFFICIENCY
,
// Batch efficiency
110
111
// Checkpointing
112
CHECKPOINT_STATS
,
// Checkpoint stats
113
114
// Render progress
115
ACTIVE_BUCKETS
,
// Active buckets list
116
117
// Annoatations (backward compatibility)
118
PROGRESS_ANNOTATION
,
// Progress
119
STATS_ANNOTATION
,
// XPU Stats
120
121
MAX_KEYS
// Sentinal
122
};
123
124
enum
DeviceKey
125
{
126
DEVICE_LABEL
,
// Label for the device
127
DEVICE_TYPE
,
// Type of device (gpu, embree)
128
DEVICE_STATUS
,
// Device status
129
DEVICE_ERROR
,
// Device error message
130
DEVICE_MEMORY
,
// Breakdown of memory
131
DEVICE_SAMPLES
,
// Number of samples processed by device
132
DEVICE_CONTRIB
,
// Contribution of device
133
134
DEVICE_MAX_KEYS
// Sentinal
135
};
136
137
struct
BRAY_API
Value
138
:
public
UT_NonCopyable
139
{
140
Value
(BRAY_StatsImpl &stats,
Key
key);
141
Value(BRAY_StatsImpl &stats,
DeviceKey
key,
int
device);
142
~Value();
143
144
SYS_SAFE_BOOL
operator
bool()
const
145
{
146
return
myValue.getType() !=
UT_JSONValue::JSON_NULL
;
147
}
148
149
const
UT_JSONValue
&
get
()
const
{
return
myValue; }
150
const
UT_JSONValue
&
operator->
()
const
{
return
myValue; }
151
const
UT_JSONValue
&
operator*
()
const
{
return
myValue; }
152
153
const
UT_StringHolder
&key()
const
;
154
UT_StringHolder
asString()
const
;
155
private
:
156
const
UT_JSONValue
&myValue;
157
BRAY_StatsImpl &myStats;
158
int
myDevice;
159
Key
myKey;
160
DeviceKey
myDeviceKey;
161
};
162
163
static
const
UT_StringHolder
&keyName(Key key);
164
static
const
UT_StringHolder
&deviceKeyName(DeviceKey key);
165
166
/// Lightweight method to get the render stage
167
BRAY_RenderStage
renderStage()
const
;
168
/// Lightweight method to get the percent complete (between 0 and 100)
169
fpreal
percentComplete()
const
;
170
171
/// Get the value of the stat
172
Value
get
(
Key
key)
const
173
{
return
Value
(*myImpl, key); }
174
175
/// Get the value of the device stat
176
Value
get
(
DeviceKey
key,
int
device)
const
177
{
return
Value
(*myImpl, key, device); }
178
179
/// After XPU devices are initialized, call this method to configure the
180
/// stats.
181
void
initDevices();
182
183
/// Clear for next render
184
void
clear();
185
186
/// @{
187
/// @private - methods used by the renderer to update stats during rendering
188
BRAY_RenderStage
setStage(
BRAY_RenderStage
s
);
189
void
setPercentDone(
fpreal
v
);
190
void
setTTFP(
fpreal
v
);
191
void
setProgressAnnotation(
const
UT_StringHolder
&
s
);
192
void
setStatsAnnotation(
const
UT_StringHolder
&
s
);
193
void
setAnnotations(
const
UT_StringHolder
&progress_annotation,
194
const
UT_StringHolder
&stats_annotation);
195
void
startBucket(
const
UT_DimRect
&bounds,
int
pass);
196
void
endBucket();
197
198
struct
AutoBucket
199
{
200
AutoBucket
(
Stats
&stats,
const
UT_DimRect
&bounds,
int
pass)
201
: myStats(stats)
202
{
203
myStats.startBucket(bounds, pass);
204
}
205
~AutoBucket
()
206
{
207
myStats.endBucket();
208
}
209
Stats
&
myStats
;
210
};
211
/// @}
212
213
private
:
214
UT_UniquePtr<BRAY_StatsImpl>
myImpl;
215
};
216
217
}
// End namespace
218
219
#endif
220
BRAY::Stats::RENDER_SETTINGS
Definition:
BRAY_Stats.h:52
BRAY::Stats::SYSTEM_MEMORY
Definition:
BRAY_Stats.h:44
BRAY_Types.h
BRAY::Stats::DEVICE_SAMPLES
Definition:
BRAY_Stats.h:131
BRAY::Stats::Value::operator*
const UT_JSONValue & operator*() const
Definition:
BRAY_Stats.h:151
BRAY::Stats::WORLD_TO_SCREEN
Definition:
BRAY_Stats.h:59
BRAY::Stats::HOSTNAME
Definition:
BRAY_Stats.h:39
BRAY::Stats::PTEX_STATS
Definition:
BRAY_Stats.h:80
v
const GLdouble * v
Definition:
glcorearb.h:837
BRAY::Stats::WORLD_TO_RASTER
Definition:
BRAY_Stats.h:61
BRAY::Stats::SHADER_NODES
Definition:
BRAY_Stats.h:99
BRAY::Stats::CHECKPOINT_STATS
Definition:
BRAY_Stats.h:112
BRAY::Stats::DeviceKey
DeviceKey
Definition:
BRAY_Stats.h:124
UT_Rect.h
BRAY::Stats::FILTER_ERRORS
Definition:
BRAY_Stats.h:95
BRAY::Stats::SYSTEM_THREADS
Definition:
BRAY_Stats.h:41
BRAY::Stats::RENDER_STAGE_LABEL
Definition:
BRAY_Stats.h:91
BRAY::Stats::RAT_DISK_CACHE
Definition:
BRAY_Stats.h:74
s
GLdouble s
Definition:
glad.h:3009
BRAY::Stats::AOV_BUFFERS
Definition:
BRAY_Stats.h:65
BRAY::Stats::DEVICE_ERROR
Definition:
BRAY_Stats.h:129
UT_JSONValue.h
BRAY::Stats::WORLD_TO_CAMERA
Definition:
BRAY_Stats.h:58
BRAY::Stats::PRIMVAR_CACHE
Definition:
BRAY_Stats.h:86
BRAY::Stats::RESOLUTION
Definition:
BRAY_Stats.h:56
BRAY::Stats::DICING_CAMERA
Definition:
BRAY_Stats.h:55
BRAY::Stats::DEVICE_CONTRIB
Definition:
BRAY_Stats.h:132
BRAY::Stats::ENGINE
Definition:
BRAY_Stats.h:49
UT_UniquePtr
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition:
UT_UniquePtr.h:39
BRAY::Stats::UNIFIED_CACHE
Definition:
BRAY_Stats.h:69
BRAY::Stats::RAY_DEPTHS_PERCENTAGE
Definition:
BRAY_Stats.h:108
BRAY::Stats::Value
Definition:
BRAY_Stats.h:137
UT_StringHolder
Definition:
UT_StringHolder.h:999
BRAY::Stats::STOCHASTIC_DEPTH
Definition:
BRAY_Stats.h:106
BRAY_RenderStage
BRAY_RenderStage
Definition:
BRAY_Types.h:555
SYS_SAFE_BOOL
#define SYS_SAFE_BOOL
Definition:
SYS_Compiler.h:55
BRAY::Stats::LOAD_MEMORY
Definition:
BRAY_Stats.h:93
BRAY::Stats::DEVICE_TYPE
Definition:
BRAY_Stats.h:127
BRAY::Stats::AutoBucket::myStats
Stats & myStats
Definition:
BRAY_Stats.h:209
BRAY::Stats::CAMERA_NEAR_FAR
Definition:
BRAY_Stats.h:63
BRAY::Stats::TEXTURE_CONVERSIONS
Definition:
BRAY_Stats.h:71
BRAY::Stats::LIGHT_TYPES
Definition:
BRAY_Stats.h:85
BRAY::Stats::RAT_DISK_CACHE_ERRORS
Definition:
BRAY_Stats.h:75
BRAY::Stats::RAT_STATS
Definition:
BRAY_Stats.h:73
BRAY::Stats::AOV_RASTER_MEMORY
Definition:
BRAY_Stats.h:66
BRAY::Stats::SYSTEM_CPU_BRAND
Definition:
BRAY_Stats.h:42
UT_NonCopyable.h
BRAY::Stats::DEVICE_STATUS
Definition:
BRAY_Stats.h:128
BRAY::Stats
Definition:
BRAY_Stats.h:28
UT_JSONValue::JSON_NULL
Definition:
UT_JSONValue.h:105
BRAY::Stats::TEXTURE_ERROR_FILES
Definition:
BRAY_Stats.h:70
BRAY::Stats::RAY_COUNTS
Definition:
BRAY_Stats.h:100
BRAY::Stats::RAY_BATCH_EFFICIENCY
Definition:
BRAY_Stats.h:109
BRAY::Stats::TTFP
Definition:
BRAY_Stats.h:94
BRAY::Stats::ACTIVE_BUCKETS
Definition:
BRAY_Stats.h:115
BRAY::Stats::DEVICE_MEMORY
Definition:
BRAY_Stats.h:130
BRAY::Stats::SYSTEM_RESOURCE_USAGE
Definition:
BRAY_Stats.h:46
BRAY::Stats::AutoBucket
Definition:
BRAY_Stats.h:198
BRAY::Stats::TIMINGS
Definition:
BRAY_Stats.h:101
BRAY::Stats::XPU_DEVICE_COUNT
Definition:
BRAY_Stats.h:50
BRAY::Stats::AutoBucket::AutoBucket
AutoBucket(Stats &stats, const UT_DimRect &bounds, int pass)
Definition:
BRAY_Stats.h:200
BRAY::Stats::XPU_COMPILES
Definition:
BRAY_Stats.h:104
BRAY_API.h
UT_UniquePtr.h
UT_Rect< UT_DimRectImpl >
BRAY::Stats::WORLD_TO_NDC
Definition:
BRAY_Stats.h:60
BRAY::Stats::LOAD_TIME
Definition:
BRAY_Stats.h:92
UT_StringHolder.h
fpreal
fpreal64 fpreal
Definition:
SYS_Types.h:277
BRAY::Stats::USERNAME
Definition:
BRAY_Stats.h:38
BRAY::Stats::GEOMETRY_COUNTS
Definition:
BRAY_Stats.h:84
BRAY::Stats::DEVICE_LABEL
Definition:
BRAY_Stats.h:126
BRAY::Stats::OIIO_STATS
Definition:
BRAY_Stats.h:77
BRAY::Stats::RENDER_CAMERA
Definition:
BRAY_Stats.h:54
BRAY::Stats::PROGRESS_ANNOTATION
Definition:
BRAY_Stats.h:118
BRAY::Stats::OBJECT_COUNTS
Definition:
BRAY_Stats.h:83
BRAY_API
#define BRAY_API
Definition:
BRAY_API.h:12
UT_NonCopyableNS::UT_NonCopyable
Definition:
UT_NonCopyable.h:17
UT_JSONValue
Class to store JSON objects as C++ objects.
Definition:
UT_JSONValue.h:99
BRAY::Stats::STATS_ANNOTATION
Definition:
BRAY_Stats.h:119
BRAY::Stats::PERCENT_COMPLETE
Definition:
BRAY_Stats.h:89
BRAY::Stats::SYSTEM_CPU_ARCHITECTURE
Definition:
BRAY_Stats.h:43
BRAY::Stats::OIIO_STATS_STRING
Definition:
BRAY_Stats.h:78
BRAY::Stats::AutoBucket::~AutoBucket
~AutoBucket()
Definition:
BRAY_Stats.h:205
BRAY::Stats::Key
Key
Definition:
BRAY_Stats.h:35
BRAY::Stats::SYSTEM_TIME
Definition:
BRAY_Stats.h:45
BRAY::Stats::RAY_DEPTHS
Definition:
BRAY_Stats.h:107
BRAY::Stats::Value::operator->
const UT_JSONValue & operator->() const
Definition:
BRAY_Stats.h:150
BRAY::Stats::SHADER_CALLS
Definition:
BRAY_Stats.h:98
BRAY::Stats::RENDER_STAGE
Definition:
BRAY_Stats.h:90
BRAY::Stats::KARMA_VERSION
Definition:
BRAY_Stats.h:40
BRAY
BRAY_Stats.h
Generated on Mon May 13 2024 03:16:51 for HDK by
1.8.6