thickness edge detection

This commit is contained in:
Matteo Sonaglioni
2026-06-04 21:23:18 +02:00
parent b8486e1aa3
commit 3ceadf4a0f
3 changed files with 15 additions and 8 deletions

View File

@@ -1,6 +1,9 @@
class_name EdgeDetectionCompositor
extends CompositorEffect
# --- MODIFICATO: Parametro esportato per l'Inspector ---
@export_range(0.0, 5.0, 0.1) var line_thickness: float = 1.0
var rd: RenderingDevice
var shader: RID
var pipeline: RID
@@ -78,8 +81,8 @@ func _render_callback(p_effect_callback_type: EffectCallbackType, p_render_data:
var texture_sampler = RDSamplerState.new()
texture_sampler = rd.sampler_create(texture_sampler)
var parameters := PackedFloat32Array([size.x, size.y, 0.0, 0.0])
# --- MODIFICATO: Inviato il parametro line_thickness nel buffer GPU ---
var parameters := PackedFloat32Array([size.x, size.y, line_thickness, 0.0])
var inv_proj_mat := p_render_data.get_render_scene_data().get_cam_projection().inverse()
var inv_proj_mat_array := PackedVector4Array([inv_proj_mat.x, inv_proj_mat.y, inv_proj_mat.z, inv_proj_mat.w])

View File

@@ -4,9 +4,11 @@
layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
// --- MODIFICATO: Inserito line_thickness e mantenuto il padding (reserved) ---
layout(set = 0, binding = 0, std430) readonly buffer Params {
vec2 raster_size;
vec2 reserved;
float line_thickness;
float reserved;
mat4 inv_proj_mat;
} params;
@@ -89,12 +91,13 @@ void main() {
// Da qui in poi, il codice prosegue normalmente solo per gli altri oggetti
// UV ofssets
// --- MODIFICATO: Aggiunto multiplier "thickness" agli UV offsets ---
float thickness = params.line_thickness;
vec2 uv_offsets[4];
uv_offsets[0] = uv_normalized + vec2(0.0, -1.0) * texel_size + offset;
uv_offsets[1] = uv_normalized + vec2(0.0, 1.0) * texel_size + offset;
uv_offsets[2] = uv_normalized + vec2(1.0, 0.0) * texel_size + offset;
uv_offsets[3] = uv_normalized + vec2(-1.0, 0.0) * texel_size + offset;
uv_offsets[0] = uv_normalized + vec2(0.0, -1.0) * texel_size * thickness + offset;
uv_offsets[1] = uv_normalized + vec2(0.0, 1.0) * texel_size * thickness + offset;
uv_offsets[2] = uv_normalized + vec2(1.0, 0.0) * texel_size * thickness + offset;
uv_offsets[3] = uv_normalized + vec2(-1.0, 0.0) * texel_size * thickness + offset;
float mask = ceil(raw_roughness);

View File

@@ -157,6 +157,7 @@ access_resolved_depth = false
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("4_lpdy6")
line_thickness = 2.0
metadata/_custom_type_script = "uid://brcimd12tx3dm"
[sub_resource type="Compositor" id="Compositor_mb5yv"]