render_path_preview.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. function render_path_preview_init() {
  2. {
  3. let t: render_target_t = render_target_create();
  4. t.name = "texpreview";
  5. t.width = 1;
  6. t.height = 1;
  7. t.format = "RGBA64";
  8. render_path_create_render_target(t);
  9. }
  10. {
  11. let t: render_target_t = render_target_create();
  12. t.name = "texpreview_icon";
  13. t.width = 1;
  14. t.height = 1;
  15. t.format = "RGBA64";
  16. render_path_create_render_target(t);
  17. }
  18. let size: i32 = math_floor(util_render_material_preview_size * 2.0);
  19. {
  20. let t: render_target_t = render_target_create();
  21. t.name = "mmain";
  22. t.width = size;
  23. t.height = size;
  24. t.format = "D32";
  25. t.scale = render_path_base_get_super_sampling();
  26. render_path_create_render_target(t);
  27. }
  28. {
  29. let t: render_target_t = render_target_create();
  30. t.name = "mtex";
  31. t.width = size;
  32. t.height = size;
  33. t.format = "RGBA64";
  34. t.scale = render_path_base_get_super_sampling();
  35. render_path_create_render_target(t);
  36. }
  37. {
  38. let t: render_target_t = render_target_create();
  39. t.name = "mgbuffer0";
  40. t.width = size;
  41. t.height = size;
  42. t.format = "RGBA64";
  43. t.scale = render_path_base_get_super_sampling();
  44. render_path_create_render_target(t);
  45. }
  46. {
  47. let t: render_target_t = render_target_create();
  48. t.name = "mgbuffer1";
  49. t.width = size;
  50. t.height = size;
  51. t.format = "RGBA64";
  52. t.scale = render_path_base_get_super_sampling();
  53. render_path_create_render_target(t);
  54. }
  55. {
  56. let t: render_target_t = render_target_create();
  57. t.name = "mgbuffer2";
  58. t.width = size;
  59. t.height = size;
  60. t.format = "RGBA64";
  61. t.scale = render_path_base_get_super_sampling();
  62. render_path_create_render_target(t);
  63. }
  64. }
  65. function render_path_preview_commands_preview() {
  66. render_path_set_target("mgbuffer2", null, null, clear_flag_t.COLOR, 0xff000000);
  67. render_path_set_target("mgbuffer0", null, "mmain", clear_flag_t.COLOR | clear_flag_t.DEPTH, 0xffffffff, 1.0);
  68. let additional: string[] = ["mgbuffer1", "mgbuffer2"];
  69. render_path_set_target("mgbuffer0", additional, "mmain");
  70. render_path_draw_meshes("mesh");
  71. // Deferred light
  72. render_path_set_target("mtex");
  73. render_path_bind_target("mmain", "gbufferD");
  74. render_path_bind_target("mgbuffer0", "gbuffer0");
  75. render_path_bind_target("mgbuffer1", "gbuffer1");
  76. {
  77. render_path_bind_target("empty_white", "ssaotex");
  78. }
  79. render_path_draw_shader("shader_datas/deferred_light/deferred_light");
  80. render_path_set_target("mtex", null, "mmain");
  81. render_path_draw_skydome("shader_datas/world_pass/world_pass");
  82. let framebuffer: string = "texpreview";
  83. let selected_mat: slot_material_t = context_raw.material;
  84. let texpreview: render_target_t = map_get(render_path_render_targets, "texpreview");
  85. let texpreview_icon: render_target_t = map_get(render_path_render_targets, "texpreview_icon");
  86. texpreview._image = selected_mat.image;
  87. texpreview_icon._image = selected_mat.image_icon;
  88. render_path_set_target(framebuffer);
  89. render_path_bind_target("mtex", "tex");
  90. render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
  91. render_path_set_target("texpreview_icon");
  92. render_path_bind_target("texpreview", "tex");
  93. render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64");
  94. }
  95. function render_path_preview_commands_decal() {
  96. render_path_set_target("gbuffer2", null, null, clear_flag_t.COLOR, 0xff000000);
  97. render_path_set_target("gbuffer0", null, "main", clear_flag_t.COLOR | clear_flag_t.DEPTH, 0xffffffff, 1.0);
  98. let additional: string[] = ["gbuffer1", "gbuffer2"];
  99. render_path_set_target("gbuffer0", additional, "main");
  100. render_path_draw_meshes("mesh");
  101. // Deferred light
  102. render_path_set_target("buf");
  103. render_path_bind_target("main", "gbufferD");
  104. render_path_bind_target("gbuffer0", "gbuffer0");
  105. render_path_bind_target("gbuffer1", "gbuffer1");
  106. {
  107. render_path_bind_target("empty_white", "ssaotex");
  108. }
  109. render_path_draw_shader("shader_datas/deferred_light/deferred_light");
  110. render_path_set_target("buf", null, "main");
  111. render_path_draw_skydome("shader_datas/world_pass/world_pass");
  112. let framebuffer: string = "texpreview";
  113. let texpreview: render_target_t = map_get(render_path_render_targets, "texpreview");
  114. texpreview._image = context_raw.decal_image;
  115. render_path_set_target(framebuffer);
  116. render_path_bind_target("buf", "tex");
  117. render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
  118. }