feat(迭代26 T4): 光柱连续 alpha 修边(带内渐变+纵向衰减)
- beams_rect 重写:带内 alpha 0→0.05→0 三角过渡(旧匀净零过渡硬边梯形退役)+纵向衰减上亮下暗; 连续 alpha 方案(grilling Q7 裁,与暗角/地图渐变保平滑同血统);filter=LINEAR 白名单随 T2 已落 - 冒烟 T4 结构断言 3 条(带心峰值≈0.05 按 8bit 截断量化校验/连续过渡像素 41373 个/纵向衰减 上半>下半 2 倍);冒烟 1037→1040/0;probe --click 全绿残留 0 - 引擎事实备忘:Godot Image 8bit 量化为截断(非四舍五入)——0.04977×255=12.69 存 12
This commit is contained in:
1 parent
7cac0dc1ab
commit
86e9aea176
2 files changed
+33
-3
No files matched your search
@@ -262,16 +262,26 @@ static func vignette_rect() -> TextureRect:
|
||||
|
||||
|
||||
# 斜光带(demo #v-start .beams——repeating-linear-gradient 102deg,暖白 5% 窄带 240-340/560px;
|
||||
# 程序纹理循环带,确定性生成零随机)
|
||||
# 程序纹理循环带,确定性生成零随机。迭代 26 T4 光柱硬边修(grilling Q7 裁=连续 alpha):
|
||||
# 带内 alpha 0→0.05→0 横向过渡(旧匀净+零过渡硬边梯形退役)+纵向衰减上亮下暗;
|
||||
# 纹理 filter=显式 LINEAR 白名单(与暗角/地图渐变同血统,见 T2)
|
||||
static func beams_rect() -> TextureRect:
|
||||
var img := Image.create(560, 560, false, Image.FORMAT_RGBA8)
|
||||
var ca := cos(0.2094) # 12°(102deg 带轴的垂直倾角)
|
||||
var sa := sin(0.2094)
|
||||
var beam_col := Color(1.0, 236.0 / 255.0, 200.0 / 255.0)
|
||||
var band_lo := 240.0
|
||||
var band_hi := 340.0
|
||||
var band_mid := (band_lo + band_hi) * 0.5
|
||||
var band_peak := 0.05
|
||||
var band_half := (band_hi - band_lo) * 0.5
|
||||
for y in 560:
|
||||
var v_fall := 1.0 - float(y) / 560.0 # 纵向衰减:上亮下暗(连续 alpha)
|
||||
for x in 560:
|
||||
var d := fposmod(x * ca + y * sa, 560.0)
|
||||
if d >= 240.0 and d < 340.0:
|
||||
img.set_pixel(x, y, Color(1.0, 236.0 / 255.0, 200.0 / 255.0, 0.05))
|
||||
if d >= band_lo and d < band_hi:
|
||||
var a: float = band_peak * (1.0 - absf(d - band_mid) / band_half) * v_fall
|
||||
img.set_pixel(x, y, Color(beam_col.r, beam_col.g, beam_col.b, a))
|
||||
var tr := TextureRect.new()
|
||||
tr.texture = ImageTexture.create_from_image(img)
|
||||
tr.stretch_mode = TextureRect.STRETCH_TILE
|
||||
|
||||
@@ -5544,6 +5544,26 @@ func _smoke_texture_filter() -> void:
|
||||
vg.free()
|
||||
var bm = uikit_s.beams_rect()
|
||||
check(bm.texture_filter == CanvasItem.TEXTURE_FILTER_LINEAR, "V3 白名单在位:光柱 beams 显式 LINEAR")
|
||||
# T4 光柱连续 alpha 结构断言(观感归目检):带心峰值 0.05/带缘连续过渡/纵向衰减上亮下暗
|
||||
var bimg: Image = bm.texture.get_image()
|
||||
var max_a := 0.0
|
||||
var mid_a := 0
|
||||
var top_sum := 0.0
|
||||
var bot_sum := 0.0
|
||||
for y in 560:
|
||||
for x in 560:
|
||||
var pa := bimg.get_pixel(x, y).a
|
||||
max_a = maxf(max_a, pa)
|
||||
if pa > 0.001 and pa < 0.049:
|
||||
mid_a += 1
|
||||
if y < 280:
|
||||
top_sum += pa
|
||||
else:
|
||||
bot_sum += pa
|
||||
check(max_a >= 12.0 / 255.0 and max_a <= 0.05,
|
||||
"T4 光柱带心峰值 α≈0.05(8bit 截断量化下限 12/255,实测 %.5f)" % max_a)
|
||||
check(mid_a > 100, "T4 光柱带内连续 alpha 过渡像素 %d 个(旧零过渡硬边已修)" % mid_a)
|
||||
check(top_sum > bot_sum * 2.0, "T4 光柱纵向衰减生效(上半亮度 %.0f > 下半 %.0f 的 2 倍——上亮下暗)" % [top_sum, bot_sum])
|
||||
bm.free()
|
||||
var gb = uikit_s.gradient_base(Color.BLACK, Color.WHITE)
|
||||
check(gb.texture_filter == CanvasItem.TEXTURE_FILTER_LINEAR, "V3 白名单在位:地图渐变 gradient_base 显式 LINEAR")
|
||||
|
||||
Reference in new issue
Block a user