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