@@ -13,6 +13,11 @@ char *manifest_url = "https://armorpaint.org";
1313char * manifest_url_android = "https://play.google.com/store/apps/details?id=org.armorpaint" ;
1414char * manifest_url_ios = "https://apps.apple.com/app/armorpaint/id1533967534" ;
1515
16+ context_t * g_context ;
17+ project_t * g_project ;
18+ config_t * g_config ;
19+ ui_t * ui ;
20+
1621any_map_t * ui_children ;
1722any_map_t * ui_nodes_custom_buttons ;
1823gpu_texture_t * lut_image = NULL ;
@@ -24,7 +29,6 @@ gpu_texture_t *layers_expc = NULL;
2429f32 layers_default_base = 0.5 ;
2530f32 layers_default_rough = 0.4 ;
2631any_map_t * operator_ops ;
27- config_t * g_config = NULL ;
2832any_map_t * config_keymap ;
2933ui_align_t config_button_align = UI_ALIGN_LEFT ;
3034char * config_button_spacing = " " ;
@@ -103,41 +107,40 @@ char *ui_files_default_path = "/Users";
103107char * ui_files_default_path = "/" ;
104108#endif
105109
106- char * ui_files_filename ;
107- char * ui_files_path ;
108- char * ui_files_last_path = "" ;
109- bool base_ui_enabled = true;
110- bool base_view3d_show = true;
111- bool base_is_dragging = false;
112- bool base_is_resizing = false;
113- asset_t * base_drag_asset = NULL ;
114- swatch_color_t * base_drag_swatch = NULL ;
115- char * base_drag_file = NULL ;
116- gpu_texture_t * base_drag_file_icon = NULL ;
117- f32 base_drag_off_x = 0.0 ;
118- f32 base_drag_off_y = 0.0 ;
119- draw_font_t * base_font = NULL ;
120- ui_theme_t * base_theme ;
121- i32 base_default_element_w = 100 ;
122- i32 base_default_element_h = 28 ;
123- i32 base_default_font_size = 13 ;
124- ui_handle_t * base_res_handle ;
125- ui_handle_t * base_res_x_handle ;
126- ui_handle_t * base_res_y_handle ;
127- ui_handle_t * base_bits_handle ;
128- string_array_t * base_drop_paths ;
129- slot_material_t * base_drag_material = NULL ;
130- slot_layer_t * base_drag_layer = NULL ;
131- slot_brush_t * base_drag_brush = NULL ;
132- slot_font_t * base_drag_font = NULL ;
133- bool base_player_lock = false;
134- ui_t * ui ;
110+ char * ui_files_filename ;
111+ char * ui_files_path ;
112+ char * ui_files_last_path = "" ;
113+ bool base_ui_enabled = true;
114+ bool base_view3d_show = true;
115+ bool base_is_dragging = false;
116+ bool base_is_resizing = false;
117+ asset_t * base_drag_asset = NULL ;
118+ swatch_color_t * base_drag_swatch = NULL ;
119+ char * base_drag_file = NULL ;
120+ gpu_texture_t * base_drag_file_icon = NULL ;
121+ f32 base_drag_off_x = 0.0 ;
122+ f32 base_drag_off_y = 0.0 ;
123+ draw_font_t * base_font = NULL ;
124+ ui_theme_t * base_theme ;
125+ i32 base_default_element_w = 100 ;
126+ i32 base_default_element_h = 28 ;
127+ i32 base_default_font_size = 13 ;
128+ ui_handle_t * base_res_handle ;
129+ ui_handle_t * base_res_x_handle ;
130+ ui_handle_t * base_res_y_handle ;
131+ ui_handle_t * base_bits_handle ;
132+ string_array_t * base_drop_paths ;
133+ slot_material_t * base_drag_material = NULL ;
134+ slot_layer_t * base_drag_layer = NULL ;
135+ slot_brush_t * base_drag_brush = NULL ;
136+ slot_font_t * base_drag_font = NULL ;
137+ bool base_player_lock = false;
138+
135139bool ui_base_show = true;
136140i32 ui_base_viewport_col ;
137141ui_handle_t_array_t * ui_base_hwnds ;
138142ui_handle_t_array_t * ui_base_htabs ;
139143tab_draw_array_t_array_t * ui_base_hwnd_tabs ;
140- context_t * g_context ;
141144i32 ui_toolbar_default_w = 36 ;
142145ui_handle_t * ui_toolbar_handle ;
143146string_array_t * ui_toolbar_tool_names ;
@@ -171,22 +174,16 @@ bool ui_menu_show_first = true;
171174i32 render_path_base_bloom_current_mip = 0 ;
172175f32 render_path_base_bloom_sample_scale ;
173176bool render_path_base_buf_swapped = false;
174- project_t * g_project ;
175- char * project_filepath = "" ;
177+ char * project_filepath = "" ;
176178asset_t_array_t * project_assets ;
177- string_array_t * project_asset_names ;
178179i32 project_asset_id = 0 ;
179- string_array_t * project_mesh_assets ;
180180node_group_t_array_t * project_material_groups ;
181181mesh_object_t_array_t * project_paint_objects = NULL ;
182- any_imap_t * project_asset_map ; // gpu_texture_t | font_t
183182string_array_t * project_mesh_list = NULL ;
184183slot_material_t_array_t * project_materials ;
185184slot_brush_t_array_t * project_brushes ;
186185slot_layer_t_array_t * project_layers ;
187186slot_font_t_array_t * project_fonts ;
188- i32_array_t * project_atlas_objects = NULL ;
189- string_array_t * project_atlas_names = NULL ;
190187gpu_pipeline_t * ui_view2d_pipe ;
191188i32 ui_view2d_channel_loc ;
192189view_2d_type_t ui_view2d_type = VIEW_2D_TYPE_LAYER ;
@@ -300,6 +297,98 @@ ui_node_t_array_t *nodes_material_neural;
300297ui_node_t_array_t * nodes_material_group ;
301298node_list_t_array_t * nodes_material_list = NULL ;
302299i32 make_mesh_layer_pass_count = 1 ;
300+
301+ i32 ui_sidebar_default_w_mini = 56 ;
302+ i32 ui_sidebar_default_w_full = 280 ;
303+ i32 ui_sidebar_default_w ;
304+ ui_handle_t * ui_sidebar_hminimized ;
305+ i32 ui_sidebar_w_mini ;
306+ char * console_message = "" ;
307+ f32 console_message_timer = 0.0 ;
308+ i32 console_message_color = 0x00000000 ;
309+ string_array_t * console_last_traces ;
310+ vec4_t camera_origins [2 ];
311+ mat4_t camera_views [2 ];
312+ ui_handle_t * box_preferences_htab ;
313+ string_array_t * box_preferences_files_plugin = NULL ;
314+ ui_handle_t * box_preferences_h_theme ;
315+ ui_handle_t * box_preferences_h_preset ;
316+ slot_layer_t * render_path_paint_live_layer = NULL ;
317+ i32 render_path_paint_live_layer_drawn = 0 ;
318+ bool render_path_paint_live_layer_locked = false;
319+ bool render_path_paint_push_undo_last ;
320+ bool ui_box_show = false;
321+ ui_handle_t * ui_box_hwnd ;
322+ bool ui_box_click_to_hide = true;
323+ i32 ui_box_modalw = 400 ;
324+ i32 ui_box_modalh = 170 ;
325+ ui_handle_t * tab_layers_layer_name_handle ;
326+ gpu_texture_t * util_uv_uvmap = NULL ;
327+ bool util_uv_uvmap_cached = false;
328+ gpu_texture_t * util_uv_trianglemap = NULL ;
329+ bool util_uv_trianglemap_cached = false;
330+ gpu_texture_t * util_uv_dilatemap = NULL ;
331+ bool util_uv_dilatemap_cached = false;
332+ gpu_texture_t * util_uv_uvislandmap = NULL ;
333+ bool util_uv_uvislandmap_cached = false;
334+ i32 render_path_raytrace_frame = 0 ;
335+ bool render_path_raytrace_ready = false;
336+ bool render_path_raytrace_init_shader = true;
337+ f32_array_t * render_path_raytrace_f32a ;
338+ mat4_t render_path_raytrace_help_mat ;
339+ gpu_texture_t * render_path_raytrace_last_envmap = NULL ;
340+ bool render_path_raytrace_is_bake = false;
341+
342+ #ifdef IRON_DIRECT3D12
343+ char * render_path_raytrace_ext = ".cso" ;
344+ #elif defined(IRON_METAL )
345+ char * render_path_raytrace_ext = ".metal" ;
346+ #else
347+ char * render_path_raytrace_ext = ".spirv" ;
348+ #endif
349+
350+ bool sculpt_push_undo = false;
351+ i32 ui_statusbar_default_h = 33 ;
352+ char * parser_material_bake_passthrough_strength = "0.0" ;
353+ char * parser_material_bake_passthrough_radius = "0.0" ;
354+ char * parser_material_bake_passthrough_offset = "0.0" ;
355+
356+ any_imap_t * neural_node_results ;
357+ ui_node_t * neural_node_current ;
358+ i32 neural_node_downloading = 0 ;
359+ neural_node_model_t_array_t * neural_node_models = NULL ;
360+
361+ char * str_hue_sat = "\
362+ fun hsv_to_rgb(c: float3): float3 { \
363+ var K: float4 = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); \
364+ var p: float3 = abs3(frac3(c.xxx + K.xyz) * 6.0 - K.www); \
365+ return lerp3(K.xxx, clamp3(p - K.xxx, float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0)), c.y) * c.z; \
366+ } \
367+ fun rgb_to_hsv(c: float3): float3 { \
368+ var K: float4 = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); \
369+ var p: float4 = lerp4(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); \
370+ var q: float4 = lerp4(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); \
371+ var d: float = q.x - min(q.w, q.y); \
372+ var e: float = 0.0000000001; \
373+ return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); \
374+ } \
375+ fun hue_sat(col: float3, shift: float4): float3 { \
376+ var hsv: float3 = rgb_to_hsv(col); \
377+ hsv.x += shift.x; \
378+ hsv.y *= shift.y; \
379+ hsv.z *= shift.z; \
380+ return lerp3(hsv_to_rgb(hsv), col, shift.w); \
381+ } \
382+ " ;
383+
384+ char * str_brightcontrast = "\
385+ fun brightcontrast(col: float3, bright: float, contr: float): float3 { \
386+ var a: float = 1.0 + contr; \
387+ var b: float = bright - contr * 0.5; \
388+ return max3(a * col + b, float3(0.0, 0.0, 0.0)); \
389+ } \
390+ " ;
391+
303392char * str_cotangent_frame = "\
304393fun cotangent_frame(n: float3, p: float3, tex_coord: float2): float3x3 { \
305394 var duv1: float2 = ddx2(tex_coord); \
@@ -404,93 +493,3 @@ fun dither_bayer(uv: float2): float { \
404493 return 5.0 / 16.0; \
405494} \
406495" ;
407- i32 ui_sidebar_default_w_mini = 56 ;
408- i32 ui_sidebar_default_w_full = 280 ;
409- i32 ui_sidebar_default_w ;
410- ui_handle_t * ui_sidebar_hminimized ;
411- i32 ui_sidebar_w_mini ;
412- char * console_message = "" ;
413- f32 console_message_timer = 0.0 ;
414- i32 console_message_color = 0x00000000 ;
415- string_array_t * console_last_traces ;
416- vec4_t camera_origins [2 ];
417- mat4_t camera_views [2 ];
418- ui_handle_t * box_preferences_htab ;
419- string_array_t * box_preferences_files_plugin = NULL ;
420- ui_handle_t * box_preferences_h_theme ;
421- ui_handle_t * box_preferences_h_preset ;
422- slot_layer_t * render_path_paint_live_layer = NULL ;
423- i32 render_path_paint_live_layer_drawn = 0 ;
424- bool render_path_paint_live_layer_locked = false;
425- bool render_path_paint_push_undo_last ;
426- bool ui_box_show = false;
427- ui_handle_t * ui_box_hwnd ;
428- bool ui_box_click_to_hide = true;
429- i32 ui_box_modalw = 400 ;
430- i32 ui_box_modalh = 170 ;
431- ui_handle_t * tab_layers_layer_name_handle ;
432- gpu_texture_t * util_uv_uvmap = NULL ;
433- bool util_uv_uvmap_cached = false;
434- gpu_texture_t * util_uv_trianglemap = NULL ;
435- bool util_uv_trianglemap_cached = false;
436- gpu_texture_t * util_uv_dilatemap = NULL ;
437- bool util_uv_dilatemap_cached = false;
438- gpu_texture_t * util_uv_uvislandmap = NULL ;
439- bool util_uv_uvislandmap_cached = false;
440- i32 render_path_raytrace_frame = 0 ;
441- bool render_path_raytrace_ready = false;
442- bool render_path_raytrace_init_shader = true;
443- f32_array_t * render_path_raytrace_f32a ;
444- mat4_t render_path_raytrace_help_mat ;
445- gpu_texture_t * render_path_raytrace_last_envmap = NULL ;
446- bool render_path_raytrace_is_bake = false;
447-
448- #ifdef IRON_DIRECT3D12
449- char * render_path_raytrace_ext = ".cso" ;
450- #elif defined(IRON_METAL )
451- char * render_path_raytrace_ext = ".metal" ;
452- #else
453- char * render_path_raytrace_ext = ".spirv" ;
454- #endif
455-
456- bool sculpt_push_undo = false;
457- i32 ui_statusbar_default_h = 33 ;
458- char * parser_material_bake_passthrough_strength = "0.0" ;
459- char * parser_material_bake_passthrough_radius = "0.0" ;
460- char * parser_material_bake_passthrough_offset = "0.0" ;
461-
462- char * str_hue_sat = "\
463- fun hsv_to_rgb(c: float3): float3 { \
464- var K: float4 = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); \
465- var p: float3 = abs3(frac3(c.xxx + K.xyz) * 6.0 - K.www); \
466- return lerp3(K.xxx, clamp3(p - K.xxx, float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0)), c.y) * c.z; \
467- } \
468- fun rgb_to_hsv(c: float3): float3 { \
469- var K: float4 = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); \
470- var p: float4 = lerp4(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); \
471- var q: float4 = lerp4(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); \
472- var d: float = q.x - min(q.w, q.y); \
473- var e: float = 0.0000000001; \
474- return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); \
475- } \
476- fun hue_sat(col: float3, shift: float4): float3 { \
477- var hsv: float3 = rgb_to_hsv(col); \
478- hsv.x += shift.x; \
479- hsv.y *= shift.y; \
480- hsv.z *= shift.z; \
481- return lerp3(hsv_to_rgb(hsv), col, shift.w); \
482- } \
483- " ;
484-
485- char * str_brightcontrast = "\
486- fun brightcontrast(col: float3, bright: float, contr: float): float3 { \
487- var a: float = 1.0 + contr; \
488- var b: float = bright - contr * 0.5; \
489- return max3(a * col + b, float3(0.0, 0.0, 0.0)); \
490- } \
491- " ;
492-
493- any_imap_t * neural_node_results ;
494- ui_node_t * neural_node_current ;
495- i32 neural_node_downloading = 0 ;
496- neural_node_model_t_array_t * neural_node_models = NULL ;
0 commit comments