| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- type tiling_node_t = {
- base?: logic_node_t;
- result?: image_t;
- };
- let tiling_node_image: image_t = null;
- let tiling_node_prompt: string = "";
- let tiling_node_strength: f32 = 0.5;
- let tiling_node_auto: bool = true;
- function tiling_node_create(arg: any): tiling_node_t {
- let n: float_node_t = {};
- n.base = logic_node_create();
- n.base.get_as_image = tiling_node_get_as_image;
- n.base.get_cached_image = tiling_node_get_cached_image;
- tiling_node_init();
- return n;
- }
- function tiling_node_init() {
- if (tiling_node_image == null) {
- tiling_node_image = image_create_render_target(config_get_texture_res_x(), config_get_texture_res_y());
- }
- }
- function tiling_node_buttons(ui: zui_t, nodes: zui_nodes_t, node: zui_node_t) {
- tiling_node_auto = node.buttons[0].default_value == 0 ? false : true;
- if (!tiling_node_auto) {
- let tiling_node_strength_handle: zui_handle_t = zui_handle(__ID__);
- if (tiling_node_strength_handle.init) {
- tiling_node_strength_handle.value = tiling_node_strength;
- }
- tiling_node_strength = zui_slider(tiling_node_strength_handle, tr("strength"), 0, 1, true);
- tiling_node_prompt = zui_text_area(zui_handle(__ID__), zui_align_t.LEFT, true, tr("prompt"), true);
- node.buttons[1].height = 1 + string_split(tiling_node_prompt, "\n").length;
- }
- else {
- node.buttons[1].height = 0;
- }
- }
- function tiling_node_get_as_image(self: tiling_node_t, from: i32): image_t {
- let source: image_t = logic_node_input_get_as_image(self.base.inputs[0]);
- g2_begin(tiling_node_image);
- g2_draw_scaled_image(source, 0, 0, config_get_texture_res_x(), config_get_texture_res_y());
- g2_end();
- console_progress(tr("Processing") + " - " + tr("Tiling"));
- krom_g4_swap_buffers();
- if (tiling_node_auto){
- self.result = inpaint_node_texsynth_inpaint(tiling_node_image, true, null);
- }
- else {
- self.result = tiling_node_sd_tiling(tiling_node_image, -1);
- }
- return self.result;
- }
- function tiling_node_get_cached_image(self: tiling_node_t): image_t {
- return self.result;
- }
- function tiling_node_sd_tiling(image: image_t, seed: i32): image_t {
- text_to_photo_node_tiling = false;
- let tile = image_create_render_target(512, 512);
- g2_begin(tile);
- g2_draw_scaled_image(image, -256, -256, 512, 512);
- g2_draw_scaled_image(image, 256, -256, 512, 512);
- g2_draw_scaled_image(image, -256, 256, 512, 512);
- g2_draw_scaled_image(image, 256, 256, 512, 512);
- g2_end();
- let u8a = u8_array_create(512 * 512);
- for (let i: i32 = 0; i < 512 * 512; ++i) {
- let x = i % 512;
- let y = math_floor(i / 512);
- let l = y < 256 ? y : (511 - y);
- u8a[i] = (x > 256 - l && x < 256 + l) ? 0 : 255;
- }
- // for (let i: i32 = 0; i < 512 * 512; ++i) u8a[i] = 255;
- // for (let x: i32 = (256 - 32); x < (256 + 32); ++x) {
- // for (let y: i32 = 0; y < 512; ++y) {
- // u8a[y * 512 + x] = 0;
- // }
- // }
- // for (let x: i32 = 0; x < 512; ++x) {
- // for (let y: i32 = (256 - 32); y < 256 + 32); ++y) {
- // u8a[y * 512 + x] = 0;
- // }
- // }
- let mask = image_from_bytes(u8a.buffer, 512, 512, tex_format_t.R8);
- inpaint_node_prompt = tiling_node_prompt;
- inpaint_node_strength = tiling_node_strength;
- if (seed >= 0) {
- random_node_set_seed(seed);
- }
- return inpaint_node_sd_inpaint(tile, mask);
- }
- let tiling_node_def: zui_node_t = {
- id: 0,
- name: _tr("Tiling"),
- type: "tiling_node",
- x: 0,
- y: 0,
- color: 0xff4982a0,
- inputs: [
- {
- id: 0,
- node_id: 0,
- name: _tr("Color"),
- type: "RGBA",
- color: 0xffc7c729,
- default_value: f32_array_create_xyzw(0.0, 0.0, 0.0, 1.0),
- min: 0.0,
- max: 1.0,
- precision: 100,
- display: 0
- }
- ],
- outputs: [
- {
- id: 0,
- node_id: 0,
- name: _tr("Color"),
- type: "RGBA",
- color: 0xffc7c729,
- default_value: f32_array_create_xyzw(0.0, 0.0, 0.0, 1.0),
- min: 0.0,
- max: 1.0,
- precision: 100,
- display: 0
- }
- ],
- buttons: [
- {
- name: _tr("auto"),
- type: "BOOL",
- output: 0,
- default_value: f32_array_create_x(1),
- data: null,
- min: 0.0,
- max: 1.0,
- precision: 100,
- height: 0
- },
- {
- name: "tiling_node_buttons",
- type: "CUSTOM",
- output: -1,
- default_value: null,
- data: null,
- min: 0.0,
- max: 1.0,
- precision: 100,
- height: 0
- }
- ],
- width: 0
- };
|