День добрый, всем любителям Godot. Бомбил опять спьяну, вообще без оснований причем, так-то все по делу. Ну ладно, для сообщества буду писать трезвый, а там ну прорывается личное, хрен с ним. Предыдущий пост по ссылке ниже.
Godot. Путь к основам VFX. Пишем свой outline shader. Ч2
А теперь перейду к возникшей проблеме, вообще она возникла не только сейчас, она была изначально, так что рано я радовался, просто в силу слабого понимания я её пропустил))
Кажется что тут все хорошо с градиентом, но есть такая маленькая, но очень неприятная ошибка.
На картинке ниже её будет наглядно видно. Хотя это тот же самый шейдер.
С умным видом хотел было написать, пост, как все легко и просто, но не тут-то было, напишу сейчас что собирался, в процессе будет понятно, почему так.
Ну собственно, все как официальном туториале.
Так только в чем проблема, очень не зря я обрезал спрайт таким образом, чтобы это была маленькая текстурка внутри спрайта с большим полем. Заливка идет сверху вниз и работает как надо, но поскольку текстурка малюсенькая по сравнению со спрайтом, то получается такая жопа. Сейчас покажу наглядно видяшкой.
Вот собственно и проблема, как бы можно конечно её решить некоторыми оговорками и установить пару правил по нарезке арта, но эта проблема проявится если допустим спрайт будет состоять из двух картинок в одной, не знаю какая-нибудь вишня без веточек или ещё что-нибудь подобное, у них не будет уникальной градиентной заливки для каждой внутри одного спрайта. Ну и разумеется этот способ не подойдет, если делать градиент для заливки из спрайта наружу.
https://godotshaders.com/?s=outline
Можете посмотреть варианты выложенные, даже довольно полный Colorful Outline
https://godotshaders.com/shader/colorful-outline/
Та же самая проблема. Как видите ни белого ни синего тут не наблюдается. Да ещё меньше тянет на универсальный шейдер даже( А надо решение универсальное, чтобы на джемах применять к примеру, там нет времени расписывать правила и указания, надо шлепать максимально быстро. Ну короче, это будут костыли переложенные на арт-отдел, мне не нравится.
Ну вот проблема обозначена, как её решить я пока хз, в обычном программировании задача пустячковая, даже простое решение в лоб, найди самые крайние точки по всем сторонам и от них уже циклом пробежаться внутрь, а тут над каждым пикселем идут же параллельные вычисления и как-то странно будет для каждого пикселя искать граничные значения и по ним уже вычислять, интуитивно мне кажется что это плохое решение и какое-то не шейдерное)
Голова пухнет довольно сильно, тут должно быть очень простое и красивое решение, не знаю когда найду и найду-ли вообще, придется видимо гуглом интенсивнее пользоваться. Не вижу смысла пока писать про сглаживание, пока не решена эта проблема, стикер налепил на монитор, как придумаю хоть чего, будет продолжение этой серии.
Если надолго залипну, то переключусь на партиклы в Godot4 пока, а может на TileMap, охуенно сделано в отличии от Godot3, но ещё очень сырой прототип пока стыдно показывать) Клон Into the Breach начал делать, кайфово все в ней, кроме геймплея, бомбит с него, сюжетку бы на этой механике и сеттинге, я бы все dlc покупал)
Спасибо за внимание, всем Godot.
P.S. Скоро будет джем на сониккон, если что ищу команду, но больничный всё, выхожу завтра на работу, так что не смогу трое суток фултайм, но приобщиться хотелось бы, кто в теме пишите
в личку. Естественно только на Godot)
https://t.me/JunkyRoach
или в DS, но там я редко проверяю
Boogernator#5177