Я новичок в Godot, но имею базовое c понимание GDScript и языка шейдеров Godot.
Я был удивлен, увидев, что для этого нет исчерпывающего учебника.
Я пытаюсь создать интерфейс, где игроки могут создавать свои собственные спрайты с помощью цветов на слайдере RGB. Спрайт - это волосы, поэтому в нем есть текстура, которую я не хочу потерять (поэтому я и описываю конечный результат как наложение цвета, как в фотошопе).
Я прикрепил материал к спрайт волос и создал новый шейдер, мой язык шейдеров читает:
shader_type canvas_item;
uniform float red;
uniform float green;
uniform float blue;
void fragment(){
COLOR = texture(TEXTURE, UV);
COLOR.r += red;
COLOR.g += green;
COLOR.b += blue;
}
Затем я сделал переменные, которые соответствуют каждому цвету. Затем для управления значением каждого цвета я добавил функцию, связанную со значением ползунков в пользовательском интерфейсе.
onready var red = material.get_shader_param("red")
onready var green = material.get_shader_param("green")
onready var blue = material.get_shader_param("blue")
func _on_rHSlider_value_changed(value):
red = value
material.set_shader_param("red", red)
func _on_gHSlider_value_changed(value):
green = value
material.set_shader_param("green", green)
func _on_bHSlider_value_changed(value):
blue = value
material.set_shader_param("blue", blue)
Мне не хватает какого-то метода диапазона для обработки значений? Должен ли я заниматься чем-то совершенно другим, более эффективным?
Пожалуйста, дайте мне знать! любая помощь очень ценится.