Blender V4.3
rna_lightprobe.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#include <cstdlib>
10
11#include "RNA_define.hh"
12#include "RNA_enum_types.hh"
13
14#include "rna_internal.hh"
15
17
18#include "WM_types.hh"
19
20#ifdef RNA_RUNTIME
21
22# include "MEM_guardedalloc.h"
23
24# include "BKE_main.hh"
25# include "DEG_depsgraph.hh"
26
27# include "DNA_collection_types.h"
28# include "DNA_object_types.h"
29
30# include "WM_api.hh"
31
32static StructRNA *rna_LightProbe_refine(PointerRNA *ptr)
33{
34 LightProbe *probe = (LightProbe *)ptr->data;
35 switch (probe->type) {
37 return &RNA_LightProbePlane;
39 return &RNA_LightProbeSphere;
41 return &RNA_LightProbeVolume;
42 default:
43 return &RNA_LightProbe;
44 }
45}
46
47static void rna_LightProbe_recalc(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
48{
50}
51
52#else
53
55 {LIGHTPROBE_SHAPE_ELIPSOID, "ELIPSOID", ICON_NONE, "Sphere", ""},
56 {LIGHTPROBE_SHAPE_BOX, "BOX", ICON_NONE, "Box", ""},
57 {0, nullptr, 0, nullptr, nullptr},
58};
59
62 "SPHERE",
63 ICON_LIGHTPROBE_SPHERE,
64 "Sphere",
65 "Light probe that captures precise lighting from all directions at a single point in space"},
67 "PLANE",
68 ICON_LIGHTPROBE_PLANE,
69 "Plane",
70 "Light probe that captures incoming light from a single direction on a plane"},
72 "VOLUME",
73 ICON_LIGHTPROBE_VOLUME,
74 "Volume",
75 "Light probe that captures low frequency lighting inside a volume"},
76 {0, nullptr, 0, nullptr, nullptr},
77};
78
80{
81 StructRNA *srna;
82 PropertyRNA *prop;
83
84 srna = RNA_def_struct(brna, "LightProbe", "ID");
85 RNA_def_struct_refine_func(srna, "rna_LightProbe_refine");
87 srna, "LightProbe", "Light Probe data-block for lighting capture objects");
88 RNA_def_struct_ui_icon(srna, ICON_OUTLINER_DATA_LIGHTPROBE);
89
90 prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
92 RNA_def_property_ui_text(prop, "Type", "Type of light probe");
94
95 prop = RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_DISTANCE);
96 RNA_def_property_float_sdna(prop, nullptr, "clipsta");
97 RNA_def_property_range(prop, 1e-6f, FLT_MAX);
98 RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 10, 3);
100 prop, "Clip Start", "Probe clip start, below which objects will not appear in reflections");
101 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
102
103 prop = RNA_def_property(srna, "show_clip", PROP_BOOLEAN, PROP_NONE);
105 RNA_def_property_ui_text(prop, "Clipping", "Show the clipping distances in the 3D view");
107
108 prop = RNA_def_property(srna, "show_influence", PROP_BOOLEAN, PROP_NONE);
110 RNA_def_property_ui_text(prop, "Influence", "Show the influence volume in the 3D view");
112
113 prop = RNA_def_property(srna, "influence_distance", PROP_FLOAT, PROP_DISTANCE);
114 RNA_def_property_float_sdna(prop, nullptr, "distinf");
115 RNA_def_property_range(prop, 0.0f, FLT_MAX);
116 RNA_def_property_ui_text(prop, "Influence Distance", "Influence distance of the probe");
118
119# if 1 /* Deprecated: Remove in Blender 4.5 */
120 prop = RNA_def_property(srna, "visibility_buffer_bias", PROP_FLOAT, PROP_NONE);
121 RNA_def_property_float_sdna(prop, nullptr, "vis_bias");
122 RNA_def_property_range(prop, 0.001f, 9999.0f);
123 RNA_def_property_ui_range(prop, 0.001f, 5.0f, 1.0, 3);
125 prop, "Visibility Bias", "Bias for reducing self shadowing (Deprecated)");
127
128 prop = RNA_def_property(srna, "visibility_bleed_bias", PROP_FLOAT, PROP_FACTOR);
129 RNA_def_property_float_sdna(prop, nullptr, "vis_bleedbias");
130 RNA_def_property_range(prop, 0.0f, 1.0f);
132 "Visibility Bleed Bias",
133 "Bias for reducing light-bleed on variance shadow maps (Deprecated)");
135
136 prop = RNA_def_property(srna, "visibility_blur", PROP_FLOAT, PROP_FACTOR);
137 RNA_def_property_float_sdna(prop, nullptr, "vis_blur");
138 RNA_def_property_range(prop, 0.0f, 1.0f);
140 prop, "Visibility Blur", "Filter size of the visibility blur (Deprecated)");
141 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
142
143 prop = RNA_def_property(srna, "visibility_collection", PROP_POINTER, PROP_NONE);
144 RNA_def_property_struct_type(prop, "Collection");
145 RNA_def_property_pointer_sdna(prop, nullptr, "visibility_grp");
149 prop, "Visibility Collection", "Restrict objects visible for this probe (Deprecated)");
150 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
151
152 prop = RNA_def_property(srna, "invert_visibility_collection", PROP_BOOLEAN, PROP_NONE);
155 RNA_def_property_ui_text(prop, "Invert Collection", "Invert visibility collection (Deprecated)");
156 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
157# endif
158
159 /* Data preview */
160 prop = RNA_def_property(srna, "show_data", PROP_BOOLEAN, PROP_NONE);
162 RNA_def_property_ui_icon(prop, ICON_HIDE_ON, 1);
164 prop, "Display Data (Deprecated)", "Deprecated, use use_data_display instead");
167
168 prop = RNA_def_property(srna, "use_data_display", PROP_BOOLEAN, PROP_NONE);
171 prop, "Display Data", "Display sampled data in the viewport to debug captured light");
174
175 prop = RNA_def_property(srna, "data_display_size", PROP_FLOAT, PROP_FACTOR);
176 RNA_def_property_float_sdna(prop, nullptr, "data_display_size");
177 RNA_def_property_range(prop, 0.0f, FLT_MAX);
178 RNA_def_property_ui_range(prop, 0.01f, 1.0f, 1, 3);
179 RNA_def_property_ui_text(prop, "Display Data Size", "Viewport display size of the sampled data");
181
182 /* common */
184}
185
187{
188 StructRNA *srna;
189
190 srna = RNA_def_struct(brna, "LightProbePlane", "LightProbe");
191 RNA_def_struct_sdna(srna, "LightProbe");
193 srna,
194 "Planar Probe",
195 "Light probe that captures incoming light from a single direction on a plane");
196 RNA_def_struct_ui_icon(srna, ICON_LIGHTPROBE_PLANE);
197}
198
200{
201 StructRNA *srna;
202 PropertyRNA *prop;
203
204 srna = RNA_def_struct(brna, "LightProbeSphere", "LightProbe");
205 RNA_def_struct_sdna(srna, "LightProbe");
207 srna,
208 "Spherical Probe",
209 "Light probe that captures precise lighting from all directions at a single point in space");
210 RNA_def_struct_ui_icon(srna, ICON_LIGHTPROBE_SPHERE);
211
212 prop = RNA_def_property(srna, "influence_type", PROP_ENUM, PROP_NONE);
213 RNA_def_property_enum_sdna(prop, nullptr, "attenuation_type");
215 RNA_def_property_ui_text(prop, "Type", "Type of influence volume");
217
218 prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_FACTOR);
219 RNA_def_property_range(prop, 0.0f, 1.0f);
220 RNA_def_property_ui_text(prop, "Falloff", "Control how fast the probe influence decreases");
222
223 prop = RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_DISTANCE);
224 RNA_def_property_float_sdna(prop, nullptr, "clipend");
225 RNA_def_property_range(prop, 1e-6f, FLT_MAX);
226 RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 10, 3);
228 prop, "Clip End", "Probe clip end, beyond which objects will not appear in reflections");
229 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
230
231 /* Custom parallax */
232 prop = RNA_def_property(srna, "use_custom_parallax", PROP_BOOLEAN, PROP_NONE);
235 prop, "Use Custom Parallax", "Enable custom settings for the parallax correction volume");
237
238 prop = RNA_def_property(srna, "show_parallax", PROP_BOOLEAN, PROP_NONE);
240 RNA_def_property_ui_text(prop, "Parallax", "Show the parallax correction volume in the 3D view");
242
243 prop = RNA_def_property(srna, "parallax_type", PROP_ENUM, PROP_NONE);
245 RNA_def_property_ui_text(prop, "Type", "Type of parallax volume");
247
248 prop = RNA_def_property(srna, "parallax_distance", PROP_FLOAT, PROP_DISTANCE);
249 RNA_def_property_float_sdna(prop, nullptr, "distpar");
250 RNA_def_property_range(prop, 0.0f, FLT_MAX);
251 RNA_def_property_ui_text(prop, "Parallax Radius", "Lowest corner of the parallax bounding box");
253}
254
256{
257 StructRNA *srna;
258 PropertyRNA *prop;
259
260 srna = RNA_def_struct(brna, "LightProbeVolume", "LightProbe");
261 RNA_def_struct_sdna(srna, "LightProbe");
263 srna, "Volume Probe", "Light probe that captures low frequency lighting inside a volume");
264 RNA_def_struct_ui_icon(srna, ICON_LIGHTPROBE_VOLUME);
265
266 prop = RNA_def_property(srna, "intensity", PROP_FLOAT, PROP_NONE);
267 RNA_def_property_float_sdna(prop, nullptr, "intensity");
268 RNA_def_property_range(prop, 0.0f, FLT_MAX);
269 RNA_def_property_ui_range(prop, 0.0f, 3.0f, 1.0, 3);
271 prop, "Intensity", "Modify the intensity of the lighting captured by this probe");
272 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
273
274 /* Irradiance grid */
275 prop = RNA_def_property(srna, "resolution_x", PROP_INT, PROP_NONE);
276 RNA_def_property_int_sdna(prop, nullptr, "grid_resolution_x");
277 RNA_def_property_range(prop, 1, 256);
279 prop, "Resolution X", "Number of samples along the x axis of the volume");
280 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
281
282 prop = RNA_def_property(srna, "resolution_y", PROP_INT, PROP_NONE);
283 RNA_def_property_int_sdna(prop, nullptr, "grid_resolution_y");
284 RNA_def_property_range(prop, 1, 256);
286 prop, "Resolution Y", "Number of samples along the y axis of the volume");
287 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
288
289 prop = RNA_def_property(srna, "resolution_z", PROP_INT, PROP_NONE);
290 RNA_def_property_int_sdna(prop, nullptr, "grid_resolution_z");
291 RNA_def_property_range(prop, 1, 256);
293 prop, "Resolution Z", "Number of samples along the z axis of the volume");
294 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
295
296 /* NOTE: We reuse the same DNA for this property for historical reason, but we want a different
297 * name and tooltip for it. */
298 prop = RNA_def_property(srna, "capture_distance", PROP_FLOAT, PROP_DISTANCE);
299 RNA_def_property_float_sdna(prop, nullptr, "clipend");
300 RNA_def_property_range(prop, 1e-6f, FLT_MAX);
301 RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 10, 1);
303 "Capture Distance",
304 "Distance around the probe volume that will be considered "
305 "during the bake");
306 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
307
308 prop = RNA_def_property(srna, "normal_bias", PROP_FLOAT, PROP_FACTOR);
309 RNA_def_property_float_sdna(prop, nullptr, "grid_normal_bias");
311 "Normal Bias",
312 "Offset sampling of the irradiance grid in "
313 "the surface normal direction to reduce light bleeding");
314 RNA_def_property_range(prop, 0.0f, FLT_MAX);
315 RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
316 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
317
318 prop = RNA_def_property(srna, "view_bias", PROP_FLOAT, PROP_FACTOR);
319 RNA_def_property_float_sdna(prop, nullptr, "grid_view_bias");
321 "View Bias",
322 "Offset sampling of the irradiance grid in "
323 "the viewing direction to reduce light bleeding");
324 RNA_def_property_range(prop, 0.0f, FLT_MAX);
325 RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
326 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
327
328 prop = RNA_def_property(srna, "facing_bias", PROP_FLOAT, PROP_FACTOR);
329 RNA_def_property_float_sdna(prop, nullptr, "grid_facing_bias");
331 prop, "Facing Bias", "Smoother irradiance interpolation but introduce light bleeding");
332 RNA_def_property_range(prop, 0.0f, FLT_MAX);
333 RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
334 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
335
336 prop = RNA_def_property(srna, "bake_samples", PROP_INT, PROP_NONE);
337 RNA_def_property_int_sdna(prop, nullptr, "grid_bake_samples");
339 prop, "Bake Samples", "Number of ray directions to evaluate when baking");
340 RNA_def_property_range(prop, 1, INT_MAX);
341 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
342
343 prop = RNA_def_property(srna, "surface_bias", PROP_FLOAT, PROP_FACTOR);
344 RNA_def_property_float_sdna(prop, nullptr, "grid_surface_bias");
346 prop, "Surface Offset", "Moves capture points away from surfaces to prevent artifacts");
347 RNA_def_property_range(prop, 0.0f, 1.0f);
348 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
349
350 prop = RNA_def_property(srna, "escape_bias", PROP_FLOAT, PROP_FACTOR);
351 RNA_def_property_float_sdna(prop, nullptr, "grid_escape_bias");
353 "Search Distance",
354 "Distance to search for valid capture positions to prevent "
355 "lighting artifacts");
356 RNA_def_property_range(prop, 0.0f, 1.0f);
357 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
358
359 prop = RNA_def_property(srna, "surfel_density", PROP_INT, PROP_NONE);
360 RNA_def_property_int_sdna(prop, nullptr, "grid_surfel_density");
361 RNA_def_property_range(prop, 1, INT_MAX);
363 prop,
364 "Surfel Resolution",
365 "Number of surfels to spawn in one local unit distance (higher values improve quality)");
366 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
367
368 prop = RNA_def_property(srna, "validity_threshold", PROP_FLOAT, PROP_FACTOR);
369 RNA_def_property_float_sdna(prop, nullptr, "grid_validity_threshold");
371 "Validity Threshold",
372 "Ratio of front-facing surface hits under which a grid sample will "
373 "not be considered for lighting");
374 RNA_def_property_range(prop, 0.0f, 1.0f);
375 RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
376 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
377
378 prop = RNA_def_property(srna, "dilation_threshold", PROP_FLOAT, PROP_FACTOR);
379 RNA_def_property_float_sdna(prop, nullptr, "grid_dilation_threshold");
381 "Dilation Threshold",
382 "Ratio of front-facing surface hits under which a grid sample will "
383 "reuse neighbors grid sample lighting");
384 RNA_def_property_range(prop, 0.0f, 1.0f);
385 RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
386 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
387
388 prop = RNA_def_property(srna, "dilation_radius", PROP_FLOAT, PROP_FACTOR);
389 RNA_def_property_float_sdna(prop, nullptr, "grid_dilation_radius");
391 prop,
392 "Dilation Radius",
393 "Radius in grid sample to search valid grid samples to copy into invalid grid samples");
394 RNA_def_property_range(prop, 1.0f, 5.0f);
395 RNA_def_property_ui_range(prop, 1.0f, 5.0f, 1, 2);
396 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
397
398 prop = RNA_def_property(srna, "capture_world", PROP_BOOLEAN, PROP_NONE);
401 prop,
402 "Capture World",
403 "Bake incoming light from the world instead of just the visibility "
404 "for more accurate lighting, but lose correct blending to surrounding irradiance volumes");
406
407 prop = RNA_def_property(srna, "capture_indirect", PROP_BOOLEAN, PROP_NONE);
410 "Capture Indirect",
411 "Bake light bounces from light sources for more accurate lighting");
413
414 prop = RNA_def_property(srna, "capture_emission", PROP_BOOLEAN, PROP_NONE);
417 prop, "Capture Emission", "Bake emissive surfaces for more accurate lighting");
419
420 prop = RNA_def_property(srna, "clamp_direct", PROP_FLOAT, PROP_NONE);
421 RNA_def_property_float_sdna(prop, nullptr, "grid_clamp_direct");
422 RNA_def_property_range(prop, 0.0f, FLT_MAX);
423 RNA_def_property_ui_range(prop, 0.0f, FLT_MAX, 1, 2);
425 prop, "Clamp Direct", "Clamp the direct lighting intensity to reduce noise (0 to disable)");
426 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
427
428 prop = RNA_def_property(srna, "clamp_indirect", PROP_FLOAT, PROP_NONE);
429 RNA_def_property_float_sdna(prop, nullptr, "grid_clamp_indirect");
430 RNA_def_property_range(prop, 0.0f, FLT_MAX);
431 RNA_def_property_ui_range(prop, 0.0f, FLT_MAX, 1, 2);
433 "Clamp Indirect",
434 "Clamp the indirect lighting intensity to reduce noise (0 to disable)");
435 RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
436}
437
445
446#endif
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_GEOMETRY
Definition DNA_ID.h:1041
Object groups, one object can be in many groups at once.
@ LIGHTPROBE_GRID_CAPTURE_EMISSION
@ LIGHTPROBE_GRID_CAPTURE_WORLD
@ LIGHTPROBE_GRID_CAPTURE_INDIRECT
@ LIGHTPROBE_SHAPE_BOX
@ LIGHTPROBE_SHAPE_ELIPSOID
@ LIGHTPROBE_FLAG_SHOW_PARALLAX
@ LIGHTPROBE_FLAG_SHOW_CLIP_DIST
@ LIGHTPROBE_FLAG_SHOW_INFLUENCE
@ LIGHTPROBE_FLAG_INVERT_GROUP
@ LIGHTPROBE_FLAG_SHOW_DATA
@ LIGHTPROBE_FLAG_CUSTOM_PARALLAX
@ LIGHTPROBE_TYPE_PLANE
@ LIGHTPROBE_TYPE_VOLUME
@ LIGHTPROBE_TYPE_SPHERE
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
@ PROP_FLOAT
Definition RNA_types.hh:67
@ PROP_BOOLEAN
Definition RNA_types.hh:65
@ PROP_ENUM
Definition RNA_types.hh:69
@ PROP_INT
Definition RNA_types.hh:66
@ PROP_POINTER
Definition RNA_types.hh:70
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
Definition RNA_types.hh:355
@ PROP_EDITABLE
Definition RNA_types.hh:207
@ PROP_DISTANCE
Definition RNA_types.hh:159
@ PROP_NONE
Definition RNA_types.hh:136
@ PROP_FACTOR
Definition RNA_types.hh:154
#define ND_SHADING
Definition WM_types.hh:444
#define NC_MATERIAL
Definition WM_types.hh:347
void rna_def_animdata_common(StructRNA *srna)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_lightprobe(BlenderRNA *brna)
static EnumPropertyItem parallax_type_items[]
static void rna_def_lightprobe_plane(BlenderRNA *brna)
static EnumPropertyItem lightprobe_type_items[]
static void rna_def_lightprobe_sphere(BlenderRNA *brna)
static void rna_def_lightprobe_volume(BlenderRNA *brna)
static void rna_def_lightprobe(BlenderRNA *brna)
#define FLT_MAX
Definition stdcycles.h:14
ID * owner_id
Definition RNA_types.hh:40
void * data
Definition RNA_types.hh:42
PointerRNA * ptr
Definition wm_files.cc:4126