| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- function render_path_preview_init() {
- {
- let t: render_target_t = render_target_create();
- t.name = "texpreview";
- t.width = 1;
- t.height = 1;
- t.format = "RGBA32";
- render_path_create_render_target(t);
- }
- {
- let t: render_target_t = render_target_create();
- t.name = "texpreview_icon";
- t.width = 1;
- t.height = 1;
- t.format = "RGBA32";
- render_path_create_render_target(t);
- }
- render_path_create_depth_buffer("mmain", "DEPTH24");
- {
- let t: render_target_t = render_target_create();
- t.name = "mtex";
- t.width = math_floor(util_render_material_preview_size * 2.0);
- t.height = math_floor(util_render_material_preview_size * 2.0);
- t.format = "RGBA64";
- t.scale = render_path_base_get_super_sampling();
- ///if krom_opengl
- t.depth_buffer = "mmain";
- ///end
- render_path_create_render_target(t);
- }
- {
- let t: render_target_t = render_target_create();
- t.name = "mgbuffer0";
- t.width = math_floor(util_render_material_preview_size * 2.0);
- t.height = math_floor(util_render_material_preview_size * 2.0);
- t.format = "RGBA64";
- t.scale = render_path_base_get_super_sampling();
- t.depth_buffer = "mmain";
- render_path_create_render_target(t);
- }
- {
- let t: render_target_t = render_target_create();
- t.name = "mgbuffer1";
- t.width = math_floor(util_render_material_preview_size * 2.0);
- t.height = math_floor(util_render_material_preview_size * 2.0);
- t.format = "RGBA64";
- t.scale = render_path_base_get_super_sampling();
- render_path_create_render_target(t);
- }
- {
- let t: render_target_t = render_target_create();
- t.name = "mgbuffer2";
- t.width = math_floor(util_render_material_preview_size * 2.0);
- t.height = math_floor(util_render_material_preview_size * 2.0);
- t.format = "RGBA64";
- t.scale = render_path_base_get_super_sampling();
- render_path_create_render_target(t);
- }
- }
- function render_path_preview_commands_preview() {
- render_path_set_target("mgbuffer2");
- render_path_clear_target(0xff000000);
- render_path_set_target("mgbuffer0");
- render_path_clear_target(0xffffffff, 1.0, clear_flag_t.COLOR | clear_flag_t.DEPTH);
- render_path_set_target("mgbuffer0", ["mgbuffer1", "mgbuffer2"]);
- render_path_draw_meshes("mesh");
- // Deferred light
- render_path_set_target("mtex");
- render_path_bind_target("_mmain", "gbufferD");
- render_path_bind_target("mgbuffer0", "gbuffer0");
- render_path_bind_target("mgbuffer1", "gbuffer1");
- {
- render_path_bind_target("empty_white", "ssaotex");
- }
- render_path_draw_shader("shader_datas/deferred_light/deferred_light");
- ///if (krom_direct3d11 || krom_direct3d12 || krom_metal || krom_vulkan)
- render_path_set_depth_from("mtex", "mgbuffer0"); // Bind depth for world pass
- ///end
- render_path_set_target("mtex"); // Re-binds depth
- render_path_draw_skydome("shader_datas/world_pass/world_pass");
- ///if (krom_direct3d11 || krom_direct3d12 || krom_metal || krom_vulkan)
- render_path_set_depth_from("mtex", "mgbuffer1"); // Unbind depth
- ///end
- let framebuffer: string = "texpreview";
- let selected_mat: slot_material_t = context_raw.material;
- map_get(render_path_render_targets, "texpreview")._image = selected_mat.image;
- map_get(render_path_render_targets, "texpreview_icon")._image = selected_mat.image_icon;
- render_path_set_target(framebuffer);
- render_path_bind_target("mtex", "tex");
- render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
- render_path_set_target("texpreview_icon");
- render_path_bind_target("texpreview", "tex");
- render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolve");
- }
- function render_path_preview_commands_decal() {
- render_path_set_target("gbuffer2");
- render_path_clear_target(0xff000000);
- render_path_set_target("gbuffer0");
- render_path_clear_target(0xffffffff, 1.0, clear_flag_t.COLOR | clear_flag_t.DEPTH);
- render_path_set_target("gbuffer0", ["gbuffer1", "gbuffer2"]);
- render_path_draw_meshes("mesh");
- // Deferred light
- render_path_set_target("tex");
- render_path_bind_target("_main", "gbufferD");
- render_path_bind_target("gbuffer0", "gbuffer0");
- render_path_bind_target("gbuffer1", "gbuffer1");
- {
- render_path_bind_target("empty_white", "ssaotex");
- }
- render_path_draw_shader("shader_datas/deferred_light/deferred_light");
- ///if (krom_direct3d11 || krom_direct3d12 || krom_metal || krom_vulkan)
- render_path_set_depth_from("tex", "gbuffer0"); // Bind depth for world pass
- ///end
- render_path_set_target("tex");
- render_path_draw_skydome("shader_datas/world_pass/world_pass");
- ///if (krom_direct3d11 || krom_direct3d12 || krom_metal || krom_vulkan)
- render_path_set_depth_from("tex", "gbuffer1"); // Unbind depth
- ///end
- let framebuffer: string = "texpreview";
- map_get(render_path_render_targets, "texpreview")._image = context_raw.decal_image;
- render_path_set_target(framebuffer);
- render_path_bind_target("tex", "tex");
- render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
- }
|