Config cleanup

This commit is contained in:
luboslenco
2025-09-16 20:44:07 +02:00
parent c998d7c263
commit 09b2fd3307
11 changed files with 82 additions and 135 deletions
+2 -3
View File
@@ -1848,7 +1848,7 @@ function ui_base_render_cursor() {
let decal: bool = context_is_decal(); let decal: bool = context_is_decal();
if (!config_raw.brush_3d || context_in_2d_view() || decal) { if (context_in_2d_view() || decal) {
let decal_mask: bool = context_is_decal_mask(); let decal_mask: bool = context_is_decal_mask();
if (decal && !context_in_nodes()) { if (decal && !context_in_nodes()) {
let decal_alpha: f32 = 0.5; let decal_alpha: f32 = 0.5;
@@ -1887,12 +1887,11 @@ function ui_base_render_cursor() {
context_raw.tool == tool_type_t.BLUR || context_raw.tool == tool_type_t.BLUR ||
context_raw.tool == tool_type_t.SMUDGE || context_raw.tool == tool_type_t.SMUDGE ||
context_raw.tool == tool_type_t.PARTICLE || context_raw.tool == tool_type_t.PARTICLE ||
(decal_mask && !config_raw.brush_3d) ||
(decal_mask && context_in_2d_view())) { (decal_mask && context_in_2d_view())) {
if (decal_mask) { if (decal_mask) {
psize = math_floor(cursor_img.width * (context_raw.brush_decal_mask_radius * context_raw.brush_nodes_radius) * UI_SCALE()); psize = math_floor(cursor_img.width * (context_raw.brush_decal_mask_radius * context_raw.brush_nodes_radius) * UI_SCALE());
} }
if (config_raw.brush_3d && context_in_2d_view()) { if (context_in_2d_view()) {
psize = math_floor(psize * ui_view2d_pan_scale); psize = math_floor(psize * ui_view2d_pan_scale);
} }
draw_scaled_image(cursor_img, mx - psize / 2, my - psize / 2, psize, psize); draw_scaled_image(cursor_img, mx - psize / 2, my - psize / 2, psize, psize);
+13 -27
View File
@@ -75,6 +75,16 @@ function box_preferences_show() {
config_raw.zoom_direction = zoom_direction_handle.position; config_raw.zoom_direction = zoom_direction_handle.position;
} }
let h_node_preview: ui_handle_t = ui_handle(__ID__);
if (h_node_preview.init) {
h_node_preview.position = config_raw.node_preview;
}
let node_preview_combo: string[] = [tr("Off"), tr("Selected Node")]; // , tr("All Nodes")];
ui_combo(h_node_preview, node_preview_combo, tr("Node Preview"), true);
if (h_node_preview.changed) {
config_raw.node_preview = h_node_preview.position;
}
let h_wrap_mouse: ui_handle_t = ui_handle(__ID__); let h_wrap_mouse: ui_handle_t = ui_handle(__ID__);
if (h_wrap_mouse.init) { if (h_wrap_mouse.init) {
h_wrap_mouse.selected = config_raw.wrap_mouse; h_wrap_mouse.selected = config_raw.wrap_mouse;
@@ -84,12 +94,6 @@ function box_preferences_show() {
ui_tooltip(tr("Wrap mouse around view boundaries during camera control")); ui_tooltip(tr("Wrap mouse around view boundaries during camera control"));
} }
let h_node_preview: ui_handle_t = ui_handle(__ID__);
if (h_node_preview.init) {
h_node_preview.selected = config_raw.node_preview;
}
config_raw.node_preview = ui_check(h_node_preview, tr("Show Node Preview"));
ui.changed = false; ui.changed = false;
let h_show_asset_names: ui_handle_t = ui_handle(__ID__); let h_show_asset_names: ui_handle_t = ui_handle(__ID__);
if (h_show_asset_names.init) { if (h_show_asset_names.init) {
@@ -350,16 +354,6 @@ function box_preferences_show() {
ui_tooltip(tr("Dilate painted textures to prevent seams")); ui_tooltip(tr("Dilate painted textures to prevent seams"));
} }
let dilate_handle: ui_handle_t = ui_handle(__ID__);
if (dilate_handle.init) {
dilate_handle.position = config_raw.dilate;
}
let dilate_combo: string[] = [tr("Instant"), tr("Delayed")];
ui_combo(dilate_handle, dilate_combo, tr("Dilate"), true);
if (dilate_handle.changed) {
config_raw.dilate = dilate_handle.position;
}
let camera_controls_handle: ui_handle_t = ui_handle(__ID__); let camera_controls_handle: ui_handle_t = ui_handle(__ID__);
if (camera_controls_handle.init) { if (camera_controls_handle.init) {
camera_controls_handle.position = config_raw.camera_controls; camera_controls_handle.position = config_raw.camera_controls;
@@ -423,16 +417,6 @@ function box_preferences_show() {
context_raw.ddirty = 2; context_raw.ddirty = 2;
} }
let brush_3d_handle: ui_handle_t = ui_handle(__ID__);
if (brush_3d_handle.init) {
brush_3d_handle.selected = config_raw.brush_3d;
}
config_raw.brush_3d = ui_check(brush_3d_handle, tr("3D Cursor"));
if (brush_3d_handle.changed) {
make_material_parse_paint_material();
}
ui.enabled = config_raw.brush_3d;
let brush_depth_reject_handle: ui_handle_t = ui_handle(__ID__); let brush_depth_reject_handle: ui_handle_t = ui_handle(__ID__);
if (brush_depth_reject_handle.init) { if (brush_depth_reject_handle.init) {
brush_depth_reject_handle.selected = config_raw.brush_depth_reject; brush_depth_reject_handle.selected = config_raw.brush_depth_reject;
@@ -453,7 +437,9 @@ function box_preferences_show() {
make_material_parse_paint_material(); make_material_parse_paint_material();
} }
if (!config_raw.brush_angle_reject) ui.enabled = false; if (!config_raw.brush_angle_reject) {
ui.enabled = false;
}
let angle_dot_handle: ui_handle_t = ui_handle(__ID__); let angle_dot_handle: ui_handle_t = ui_handle(__ID__);
if (angle_dot_handle.init) { if (angle_dot_handle.init) {
angle_dot_handle.value = context_raw.brush_angle_reject_dot; angle_dot_handle.value = context_raw.brush_angle_reject_dot;
+3 -13
View File
@@ -86,15 +86,13 @@ function config_save() {
json_encode_f32("displace_strength", config_raw.displace_strength); json_encode_f32("displace_strength", config_raw.displace_strength);
json_encode_i32("layer_res", config_raw.layer_res); json_encode_i32("layer_res", config_raw.layer_res);
json_encode_bool("brush_live", config_raw.brush_live); json_encode_bool("brush_live", config_raw.brush_live);
json_encode_bool("brush_3d", config_raw.brush_3d); json_encode_i32("node_preview", config_raw.node_preview);
json_encode_bool("node_preview", config_raw.node_preview);
json_encode_bool("pressure_hardness", config_raw.pressure_hardness); json_encode_bool("pressure_hardness", config_raw.pressure_hardness);
json_encode_bool("pressure_angle", config_raw.pressure_angle); json_encode_bool("pressure_angle", config_raw.pressure_angle);
json_encode_bool("pressure_opacity", config_raw.pressure_opacity); json_encode_bool("pressure_opacity", config_raw.pressure_opacity);
json_encode_bool("material_live", config_raw.material_live); json_encode_bool("material_live", config_raw.material_live);
json_encode_bool("brush_depth_reject", config_raw.brush_depth_reject); json_encode_bool("brush_depth_reject", config_raw.brush_depth_reject);
json_encode_bool("brush_angle_reject", config_raw.brush_angle_reject); json_encode_bool("brush_angle_reject", config_raw.brush_angle_reject);
json_encode_i32("dilate", config_raw.dilate);
json_encode_i32("dilate_radius", config_raw.dilate_radius); json_encode_i32("dilate_radius", config_raw.dilate_radius);
json_encode_bool("gpu_inference", config_raw.gpu_inference); json_encode_bool("gpu_inference", config_raw.gpu_inference);
json_encode_string("blender", config_raw.blender); json_encode_string("blender", config_raw.blender);
@@ -189,7 +187,7 @@ function config_init() {
config_raw.touch_ui = false; config_raw.touch_ui = false;
config_raw.splash_screen = false; config_raw.splash_screen = false;
///end ///end
config_raw.node_preview = true; config_raw.node_preview = node_preview_t.SELECTED_NODE;
config_raw.pressure_hardness = true; config_raw.pressure_hardness = true;
config_raw.pressure_angle = false; config_raw.pressure_angle = false;
config_raw.pressure_opacity = false; config_raw.pressure_opacity = false;
@@ -198,12 +196,10 @@ function config_init() {
///else ///else
config_raw.material_live = true; config_raw.material_live = true;
///end ///end
config_raw.brush_3d = true;
config_raw.brush_depth_reject = true; config_raw.brush_depth_reject = true;
config_raw.brush_angle_reject = true; config_raw.brush_angle_reject = true;
config_raw.brush_live = false; config_raw.brush_live = false;
config_raw.show_asset_names = false; config_raw.show_asset_names = false;
config_raw.dilate = dilate_type_t.INSTANT;
config_raw.dilate_radius = 2; config_raw.dilate_radius = 2;
config_raw.gpu_inference = true; config_raw.gpu_inference = true;
config_raw.blender = ""; config_raw.blender = "";
@@ -476,25 +472,19 @@ type config_t = {
server?: string; server?: string;
viewport_mode: i32; viewport_mode: i32;
pathtrace_mode: i32; pathtrace_mode: i32;
pressure_radius?: bool; // Pen pressure controls pressure_radius?: bool; // Pen pressure controls
pressure_sensitivity?: f32; pressure_sensitivity?: f32;
displace_strength?: f32; displace_strength?: f32;
layer_res?: i32; layer_res?: i32;
brush_live?: bool; brush_live?: bool;
brush_3d?: bool; node_preview?: i32;
node_preview?: bool;
pressure_hardness?: bool; pressure_hardness?: bool;
pressure_angle?: bool; pressure_angle?: bool;
pressure_opacity?: bool; pressure_opacity?: bool;
material_live?: bool; material_live?: bool;
brush_depth_reject?: bool; brush_depth_reject?: bool;
brush_angle_reject?: bool; brush_angle_reject?: bool;
dilate?: i32;
dilate_radius?: i32; dilate_radius?: i32;
gpu_inference?: bool; gpu_inference?: bool;
blender?: string; blender?: string;
scene_atlas_res: i32; scene_atlas_res: i32;
+6 -5
View File
@@ -1,9 +1,4 @@
enum dilate_type_t {
INSTANT,
DELAYED,
}
enum bake_type_t { enum bake_type_t {
INIT = -1, INIT = -1,
CURVATURE = 0, CURVATURE = 0,
@@ -283,3 +278,9 @@ enum layout_size_t {
STATUS_H = 5, STATUS_H = 5,
HEADER = 6, // 0 - hidden, 1 - visible HEADER = 6, // 0 - hidden, 1 - visible
} }
enum node_preview_t {
OFF = 0,
SELECTED_NODE = 1,
ALL_NODES = 2,
}
+39 -55
View File
@@ -13,68 +13,52 @@ function make_brush_run(kong: node_shader_t) {
node_shader_write_frag(kong, "if (constants.decal_mask.z > 0.0) {"); node_shader_write_frag(kong, "if (constants.decal_mask.z > 0.0) {");
} }
if (config_raw.brush_3d) { node_shader_write_frag(kong, "var depth: float = sample_lod(gbufferD, sampler_linear, constants.inp.xy, 0.0).r;");
node_shader_write_frag(kong, "var depth: float = sample_lod(gbufferD, sampler_linear, constants.inp.xy, 0.0).r;");
node_shader_add_constant(kong, "invVP: float4x4", "_inv_view_proj_matrix"); node_shader_add_constant(kong, "invVP: float4x4", "_inv_view_proj_matrix");
node_shader_write_frag(kong, "var winp: float4 = float4(float2(constants.inp.x, 1.0 - constants.inp.y) * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);"); node_shader_write_frag(kong, "var winp: float4 = float4(float2(constants.inp.x, 1.0 - constants.inp.y) * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);");
node_shader_write_frag(kong, "winp = constants.invVP * winp;"); node_shader_write_frag(kong, "winp = constants.invVP * winp;");
node_shader_write_frag(kong, "winp.xyz = winp.xyz / winp.w;"); node_shader_write_frag(kong, "winp.xyz = winp.xyz / winp.w;");
kong.frag_wposition = true; kong.frag_wposition = true;
if (config_raw.brush_angle_reject || context_raw.xray) { if (config_raw.brush_angle_reject || context_raw.xray) {
node_shader_add_function(kong, str_octahedron_wrap); node_shader_add_function(kong, str_octahedron_wrap);
node_shader_add_texture(kong, "gbuffer0"); node_shader_add_texture(kong, "gbuffer0");
node_shader_write_frag(kong, "var g0: float2 = sample_lod(gbuffer0, sampler_linear, constants.inp.xy, 0.0).rg;"); node_shader_write_frag(kong, "var g0: float2 = sample_lod(gbuffer0, sampler_linear, constants.inp.xy, 0.0).rg;");
node_shader_write_frag(kong, "var wn: float3;"); node_shader_write_frag(kong, "var wn: float3;");
node_shader_write_frag(kong, "wn.z = 1.0 - abs(g0.x) - abs(g0.y);"); node_shader_write_frag(kong, "wn.z = 1.0 - abs(g0.x) - abs(g0.y);");
// node_shader_write_frag(kong, "wn.xy = wn.z >= 0.0 ? g0.xy : octahedron_wrap(g0.xy);"); // node_shader_write_frag(kong, "wn.xy = wn.z >= 0.0 ? g0.xy : octahedron_wrap(g0.xy);");
node_shader_write_frag(kong, "if (wn.z >= 0.0) { wn.x = g0.x; wn.y = g0.y; } else { var f2: float2 = octahedron_wrap(g0.xy); wn.x = f2.x; wn.y = f2.y; }"); node_shader_write_frag(kong, "if (wn.z >= 0.0) { wn.x = g0.x; wn.y = g0.y; } else { var f2: float2 = octahedron_wrap(g0.xy); wn.x = f2.x; wn.y = f2.y; }");
node_shader_write_frag(kong, "wn = normalize(wn);"); node_shader_write_frag(kong, "wn = normalize(wn);");
node_shader_write_frag(kong, "var plane_dist: float = dot(wn, winp.xyz - input.wposition);"); node_shader_write_frag(kong, "var plane_dist: float = dot(wn, winp.xyz - input.wposition);");
if (config_raw.brush_angle_reject && !context_raw.xray) { if (config_raw.brush_angle_reject && !context_raw.xray) {
// constants.inp.w = paint2d ? 0.0 : 1.0 // constants.inp.w = paint2d ? 0.0 : 1.0
node_shader_write_frag(kong, "if (plane_dist < -0.01 && constants.inp.w == 0.0) { discard; }"); node_shader_write_frag(kong, "if (plane_dist < -0.01 && constants.inp.w == 0.0) { discard; }");
kong.frag_n = true; kong.frag_n = true;
let angle: f32 = context_raw.brush_angle_reject_dot; let angle: f32 = context_raw.brush_angle_reject_dot;
node_shader_write_frag(kong, "if (dot(wn, n) < " + angle + " && constants.inp.w == 0.0) { discard; }"); node_shader_write_frag(kong, "if (dot(wn, n) < " + angle + " && constants.inp.w == 0.0) { discard; }");
}
}
node_shader_write_frag(kong, "var depthlast: float = sample_lod(gbufferD, sampler_linear, constants.inplast.xy, 0.0).r;");
node_shader_write_frag(kong, "var winplast: float4 = float4(float2(constants.inplast.x, 1.0 - constants.inplast.y) * 2.0 - 1.0, depthlast * 2.0 - 1.0, 1.0);");
node_shader_write_frag(kong, "winplast = constants.invVP * winplast;");
node_shader_write_frag(kong, "winplast.xyz = winplast.xyz / winplast.w;");
node_shader_write_frag(kong, "var pa: float3 = input.wposition - winp.xyz;");
if (context_raw.xray) {
node_shader_write_frag(kong, "pa += wn * float3(plane_dist, plane_dist, plane_dist);");
}
node_shader_write_frag(kong, "var ba: float3 = winplast.xyz - winp.xyz;");
if (context_raw.brush_lazy_radius > 0 && context_raw.brush_lazy_step > 0) {
// Sphere
node_shader_write_frag(kong, "dist = distance(input.wposition, winp.xyz);");
}
else {
// Capsule
node_shader_write_frag(kong, "var h: float = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);");
node_shader_write_frag(kong, "dist = length(pa - ba * h);");
} }
} }
else { // !brush3d
node_shader_write_frag(kong, "var binp: float2 = constants.inp.xy * 2.0 - 1.0;");
node_shader_write_frag(kong, "binp.x *= constants.aspect_ratio;");
node_shader_write_frag(kong, "binp = binp * 0.5 + 0.5;");
node_shader_write_frag(kong, "var binplast: float2 = constants.inplast.xy * 2.0 - 1.0;"); node_shader_write_frag(kong, "var depthlast: float = sample_lod(gbufferD, sampler_linear, constants.inplast.xy, 0.0).r;");
node_shader_write_frag(kong, "binplast.x *= constants.aspect_ratio;");
node_shader_write_frag(kong, "binplast = binplast * 0.5 + 0.5;");
node_shader_write_frag(kong, "var pa: float2 = bsp.xy - binp.xy;"); node_shader_write_frag(kong, "var winplast: float4 = float4(float2(constants.inplast.x, 1.0 - constants.inplast.y) * 2.0 - 1.0, depthlast * 2.0 - 1.0, 1.0);");
node_shader_write_frag(kong, "var ba: float2 = binplast.xy - binp.xy;"); node_shader_write_frag(kong, "winplast = constants.invVP * winplast;");
node_shader_write_frag(kong, "winplast.xyz = winplast.xyz / winplast.w;");
node_shader_write_frag(kong, "var pa: float3 = input.wposition - winp.xyz;");
if (context_raw.xray) {
node_shader_write_frag(kong, "pa += wn * float3(plane_dist, plane_dist, plane_dist);");
}
node_shader_write_frag(kong, "var ba: float3 = winplast.xyz - winp.xyz;");
if (context_raw.brush_lazy_radius > 0 && context_raw.brush_lazy_step > 0) {
// Sphere
node_shader_write_frag(kong, "dist = distance(input.wposition, winp.xyz);");
}
else {
// Capsule
node_shader_write_frag(kong, "var h: float = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);"); node_shader_write_frag(kong, "var h: float = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);");
node_shader_write_frag(kong, "dist = length(pa - ba * h);"); node_shader_write_frag(kong, "dist = length(pa - ba * h);");
} }
+4 -6
View File
@@ -143,13 +143,13 @@ function make_paint_run(data: material_t, matcon: material_context_t): node_shad
decal) { decal) {
let depth_reject: bool = !context_raw.xray; let depth_reject: bool = !context_raw.xray;
if (config_raw.brush_3d && !config_raw.brush_depth_reject) { if (!config_raw.brush_depth_reject) {
depth_reject = false; depth_reject = false;
} }
// TODO: sp.z needs to take height channel into account // TODO: sp.z needs to take height channel into account
let particle: bool = context_raw.tool == tool_type_t.PARTICLE; let particle: bool = context_raw.tool == tool_type_t.PARTICLE;
if (config_raw.brush_3d && !decal && !particle) { if (!decal && !particle) {
if (make_material_height_used || context_raw.sym_x || context_raw.sym_y || context_raw.sym_z) { if (make_material_height_used || context_raw.sym_x || context_raw.sym_y || context_raw.sym_z) {
depth_reject = false; depth_reject = false;
} }
@@ -333,10 +333,8 @@ function make_paint_run(data: material_t, matcon: material_context_t): node_shad
node_shader_write_frag(kong, "pa_mask.xy = float2(pa_mask.x * constants.brush_angle.x - pa_mask.y * constants.brush_angle.y, pa_mask.x * constants.brush_angle.y + pa_mask.y * constants.brush_angle.x);"); node_shader_write_frag(kong, "pa_mask.xy = float2(pa_mask.x * constants.brush_angle.x - pa_mask.y * constants.brush_angle.y, pa_mask.x * constants.brush_angle.y + pa_mask.y * constants.brush_angle.x);");
} }
node_shader_write_frag(kong, "pa_mask = pa_mask / constants.brush_radius;"); node_shader_write_frag(kong, "pa_mask = pa_mask / constants.brush_radius;");
if (config_raw.brush_3d) { node_shader_add_constant(kong, "eye: float3", "_camera_pos");
node_shader_add_constant(kong, "eye: float3", "_camera_pos"); node_shader_write_frag(kong, "pa_mask = pa_mask * (distance(constants.eye, winp.xyz) / 1.5);");
node_shader_write_frag(kong, "pa_mask = pa_mask * (distance(constants.eye, winp.xyz) / 1.5);");
}
node_shader_write_frag(kong, "pa_mask = pa_mask.xy * 0.5 + 0.5;"); node_shader_write_frag(kong, "pa_mask = pa_mask.xy * 0.5 + 0.5;");
node_shader_write_frag(kong, "var mask_sample: float4 = sample_lod(texbrushmask, sampler_linear, pa_mask, 0.0);"); node_shader_write_frag(kong, "var mask_sample: float4 = sample_lod(texbrushmask, sampler_linear, pa_mask, 0.0);");
if (context_raw.brush_mask_image_is_alpha) { if (context_raw.brush_mask_image_is_alpha) {
+1 -1
View File
@@ -55,7 +55,7 @@ function render_path_base_begin() {
let decal: bool = context_is_decal(); let decal: bool = context_is_decal();
if (context_raw.view_index_last != context_raw.view_index || decal || !config_raw.brush_3d) { if (context_raw.view_index_last != context_raw.view_index || decal) {
// Redraw on current viewport change // Redraw on current viewport change
context_raw.ddirty = 1; context_raw.ddirty = 1;
} }
+4 -9
View File
@@ -252,7 +252,7 @@ function render_path_paint_commands_paint(dilation: bool = true) {
render_path_set_target(texpaint, additional); render_path_set_target(texpaint, additional);
} }
render_path_bind_target("main", "gbufferD"); render_path_bind_target("main", "gbufferD");
if ((context_raw.xray || config_raw.brush_angle_reject) && config_raw.brush_3d) { if (context_raw.xray || config_raw.brush_angle_reject) {
render_path_bind_target("gbuffer0", "gbuffer0"); render_path_bind_target("gbuffer0", "gbuffer0");
} }
render_path_bind_target("texpaint_blend1", "paintmask"); render_path_bind_target("texpaint_blend1", "paintmask");
@@ -291,7 +291,7 @@ function render_path_paint_commands_paint(dilation: bool = true) {
} }
} }
if (dilation && config_raw.dilate == dilate_type_t.INSTANT) { if (dilation) {
render_path_paint_dilate(true, false); render_path_paint_dilate(true, false);
} }
} }
@@ -401,9 +401,6 @@ function render_path_paint_commands_live_brush() {
} }
function render_path_paint_commands_cursor() { function render_path_paint_commands_cursor() {
if (!config_raw.brush_3d) {
return;
}
let decal_mask: bool = context_is_decal_mask(); let decal_mask: bool = context_is_decal_mask();
let tool: tool_type_t = context_raw.tool; let tool: tool_type_t = context_raw.tool;
if (tool != tool_type_t.BRUSH && if (tool != tool_type_t.BRUSH &&
@@ -525,7 +522,7 @@ function render_path_paint_live_brush_dirty() {
function render_path_paint_begin() { function render_path_paint_begin() {
if (!render_path_paint_dilated) { if (!render_path_paint_dilated) {
render_path_paint_dilate(config_raw.dilate == dilate_type_t.DELAYED, true); render_path_paint_dilate(false, true);
render_path_paint_dilated = true; render_path_paint_dilated = true;
} }
@@ -674,9 +671,7 @@ function render_path_paint_draw() {
else if (render_path_paint_is_rt_bake()) { else if (render_path_paint_is_rt_bake()) {
let dirty: bool = render_path_raytrace_bake_commands(make_material_parse_paint_material); let dirty: bool = render_path_raytrace_bake_commands(make_material_parse_paint_material);
if (dirty) ui_header_handle.redraws = 2; if (dirty) ui_header_handle.redraws = 2;
if (config_raw.dilate == dilate_type_t.INSTANT) { // && raw.pdirty == 1 render_path_paint_dilate(true, false);
render_path_paint_dilate(true, false);
}
} }
else { else {
render_path_paint_commands_paint(); render_path_paint_commands_paint();
+1 -3
View File
@@ -215,7 +215,5 @@ function render_path_raytrace_draw(use_live_layer: bool) {
render_path_set_target(""); render_path_set_target("");
render_path_bind_target("last", "tex"); render_path_bind_target("last", "tex");
render_path_draw_shader("shader_datas/copy_pass/copy_pass"); render_path_draw_shader("shader_datas/copy_pass/copy_pass");
if (config_raw.brush_3d) { render_path_paint_commands_cursor();
render_path_paint_commands_cursor();
}
} }
+2 -2
View File
@@ -816,7 +816,7 @@ function ui_nodes_render() {
ui_nodes_grid_redraw = false; ui_nodes_grid_redraw = false;
} }
if (config_raw.node_preview && context_raw.node_preview_dirty) { if (config_raw.node_preview == node_preview_t.SELECTED_NODE && context_raw.node_preview_dirty) {
ui_nodes_make_node_preview(); ui_nodes_make_node_preview();
} }
@@ -969,7 +969,7 @@ function ui_nodes_render() {
ui_nodes_uichanged_last = ui.changed; ui_nodes_uichanged_last = ui.changed;
// Node previews // Node previews
if (config_raw.node_preview && nodes.nodes_selected_id.length > 0) { if (config_raw.node_preview == node_preview_t.SELECTED_NODE && nodes.nodes_selected_id.length > 0) {
let img: gpu_texture_t = null; let img: gpu_texture_t = null;
let sel: ui_node_t = ui_get_node(c.nodes, nodes.nodes_selected_id[0]); let sel: ui_node_t = ui_get_node(c.nodes, nodes.nodes_selected_id[0]);
+7 -11
View File
@@ -23,9 +23,7 @@ function uniforms_ext_f32_link(object: object_t, mat: material_data_t, link: str
let decal: bool = context_is_decal(); let decal: bool = context_is_decal();
let decal_mask: bool = decal && operator_shortcut(map_get(config_keymap, "decal_mask") + "+" + map_get(config_keymap, "action_paint"), shortcut_type_t.DOWN); let decal_mask: bool = decal && operator_shortcut(map_get(config_keymap, "decal_mask") + "+" + map_get(config_keymap, "action_paint"), shortcut_type_t.DOWN);
let brush_decal_mask_radius: f32 = context_raw.brush_decal_mask_radius; let brush_decal_mask_radius: f32 = context_raw.brush_decal_mask_radius;
if (config_raw.brush_3d) { brush_decal_mask_radius *= context_raw.paint2d ? 0.55 * ui_view2d_pan_scale : 2.0;
brush_decal_mask_radius *= context_raw.paint2d ? 0.55 * ui_view2d_pan_scale : 2.0;
}
let radius: f32 = decal_mask ? brush_decal_mask_radius : context_raw.brush_radius; let radius: f32 = decal_mask ? brush_decal_mask_radius : context_raw.brush_radius;
let val: f32 = (radius * context_raw.brush_nodes_radius) / 15.0; let val: f32 = (radius * context_raw.brush_nodes_radius) / 15.0;
if (config_raw.pressure_radius && pen_down()) { if (config_raw.pressure_radius && pen_down()) {
@@ -33,7 +31,7 @@ function uniforms_ext_f32_link(object: object_t, mat: material_data_t, link: str
} }
let scale2d: f32 = (900 / base_h()) * config_raw.window_scale; let scale2d: f32 = (900 / base_h()) * config_raw.window_scale;
if (config_raw.brush_3d && !decal) { if (!decal) {
val *= context_raw.paint2d ? 0.55 * scale2d * ui_view2d_pan_scale : 2; val *= context_raw.paint2d ? 0.55 * scale2d * ui_view2d_pan_scale : 2;
} }
else { else {
@@ -79,13 +77,11 @@ function uniforms_ext_f32_link(object: object_t, mat: material_data_t, link: str
if (config_raw.pressure_hardness && pen_down()) { if (config_raw.pressure_hardness && pen_down()) {
val *= pen_pressure * config_raw.pressure_sensitivity; val *= pen_pressure * config_raw.pressure_sensitivity;
} }
if (config_raw.brush_3d) { if (context_raw.paint2d) {
if (context_raw.paint2d) { val *= 1.0 / ui_view2d_pan_scale;
val *= 1.0 / ui_view2d_pan_scale; }
} else {
else { val *= val;
val *= val;
}
} }
return val; return val;
} }