// VERTICAL SLICE - NOT FOR PRODUCTION // 封印印记(卡④ 法阵化批)——环+十字+环外压暗光圈,canvas_item 距离场实时绘制(无贴图缩放, // 格边 26–46px 连续可变下任意格边清晰)。 // 事实源:art-bible v3.41 §3.2「封印印记」(形/画法/光圈/层序纪律)+ §8.2「封印印记参数表」; // design/ux/battle.md「棋盘格尺寸公式」(格边 clampi 26–46)。 // 纪律:参数五枚+色全由 gd 侧逐次注入(参数单点 = ui_kit SEAL_* 五常量——禁在此改值, // 下方默认值仅为兜底且与 §8.2 同值);光圈不出格(半径夹 cell_px/2); // 零动效(不呼吸不脉冲——§2.1 挖掘期唯一在动 = 接触带微光);印记与光圈同用一色(光圈只改 alpha)。 // 坐标口径:VERTEX 为格件本件局部像素坐标(0..cell_px),不依赖 UV(同 cell_type_glow 口径)。 shader_type canvas_item; render_mode blend_mix; uniform float cell_px : hint_range(8.0, 128.0) = 46.0; uniform float ring_frac = 0.82; uniform float wall_frac = 0.11; uniform float arm_frac = 0.156; uniform float halo_frac = 0.09; uniform float halo_alpha : hint_range(0.0, 1.0) = 0.50; uniform float halo_gamma = 1.6; uniform vec4 mark_col : source_color = vec4(0.0, 0.0, 0.0, 1.0); varying vec2 v_local; void vertex() { v_local = VERTEX; } void fragment() { vec2 d2 = v_local - vec2(cell_px * 0.5); float r = length(d2); float ring_r = 0.5 * cell_px * ring_frac; float wall = wall_frac * 2.0 * ring_r; float arm = arm_frac * 2.0 * ring_r; float halo_w = 0.5 * cell_px * halo_frac; // 印记体:环带(ring_r-wall/2 ≤ r ≤ ring_r)或十字(轴向带内且 r < ring_r——四端顶到环内沿) bool in_ring = (r <= ring_r) && (r >= ring_r - wall * 0.5); bool in_arm = (r < ring_r) && ((abs(d2.x) < arm * 0.5) || (abs(d2.y) < arm * 0.5)); float a = 0.0; if (in_ring || in_arm) { a = 1.0; } else if (r > ring_r) { // 环外压暗光圈:自环外缘向外衰减(半径夹 cell_px/2——不出格、不外溢邻格) float rc = min(r, cell_px * 0.5); float t = clamp((rc - ring_r) / max(halo_w, 0.001), 0.0, 1.0); a = halo_alpha * pow(1.0 - t, halo_gamma); } COLOR = vec4(mark_col.rgb, mark_col.a * a); }