Blender V5.0
DNA_scene_defaults.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_view3d_defaults.h"
12
13/* clang-format off */
14
15/* -------------------------------------------------------------------- */
18
19#define _DNA_DEFAULT_ImageFormatData \
20 { \
21 .planes = R_IMF_PLANES_RGBA, \
22 .imtype = R_IMF_IMTYPE_PNG, \
23 .depth = R_IMF_CHAN_DEPTH_8, \
24 .quality = 90, \
25 .compress = 15, \
26 .exr_flag = R_IMF_EXR_FLAG_MULTIPART, \
27 }
28
29#define _DNA_DEFAULT_BakeData \
30 { \
31 .im_format = _DNA_DEFAULT_ImageFormatData, \
32 .filepath = "//", \
33 .type = R_BAKE_NORMALS, \
34 .flag = R_BAKE_CLEAR, \
35 .pass_filter = R_BAKE_PASS_FILTER_ALL, \
36 .width = 512, \
37 .height = 512, \
38 .margin = 16, \
39 .margin_type = R_BAKE_ADJACENT_FACES, \
40 .normal_space = R_BAKE_SPACE_TANGENT, \
41 .normal_swizzle = {R_BAKE_POSX, R_BAKE_POSY, R_BAKE_POSZ}, \
42 .displacement_space = R_BAKE_SPACE_OBJECT, \
43 }
44
45#define _DNA_DEFAULT_FFMpegCodecData \
46 { \
47 .audio_mixrate = 48000, \
48 .audio_volume = 1.0f, \
49 .audio_bitrate = 192, \
50 .audio_channels = 2, \
51 }
52
53#define _DNA_DEFAULT_DisplaySafeAreas \
54 { \
55 .title = {10.0f / 100.0f, 5.0f / 100.0f}, \
56 .action = {3.5f / 100.0f, 3.5f / 100.0f}, \
57 .title_center = {17.5f / 100.0f, 5.0f / 100.0f}, \
58 .action_center = {15.0f / 100.0f, 5.0f / 100.0f}, \
59 }
60
61#define _DNA_DEFAULT_RenderData \
62 { \
63 .mode = 0, \
64 .cfra = 1, \
65 .sfra = 1, \
66 .efra = 250, \
67 .frame_step = 1, \
68 .time_jump_delta = 1.0, \
69 .time_jump_unit = 1, \
70 .xsch = 1920, \
71 .ysch = 1080, \
72 .xasp = 1, \
73 .yasp = 1, \
74 .ppm_factor = 72.0f, \
75 .ppm_base = 0.0254f, \
76 .tilex = 256, \
77 .tiley = 256, \
78 .size = 100, \
79 \
80 .im_format = _DNA_DEFAULT_ImageFormatData, \
81 \
82 .framapto = 100, \
83 .images = 100, \
84 .framelen = 1.0, \
85 .frs_sec = 24, \
86 .frs_sec_base = 1, \
87 \
88 /* OCIO_TODO: for forwards compatibility only, so if no tone-curve are used, \
89 * images would look in the same way as in current blender \
90 * \
91 * perhaps at some point should be completely deprecated? \
92 */ \
93 .color_mgt_flag = R_COLOR_MANAGEMENT, \
94 \
95 .gauss = 1.5, \
96 .dither_intensity = 1.0f, \
97 \
98 /* BakeData */ \
99 .bake = _DNA_DEFAULT_BakeData, \
100 \
101 .scemode = R_DOCOMP | R_DOSEQ | R_EXTENSION, \
102 \
103 .pic = "//", \
104 \
105 .stamp = R_STAMP_TIME | R_STAMP_FRAME | R_STAMP_DATE | R_STAMP_CAMERA | R_STAMP_SCENE | \
106 R_STAMP_FILENAME | R_STAMP_RENDERTIME | R_STAMP_MEMORY, \
107 .stamp_font_id = 12, \
108 .fg_stamp = {0.8f, 0.8f, 0.8f, 1.0f}, \
109 .bg_stamp = {0.0f, 0.0f, 0.0f, 0.25f}, \
110 \
111 .seq_prev_type = OB_SOLID, \
112 .seq_rend_type = OB_SOLID, \
113 .seq_flag = 0, \
114 \
115 .threads = 1, \
116 \
117 .simplify_subsurf = 6, \
118 .simplify_particles = 1.0f, \
119 .simplify_volumes = 1.0f, \
120 \
121 .border.xmin = 0.0f, \
122 .border.ymin = 0.0f, \
123 .border.xmax = 1.0f, \
124 .border.ymax = 1.0f, \
125 \
126 .line_thickness_mode = R_LINE_THICKNESS_ABSOLUTE, \
127 .unit_line_thickness = 1.0f, \
128 \
129 .ffcodecdata = _DNA_DEFAULT_FFMpegCodecData, \
130 \
131 .motion_blur_shutter = 0.5f, \
132\
133 .compositor_denoise_final_quality = SCE_COMPOSITOR_DENOISE_HIGH, \
134 .compositor_denoise_preview_quality = SCE_COMPOSITOR_DENOISE_BALANCED, \
135 }
136
137#define _DNA_DEFAULT_AudioData \
138 { \
139 .distance_model = 2.0f, \
140 .doppler_factor = 1.0f, \
141 .speed_of_sound = 343.3f, \
142 .volume = 1.0f, \
143 .flag = AUDIO_SYNC, \
144 }
145
146#define _DNA_DEFAULT_SceneDisplay \
147 { \
148 .light_direction = {M_SQRT1_3, M_SQRT1_3, M_SQRT1_3}, \
149 .shadow_shift = 0.1f, \
150 .shadow_focus = 0.0f, \
151 \
152 .matcap_ssao_distance = 0.2f, \
153 .matcap_ssao_attenuation = 1.0f, \
154 .matcap_ssao_samples = 16, \
155 \
156 .shading = _DNA_DEFAULT_View3DShading, \
157 \
158 .render_aa = SCE_DISPLAY_AA_SAMPLES_8, \
159 .viewport_aa = SCE_DISPLAY_AA_FXAA, \
160 }
161
162#define _DNA_DEFAULT_RaytraceEEVEE \
163 { \
164 .flag = RAYTRACE_EEVEE_USE_DENOISE, \
165 .denoise_stages = RAYTRACE_EEVEE_DENOISE_SPATIAL | \
166 RAYTRACE_EEVEE_DENOISE_TEMPORAL | \
167 RAYTRACE_EEVEE_DENOISE_BILATERAL, \
168 .screen_trace_quality = 0.25f, \
169 .screen_trace_thickness = 0.2f, \
170 .trace_max_roughness = 0.5f, \
171 .resolution_scale = 2, \
172 }
173
174#define _DNA_DEFAULT_PhysicsSettings \
175 { \
176 .gravity = {0.0f, 0.0f, -9.81f}, \
177 .flag = PHYS_GLOBAL_GRAVITY, \
178 }
179
180#define _DNA_DEFAULT_SceneEEVEE \
181 { \
182 .gi_diffuse_bounces = 3, \
183 .gi_cubemap_resolution = 512, \
184 .gi_visibility_resolution = 32, \
185 .gi_irradiance_pool_size = 16, \
186 .shadow_pool_size = 512, \
187 \
188 .taa_samples = 16, \
189 .taa_render_samples = 64, \
190 \
191 .volumetric_start = 0.1f, \
192 .volumetric_end = 100.0f, \
193 .volumetric_tile_size = 8, \
194 .volumetric_samples = 64, \
195 .volumetric_sample_distribution = 0.8f, \
196 .volumetric_ray_depth = 16, \
197 .volumetric_light_clamp = 0.0f, \
198 .volumetric_shadow_samples = 16, \
199 \
200 .fast_gi_bias = 0.05f, \
201 .fast_gi_resolution = 2, \
202 .fast_gi_step_count = 8, \
203 .fast_gi_ray_count = 2, \
204 .fast_gi_quality = 0.25f, \
205 .fast_gi_distance = 0.0f, \
206 .fast_gi_thickness_near = 0.25f, \
207 .fast_gi_thickness_far = DEG2RAD(45), \
208 .fast_gi_method = FAST_GI_FULL, \
209 \
210 .bokeh_overblur = 5.0f, \
211 .bokeh_max_size = 100.0f, \
212 .bokeh_threshold = 1.0f, \
213 .bokeh_neighbor_max = 10.0f, \
214 \
215 .motion_blur_depth_scale = 100.0f, \
216 .motion_blur_max = 32, \
217 .motion_blur_steps = 1, \
218 \
219 .clamp_surface_indirect = 10.0f, \
220\
221 .shadow_ray_count = 1, \
222 .shadow_step_count = 6, \
223 .shadow_resolution_scale = 1.0f, \
224 \
225 .ray_tracing_method = RAYTRACE_EEVEE_METHOD_SCREEN, \
226 \
227 .ray_tracing_options = _DNA_DEFAULT_RaytraceEEVEE, \
228 \
229 .light_threshold = 0.01f, \
230 \
231 .overscan = 3.0f, \
233 .flag = SCE_EEVEE_TAA_REPROJECTION | SCE_EEVEE_SHADOW_ENABLED, \
234 }
235
236#define _DNA_DEFAULT_SceneGreasePencil \
237 { \
238 .smaa_threshold = 1.0f, \
239 .smaa_threshold_render = 0.25f, \
240 .aa_samples = 8, \
241 .motion_blur_steps = 8, \
242 }
243
244#define _DNA_DEFAULT_SceneHydra \
245 { \
246 .export_method = SCE_HYDRA_EXPORT_HYDRA, \
247 }
248
249#define _DNA_DEFAULT_Scene \
250 { \
251 .cursor = _DNA_DEFAULT_View3DCursor, \
252 .r = _DNA_DEFAULT_RenderData, \
253 .audio = _DNA_DEFAULT_AudioData, \
254 \
255 .display = _DNA_DEFAULT_SceneDisplay, \
256 \
257 .physics_settings = _DNA_DEFAULT_PhysicsSettings, \
258 \
259 .safe_areas = _DNA_DEFAULT_DisplaySafeAreas, \
260 \
261 .eevee = _DNA_DEFAULT_SceneEEVEE, \
262 \
263 .grease_pencil_settings = _DNA_DEFAULT_SceneGreasePencil, \
264 \
265 .hydra = _DNA_DEFAULT_SceneHydra, \
266 .simulation_frame_start = 1, \
267 .simulation_frame_end = 250, \
268 }
269
271
272/* -------------------------------------------------------------------- */
275
276#define _DNA_DEFAULTS_CurvePaintSettings \
277 { \
278 .curve_type = CU_BEZIER, \
279 .flag = CURVE_PAINT_FLAG_CORNERS_DETECT, \
280 .error_threshold = 8, \
281 .radius_max = 1.0f, \
282 .corner_angle = DEG2RADF(70.0f), \
283 }
284
285#define _DNA_DEFAULTS_ImagePaintSettings \
286 { \
287 .paint = { \
288 .flags = PAINT_SHOW_BRUSH, \
289 .unified_paint_settings = _DNA_DEFAULTS_UnifiedPaintSettings, \
290 }, \
291 .normal_angle = 80, \
292 .seam_bleed = 2, \
293 .clone_alpha = 0.5f, \
294 }
295
296#define _DNA_DEFAULTS_ParticleBrushData \
297 { \
298 .strength = 0.5f, \
299 .size = 50, \
300 .step = 10, \
301 .count = 10, \
302 }
303
304#define _DNA_DEFAULTS_UnifiedPaintSettings \
305 { \
306 .size = 100, \
307 .input_samples = 1, \
308 .unprojected_size = 0.58, \
309 .alpha = 0.5f, \
310 .weight = 0.5f, \
311 .color = {0.0f, 0.0f, 0.0f}, \
312 .secondary_color = {1.0f, 1.0f, 1.0f}, \
313 .rgb = {0.0f, 0.0f, 0.0f}, \
314 .secondary_rgb = {1.0f, 1.0f, 1.0f}, \
315 .flag = UNIFIED_PAINT_SIZE | UNIFIED_PAINT_COLOR, \
316 }
317
318#define _DNA_DEFAULTS_ParticleEditSettings \
319 { \
320 .flag = PE_KEEP_LENGTHS | PE_LOCK_FIRST | PE_DEFLECT_EMITTER | PE_AUTO_VELOCITY, \
321 .emitterdist = 0.25f, \
322 .totrekey = 5, \
323 .totaddkey = 5, \
324 .brushtype = PE_BRUSH_COMB, \
325 \
326 /* Scene init copies this to all other elements. */ \
327 .brush = {_DNA_DEFAULTS_ParticleBrushData}, \
328 \
329 .draw_step = 2, \
330 .fade_frames = 2, \
331 .selectmode = SCE_SELECT_PATH, \
332 }
333
334#define _DNA_DEFAULTS_GP_Sculpt_Guide \
335 { \
336 .spacing = 20.0f, \
337 }
338
339#define _DNA_DEFAULTS_GP_Sculpt_Settings \
340 { \
341 .guide = _DNA_DEFAULTS_GP_Sculpt_Guide, \
342 }
343
344#define _DNA_DEFAULTS_MeshStatVis \
345 { \
346 .overhang_axis = OB_NEGZ, \
347 .overhang_min = 0, \
348 .overhang_max = DEG2RADF(45.0f), \
349 .thickness_max = 0.1f, \
350 .thickness_samples = 1, \
351 .distort_min = DEG2RADF(5.0f), \
352 .distort_max = DEG2RADF(45.0f), \
353 \
354 .sharp_min = DEG2RADF(90.0f), \
355 .sharp_max = DEG2RADF(180.0f), \
356 }
357
358#define _DNA_DEFAULTS_UvSculpt \
359 { \
360 .size = 100, \
361 .strength = 1.0f, \
362 .curve_distance_falloff_preset = BRUSH_CURVE_SMOOTH, \
363 }
364
365#define _DNA_DEFAULT_ToolSettings \
366 { \
367 .object_flag = SCE_OBJECT_MODE_LOCK, \
368 .doublimit = 0.001, \
369 .vgroup_weight = 1.0f, \
370 \
371 .uvcalc_margin = 0.001f, \
372 .uvcalc_flag = UVCALC_TRANSFORM_CORRECT_SLIDE, \
373 .unwrapper = UVCALC_UNWRAP_METHOD_CONFORMAL, \
374 .uvcalc_iterations = 10, \
375 /* See struct member doc-string regarding this name. */ \
376 .uvcalc_weight_group = "uv_importance", \
377 .uvcalc_weight_factor = 1.0, \
378 \
379 .select_thresh = 0.01f, \
380 \
381 .selectmode = SCE_SELECT_VERTEX, \
382 .uv_flag = UV_FLAG_SELECT_SYNC, \
383 .uv_selectmode = UV_SELECT_VERT, \
384 .autokey_mode = AUTOKEY_MODE_NORMAL, \
385 \
386 .transform_pivot_point = V3D_AROUND_CENTER_MEDIAN, \
387 .snap_mode = SCE_SNAP_TO_INCREMENT, \
388 .snap_node_mode = SCE_SNAP_TO_GRID, \
389 .snap_uv_mode = SCE_SNAP_TO_INCREMENT, \
390 .snap_anim_mode = SCE_SNAP_TO_FRAME, \
391 .snap_playhead_mode = SCE_SNAP_TO_KEYS | SCE_SNAP_TO_STRIPS, \
392 .snap_step_frames = 2, \
393 .snap_step_seconds = 1, \
394 .playhead_snap_distance = 20, \
395 .snap_flag = SCE_SNAP_TO_INCLUDE_EDITED | SCE_SNAP_TO_INCLUDE_NONEDITED, \
396 .snap_flag_anim = SCE_SNAP, \
397 .snap_flag_playhead = 0, \
398 .snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE, \
399 .snap_face_nearest_steps = 1, \
400 .snap_angle_increment_3d = DEG2RADF(5.0f), \
401 .snap_angle_increment_2d = DEG2RADF(5.0f), \
402 .snap_angle_increment_3d_precision = DEG2RADF(1.0f), \
403 .snap_angle_increment_2d_precision = DEG2RADF(1.0f), \
404 \
405 .snap_flag_seq = SCE_SNAP, \
406 /* Weight Paint */ \
407 .weightuser = OB_DRAW_GROUPUSER_ACTIVE, \
408 \
409 .curve_paint_settings = _DNA_DEFAULTS_CurvePaintSettings, \
410 \
411 .unified_paint_settings = _DNA_DEFAULTS_UnifiedPaintSettings, \
412 \
413 .statvis = _DNA_DEFAULTS_MeshStatVis, \
414 \
415 .proportional_size = 1.0f, \
416 \
417 .imapaint = _DNA_DEFAULTS_ImagePaintSettings, \
418 \
419 .particle = _DNA_DEFAULTS_ParticleEditSettings, \
420 \
421 .gp_sculpt = _DNA_DEFAULTS_GP_Sculpt_Settings, \
422 \
423 /* Annotations */ \
424 .annotate_v3d_align = GP_PROJECT_VIEWSPACE | GP_PROJECT_CURSOR, \
425 .annotate_thickness = 3, \
426 \
427 /* GP Stroke Placement */ \
428 .gpencil_v3d_align = GP_PROJECT_VIEWSPACE, \
429 .gpencil_v2d_align = GP_PROJECT_VIEWSPACE, \
430 \
431 /* UV painting */ \
432 .uvsculpt = _DNA_DEFAULTS_UvSculpt, \
433 .uv_sculpt_settings = 0, \
434 \
435 /* Placement */ \
436 .snap_mode_tools = SCE_SNAP_TO_GEOM,\
437 .plane_axis = 2,\
438\
439 /* Animation */ \
440 .fix_to_cam_flag = FIX_TO_CAM_FLAG_USE_LOC | FIX_TO_CAM_FLAG_USE_ROT | FIX_TO_CAM_FLAG_USE_SCALE, \
441 }
442
443#define _DNA_DEFAULT_Sculpt \
444 { \
445 .detail_size = 12,\
446 .detail_percent = 25,\
447 .constant_detail = 3.0f,\
448 .automasking_start_normal_limit = 0.34906585f, /* 20 / 180 * pi. */ \
449 .automasking_start_normal_falloff = 0.25f, \
450 .automasking_view_normal_limit = 1.570796, /* 0.5 * pi. */ \
451 .automasking_view_normal_falloff = 0.25f, \
452 .automasking_boundary_edges_propagation_steps = 1, \
453 .flags = SCULPT_DYNTOPO_SUBDIVIDE | SCULPT_DYNTOPO_COLLAPSE,\
454 .paint = {\
455 .unified_paint_settings = _DNA_DEFAULTS_UnifiedPaintSettings, \
456 .symmetry_flags = PAINT_SYMMETRY_FEATHER,\
457 .tile_offset = {1.0f, 1.0f, 1.0f},\
458 }\
459 }
460/* clang-format off */
461