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
DEEP_IMAGE_MEMORY
,
// Current/peak deep memory
68
69
// Texture information
70
UNIFIED_CACHE
,
// Unified cache information
71
TEXTURE_ERROR_FILES
,
// List of bad texture paths
72
TEXTURE_CONVERSIONS
,
// Textures converted interanally
73
74
RAT_STATS
,
// Number of .rat textures
75
RAT_DISK_CACHE
,
// RAT file disk cache performance
76
RAT_DISK_CACHE_ERRORS
,
// RAT file disk cache conversions
77
78
OIIO_STATS
,
// OIIO texture stats
79
OIIO_STATS_STRING
,
// OIIO stats string (direct from OIIO)
80
81
PTEX_STATS
,
// Ptex texture stats
82
83
// USD information
84
OBJECT_COUNTS
,
// Object counts in the scene
85
GEOMETRY_COUNTS
,
// Geometry prim counts in the scene
86
LIGHT_TYPES
,
// Counts for different light types
87
PRIMVAR_CACHE
,
// Information about primvar cache
88
89
// Rendering state information
90
PERCENT_COMPLETE
,
// Percent complete (0-1)
91
RENDER_STAGE
,
// Stage of rendering (inactive, loading, etc.)
92
RENDER_STAGE_LABEL
,
// Stage of rendering (inactive, loading, etc.)
93
LOAD_TIME
,
// Time to load scene
94
LOAD_MEMORY
,
// Memory after load
95
TTFP
,
// Time to first pixel
96
FILTER_ERRORS
,
// Errors in pixel/image filters (denoisers)
97
98
// Karma CPU
99
SHADER_CALLS
,
// Number of shader calls
100
SHADER_NODES
,
// Number of shader graph nodes
101
RAY_COUNTS
,
// Primary, indirect, occlusion, etc.
102
TIMINGS
,
// Breakdown of time
103
104
// Karma XPU
105
XPU_COMPILES
,
// XPU compile information
106
107
STOCHASTIC_DEPTH
,
// Depth of stochastic transparency
108
RAY_DEPTHS
,
// Distribution of ray-depths
109
RAY_DEPTHS_PERCENTAGE
,
// Distribution of ray-depths
110
RAY_BATCH_EFFICIENCY
,
// Batch efficiency
111
112
// Checkpointing
113
CHECKPOINT_STATS
,
// Checkpoint stats
114
115
// Render progress
116
ACTIVE_BUCKETS
,
// Active buckets list
117
118
// Annoatations (backward compatibility)
119
PROGRESS_ANNOTATION
,
// Progress
120
STATS_ANNOTATION
,
// XPU Stats
121
122
MAX_KEYS
// Sentinal
123
};
124
125
enum
DeviceKey
126
{
127
DEVICE_LABEL
,
// Label for the device
128
DEVICE_TYPE
,
// Type of device (gpu, embree)
129
DEVICE_STATUS
,
// Device status
130
DEVICE_ERROR
,
// Device error message
131
DEVICE_MEMORY
,
// Breakdown of memory
132
DEVICE_SAMPLES
,
// Number of samples processed by device
133
DEVICE_CONTRIB
,
// Contribution of device
134
135
DEVICE_MAX_KEYS
// Sentinal
136
};
137
138
struct
BRAY_API
Value
139
:
public
UT_NonCopyable
140
{
141
Value
(BRAY_StatsImpl &stats,
Key
key);
142
Value(BRAY_StatsImpl &stats,
DeviceKey
key,
int
device);
143
~Value();
144
145
SYS_SAFE_BOOL
operator
bool()
const
146
{
147
return
myValue.getType() !=
UT_JSONValue::JSON_NULL
;
148
}
149
150
const
UT_JSONValue
&
get
()
const
{
return
myValue; }
151
const
UT_JSONValue
&
operator->
()
const
{
return
myValue; }
152
const
UT_JSONValue
&
operator*
()
const
{
return
myValue; }
153
154
const
UT_StringHolder
&key()
const
;
155
UT_StringHolder
asString()
const
;
156
private
:
157
const
UT_JSONValue
&myValue;
158
BRAY_StatsImpl &myStats;
159
int
myDevice;
160
Key
myKey;
161
DeviceKey
myDeviceKey;
162
};
163
164
static
const
UT_StringHolder
&keyName(Key key);
165
static
const
UT_StringHolder
&deviceKeyName(DeviceKey key);
166
167
/// Lightweight method to get the render stage
168
BRAY_RenderStage
renderStage()
const
;
169
/// Lightweight method to get the percent complete (between 0 and 100)
170
fpreal
percentComplete()
const
;
171
172
/// Get the value of the stat
173
Value
get
(
Key
key)
const
174
{
return
Value
(*myImpl, key); }
175
176
/// Get the value of the device stat
177
Value
get
(
DeviceKey
key,
int
device)
const
178
{
return
Value
(*myImpl, key, device); }
179
180
/// After XPU devices are initialized, call this method to configure the
181
/// stats.
182
void
initDevices();
183
184
/// Clear for next render
185
void
clear();
186
187
/// @{
188
/// @private - methods used by the renderer to update stats during rendering
189
BRAY_RenderStage
setStage(
BRAY_RenderStage
s
);
190
void
setPercentDone(
fpreal
v
);
191
void
setTTFP(
fpreal
v
);
192
void
setProgressAnnotation(
const
UT_StringHolder
&
s
);
193
void
setStatsAnnotation(
const
UT_StringHolder
&
s
);
194
void
setAnnotations(
const
UT_StringHolder
&progress_annotation,
195
const
UT_StringHolder
&stats_annotation);
196
void
startBucket(
const
UT_DimRect
&bounds,
int
pass);
197
void
endBucket();
198
199
struct
AutoBucket
200
{
201
AutoBucket
(
Stats
&stats,
const
UT_DimRect
&bounds,
int
pass)
202
: myStats(stats)
203
{
204
myStats.startBucket(bounds, pass);
205
}
206
~AutoBucket
()
207
{
208
myStats.endBucket();
209
}
210
Stats
&
myStats
;
211
};
212
/// @}
213
214
private
:
215
UT_UniquePtr<BRAY_StatsImpl>
myImpl;
216
};
217
218
}
// End namespace
219
220
#endif
221
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:132
BRAY::Stats::Value::operator*
const UT_JSONValue & operator*() const
Definition:
BRAY_Stats.h:152
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:81
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:100
BRAY::Stats::CHECKPOINT_STATS
Definition:
BRAY_Stats.h:113
BRAY::Stats::DeviceKey
DeviceKey
Definition:
BRAY_Stats.h:125
UT_Rect.h
BRAY::Stats::FILTER_ERRORS
Definition:
BRAY_Stats.h:96
BRAY::Stats::SYSTEM_THREADS
Definition:
BRAY_Stats.h:41
BRAY::Stats::RENDER_STAGE_LABEL
Definition:
BRAY_Stats.h:92
BRAY::Stats::RAT_DISK_CACHE
Definition:
BRAY_Stats.h:75
s
GLdouble s
Definition:
glad.h:3009
BRAY::Stats::AOV_BUFFERS
Definition:
BRAY_Stats.h:65
BRAY::Stats::DEVICE_ERROR
Definition:
BRAY_Stats.h:130
UT_JSONValue.h
BRAY::Stats::WORLD_TO_CAMERA
Definition:
BRAY_Stats.h:58
BRAY::Stats::PRIMVAR_CACHE
Definition:
BRAY_Stats.h:87
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:133
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:70
BRAY::Stats::RAY_DEPTHS_PERCENTAGE
Definition:
BRAY_Stats.h:109
BRAY::Stats::Value
Definition:
BRAY_Stats.h:138
UT_StringHolder
Definition:
UT_StringHolder.h:999
BRAY::Stats::STOCHASTIC_DEPTH
Definition:
BRAY_Stats.h:107
BRAY_RenderStage
BRAY_RenderStage
Definition:
BRAY_Types.h:589
SYS_SAFE_BOOL
#define SYS_SAFE_BOOL
Definition:
SYS_Compiler.h:55
BRAY::Stats::LOAD_MEMORY
Definition:
BRAY_Stats.h:94
BRAY::Stats::DEVICE_TYPE
Definition:
BRAY_Stats.h:128
BRAY::Stats::AutoBucket::myStats
Stats & myStats
Definition:
BRAY_Stats.h:210
BRAY::Stats::CAMERA_NEAR_FAR
Definition:
BRAY_Stats.h:63
BRAY::Stats::TEXTURE_CONVERSIONS
Definition:
BRAY_Stats.h:72
BRAY::Stats::LIGHT_TYPES
Definition:
BRAY_Stats.h:86
BRAY::Stats::RAT_DISK_CACHE_ERRORS
Definition:
BRAY_Stats.h:76
BRAY::Stats::RAT_STATS
Definition:
BRAY_Stats.h:74
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:129
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:71
BRAY::Stats::RAY_COUNTS
Definition:
BRAY_Stats.h:101
BRAY::Stats::RAY_BATCH_EFFICIENCY
Definition:
BRAY_Stats.h:110
BRAY::Stats::TTFP
Definition:
BRAY_Stats.h:95
BRAY::Stats::ACTIVE_BUCKETS
Definition:
BRAY_Stats.h:116
BRAY::Stats::DEVICE_MEMORY
Definition:
BRAY_Stats.h:131
BRAY::Stats::SYSTEM_RESOURCE_USAGE
Definition:
BRAY_Stats.h:46
BRAY::Stats::AutoBucket
Definition:
BRAY_Stats.h:199
BRAY::Stats::TIMINGS
Definition:
BRAY_Stats.h:102
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:201
BRAY::Stats::XPU_COMPILES
Definition:
BRAY_Stats.h:105
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:93
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:85
BRAY::Stats::DEVICE_LABEL
Definition:
BRAY_Stats.h:127
BRAY::Stats::OIIO_STATS
Definition:
BRAY_Stats.h:78
BRAY::Stats::RENDER_CAMERA
Definition:
BRAY_Stats.h:54
BRAY::Stats::PROGRESS_ANNOTATION
Definition:
BRAY_Stats.h:119
BRAY::Stats::OBJECT_COUNTS
Definition:
BRAY_Stats.h:84
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:120
BRAY::Stats::DEEP_IMAGE_MEMORY
Definition:
BRAY_Stats.h:67
BRAY::Stats::PERCENT_COMPLETE
Definition:
BRAY_Stats.h:90
BRAY::Stats::SYSTEM_CPU_ARCHITECTURE
Definition:
BRAY_Stats.h:43
BRAY::Stats::OIIO_STATS_STRING
Definition:
BRAY_Stats.h:79
BRAY::Stats::AutoBucket::~AutoBucket
~AutoBucket()
Definition:
BRAY_Stats.h:206
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:108
BRAY::Stats::Value::operator->
const UT_JSONValue & operator->() const
Definition:
BRAY_Stats.h:151
BRAY::Stats::SHADER_CALLS
Definition:
BRAY_Stats.h:99
BRAY::Stats::RENDER_STAGE
Definition:
BRAY_Stats.h:91
BRAY::Stats::KARMA_VERSION
Definition:
BRAY_Stats.h:40
BRAY
BRAY_Stats.h
Generated on Thu Nov 21 2024 02:43:26 for HDK by
1.8.6