23 lines
650 B
GDScript3
23 lines
650 B
GDScript3
|
extends Sprite2D
|
|||
|
|
|||
|
@export var size := 512
|
|||
|
@export var export_path = ""
|
|||
|
|
|||
|
|
|||
|
func _ready() -> void:
|
|||
|
var image = Image.create_empty(size, size, false, Image.FORMAT_RGBA8)
|
|||
|
# 放射性 point light,圆心 alpha 通道为 1,随半径增加逐渐接近 0
|
|||
|
var r = size / 2.0
|
|||
|
for x in range(size):
|
|||
|
for y in range(size):
|
|||
|
var rate = pow(pow(x - r, 2) + pow(y - r, 2), 0.5) / r
|
|||
|
if rate > 1:
|
|||
|
image.set_pixel(x, y, Color.TRANSPARENT)
|
|||
|
else:
|
|||
|
# var a = 1 - rate
|
|||
|
var a = smoothstep(1.0, 0.0, rate)
|
|||
|
image.set_pixel(x, y, Color(1, 1, 1, a))
|
|||
|
if export_path:
|
|||
|
image.save_png(export_path)
|
|||
|
texture = ImageTexture.create_from_image(image)
|