You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
699 B
GDScript
31 lines
699 B
GDScript
|
9 months ago
|
extends MeshInstance3D
|
||
|
|
class_name LevelFog
|
||
|
|
|
||
|
|
var rng = RandomNumberGenerator.new()
|
||
|
|
var mat = get_active_material(0)
|
||
|
|
|
||
|
|
|
||
|
|
func _ready():
|
||
|
|
var size: int = 8
|
||
|
|
|
||
|
|
var data = []
|
||
|
|
for z in range(size):
|
||
|
|
data.append(self.create_slice(size))
|
||
|
|
|
||
|
|
#var texture = Texture2DArray.new()
|
||
|
|
#texture.create_from_images(data)
|
||
|
|
var texture = ImageTexture3D.new()
|
||
|
|
texture.create(Image.FORMAT_RGB8, size, size, size, false, data)
|
||
|
|
|
||
|
|
mat.set_shader_parameter("u_texture", texture)
|
||
|
|
|
||
|
|
|
||
|
|
func create_slice(size):
|
||
|
|
var image = Image.new()
|
||
|
|
image.create(size, size, false, Image.FORMAT_RGB8)
|
||
|
|
for x in range(size):
|
||
|
|
for y in range(size):
|
||
|
|
image.set_pixel(x, y, Color.from_hsv(rng.randf(), rng.randf(), rng.randf()))
|
||
|
|
|
||
|
|
return image
|