Files
armorpaint/base/sources/ts/render_path_preview.ts
T

139 lines
4.2 KiB
TypeScript
Raw Normal View History

2024-03-14 15:31:22 +01:00
function render_path_preview_init() {
{
let t: render_target_t = render_target_create();
t.name = "texpreview";
t.width = 1;
t.height = 1;
2025-04-24 22:19:44 +02:00
t.format = "RGBA64";
2024-03-14 15:31:22 +01:00
render_path_create_render_target(t);
}
{
let t: render_target_t = render_target_create();
t.name = "texpreview_icon";
t.width = 1;
t.height = 1;
2025-04-24 22:19:44 +02:00
t.format = "RGBA64";
2024-03-14 15:31:22 +01:00
render_path_create_render_target(t);
}
2025-07-01 14:46:40 +02:00
let size: i32 = math_floor(util_render_material_preview_size * 2.0);
{
let t: render_target_t = render_target_create();
t.name = "mmain";
t.width = size;
t.height = size;
t.format = "D32";
t.scale = render_path_base_get_super_sampling();
render_path_create_render_target(t);
}
2024-03-14 15:31:22 +01:00
{
let t: render_target_t = render_target_create();
t.name = "mtex";
2025-07-01 14:46:40 +02:00
t.width = size;
t.height = size;
2024-03-14 15:31:22 +01:00
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 = "mgbuffer0";
2025-07-01 14:46:40 +02:00
t.width = size;
t.height = size;
2024-03-14 15:31:22 +01:00
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 = "mgbuffer1";
2025-07-01 14:46:40 +02:00
t.width = size;
t.height = size;
2024-03-14 15:31:22 +01:00
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";
2025-07-01 14:46:40 +02:00
t.width = size;
t.height = size;
2024-03-14 15:31:22 +01:00
t.format = "RGBA64";
t.scale = render_path_base_get_super_sampling();
render_path_create_render_target(t);
}
}
function render_path_preview_commands_preview() {
2025-07-01 14:46:40 +02:00
render_path_set_target("mgbuffer2", null, null, clear_flag_t.COLOR, 0xff000000);
render_path_set_target("mgbuffer0", null, "mmain", clear_flag_t.COLOR | clear_flag_t.DEPTH, 0xffffffff, 1.0);
2024-05-03 21:29:39 +02:00
let additional: string[] = ["mgbuffer1", "mgbuffer2"];
2025-07-01 14:46:40 +02:00
render_path_set_target("mgbuffer0", additional, "mmain");
2024-03-14 15:31:22 +01:00
render_path_draw_meshes("mesh");
// Deferred light
render_path_set_target("mtex");
2025-07-01 14:46:40 +02:00
render_path_bind_target("mmain", "gbufferD");
2024-03-14 15:31:22 +01:00
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");
2025-07-01 14:46:40 +02:00
render_path_set_target("mtex", null, "mmain");
2024-03-14 15:31:22 +01:00
render_path_draw_skydome("shader_datas/world_pass/world_pass");
let framebuffer: string = "texpreview";
2024-03-20 16:13:54 +01:00
let selected_mat: slot_material_t = context_raw.material;
2024-05-03 21:29:39 +02:00
let texpreview: render_target_t = map_get(render_path_render_targets, "texpreview");
let texpreview_icon: render_target_t = map_get(render_path_render_targets, "texpreview_icon");
texpreview._image = selected_mat.image;
texpreview_icon._image = selected_mat.image_icon;
2024-03-14 15:31:22 +01:00
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");
2025-07-09 16:13:07 +02:00
render_path_draw_shader("shader_datas/supersample_resolve/supersample_resolveRGBA64");
2024-03-14 15:31:22 +01:00
}
function render_path_preview_commands_decal() {
2025-07-01 14:46:40 +02:00
render_path_set_target("gbuffer2", null, null, clear_flag_t.COLOR, 0xff000000);
render_path_set_target("gbuffer0", null, "main", clear_flag_t.COLOR | clear_flag_t.DEPTH, 0xffffffff, 1.0);
2024-05-03 21:29:39 +02:00
let additional: string[] = ["gbuffer1", "gbuffer2"];
2025-07-01 14:46:40 +02:00
render_path_set_target("gbuffer0", additional, "main");
2024-03-14 15:31:22 +01:00
render_path_draw_meshes("mesh");
// Deferred light
2025-04-21 19:38:23 +02:00
render_path_set_target("buf");
2025-07-01 14:46:40 +02:00
render_path_bind_target("main", "gbufferD");
2024-03-14 15:31:22 +01:00
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");
2025-07-01 14:46:40 +02:00
render_path_set_target("buf", null, "main");
2024-03-14 15:31:22 +01:00
render_path_draw_skydome("shader_datas/world_pass/world_pass");
let framebuffer: string = "texpreview";
2024-05-03 21:29:39 +02:00
let texpreview: render_target_t = map_get(render_path_render_targets, "texpreview");
texpreview._image = context_raw.decal_image;
2024-03-14 15:31:22 +01:00
render_path_set_target(framebuffer);
2025-04-21 19:38:23 +02:00
render_path_bind_target("buf", "tex");
2024-03-14 15:31:22 +01:00
render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
}