Создание динамического неба в Godot 4.0 с помощью новых шейдеров

Частой проблемой, с которой сталкивались пользователи Godot 3.x, была неспособность создавать динамическое небо, которое обновляется в режиме реального времени. Ситуация меняется с вводом шейдеров для неба. Реализацию можно посмотреть на Гитхабе.

Создание динамического неба в Godot 4.0 с помощью новых шейдеров
3030

Вобще и в 3.хх нет никакой проблемы сделать динамические шейдерные облака. Делаем отдельную ноду viewport, в нее добавляем sprite (ImageTexture), где пишем любой шейдер. 

В скрипте камеры связываем вьюпорт и environment (разметка кода поедет):
onready var sky = get_tree().get_root().get_node("main/sky")

func _ready():

var iChannel = sky.get_viewport().get_texture()

self.environment = load("res://default_env.tres") as Environment
self.environment.background_sky.set_panorama(iChannel)

В viewport можно добавлять еще сколько угодно sprite с шейдерами или текстурами (например панораму отдаленного ландшафта, cityscape...) и тасовать их между собой как слои, выбирая что будет на каком плане, и даже вращать. Дополнительного кода чтоб все это показывалось не надо.

Выглядеть это все будет как-то так (облака бегут слева направо, за cityscape'ом):

1