main.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. function main() {
  2. ///if arm_snapshot
  3. ///if (is_paint || is_sculpt)
  4. main_embed(["default_material.arm"]);
  5. ///end
  6. ///if is_lab
  7. main_embed(["placeholder.k"]);
  8. ///end
  9. ///if (krom_direct3d12 || krom_vulkan || krom_metal)
  10. main_embed_raytrace();
  11. ///if is_paint
  12. main_embed_raytrace_bake();
  13. ///end
  14. ///end
  15. ///else
  16. kickstart();
  17. ///end
  18. }
  19. function kickstart() {
  20. // Used to locate external application data folder
  21. krom_set_app_name(manifest_title);
  22. config_load(main_start);
  23. }
  24. function main_start() {
  25. app_on_resize = base_on_resize;
  26. app_on_w = base_w;
  27. app_on_h = base_h;
  28. app_on_x = base_x;
  29. app_on_y = base_y;
  30. context_init();
  31. config_init();
  32. sys_start(config_get_options());
  33. if (config_raw.layout == null) {
  34. base_init_layout();
  35. }
  36. krom_set_app_name(manifest_title);
  37. app_init();
  38. scene_set_active("Scene");
  39. uniforms_ext_init();
  40. render_path_base_init();
  41. if (context_raw.render_mode == render_mode_t.FORWARD) {
  42. render_path_deferred_init(); // Allocate gbuffer
  43. render_path_forward_init();
  44. render_path_commands = render_path_forward_commands;
  45. }
  46. else {
  47. render_path_deferred_init();
  48. render_path_commands = render_path_deferred_commands;
  49. }
  50. base_init();
  51. }
  52. ///if arm_snapshot
  53. function main_embed(additional: string[]) {
  54. let global: any = globalThis;
  55. resource_embed_raw("Scene", "Scene.arm", global["data/Scene.arm"]);
  56. global["data/Scene.arm"] = null;
  57. resource_embed_raw("shader_datas", "shader_datas.arm", global["data/shader_datas.arm"]);
  58. global["data/shader_datas.arm"] = null;
  59. resource_embed_font("font.ttf", global["data/font.ttf"]);
  60. global["data/font.ttf"] = null;
  61. resource_embed_font("font_mono.ttf", global["data/font_mono.ttf"]);
  62. global["data/font_mono.ttf"] = null;
  63. let files: string[] = [
  64. "ltc_mag.arm",
  65. "ltc_mat.arm",
  66. "default_brush.arm",
  67. "World_irradiance.arm",
  68. "World_radiance.k",
  69. "World_radiance_0.k",
  70. "World_radiance_1.k",
  71. "World_radiance_2.k",
  72. "World_radiance_3.k",
  73. "World_radiance_4.k",
  74. "World_radiance_5.k",
  75. "World_radiance_6.k",
  76. "World_radiance_7.k",
  77. "World_radiance_8.k",
  78. "brdf.k",
  79. "color_wheel.k",
  80. "color_wheel_gradient.k",
  81. "cursor.k",
  82. "icons.k",
  83. "icons2x.k",
  84. "badge.k",
  85. "noise256.k",
  86. "smaa_search.k",
  87. "smaa_area.k",
  88. "text_coloring.json",
  89. "version.json"
  90. ];
  91. for (let i: i32 = 0; i < additional.length; ++i) {
  92. let add: string = additional[i];
  93. array_push(files, add);
  94. }
  95. for (let i: i32 = 0; i < files.length; ++i) {
  96. let file: string = files[i];
  97. resource_embed_blob(file, global["data/" + file]);
  98. global["data/" + file] = null;
  99. }
  100. }
  101. ///if (krom_direct3d12 || krom_vulkan || krom_metal)
  102. function main_embed_raytrace() {
  103. let global: any = globalThis;
  104. let files: string[] = [
  105. "bnoise_rank.k",
  106. "bnoise_scramble.k",
  107. "bnoise_sobol.k",
  108. "raytrace_brute_core" + render_path_raytrace_ext,
  109. "raytrace_brute_full" + render_path_raytrace_ext
  110. ];
  111. for (let i: i32 = 0; i < files.length; ++i) {
  112. let file: string = files[i];
  113. resource_embed_blob(file, global["data/" + file]);
  114. global["data/" + file] = null;
  115. }
  116. }
  117. function main_embed_raytrace_bake() {
  118. let global: any = globalThis;
  119. let files: string[] = [
  120. "raytrace_bake_ao" + render_path_raytrace_ext,
  121. "raytrace_bake_bent" + render_path_raytrace_ext,
  122. "raytrace_bake_light" + render_path_raytrace_ext,
  123. "raytrace_bake_thick" + render_path_raytrace_ext
  124. ];
  125. for (let i: i32 = 0; i < files.length; ++i) {
  126. let file: string = files[i];
  127. resource_embed_blob(file, global["data/" + file]);
  128. global["data/" + file] = null;
  129. }
  130. }
  131. ///end
  132. ///end
  133. main();