All posts by l-proger

А я в Воронеже

Таки свершилось! И я, собственно, переехал )

Ни чуть не жалею о содеянном )  Личная жизнь +100500 ,  устроился сразу на работу, познал написание  драйверов для windows, начал жить как человек. В общем всё супер ) Надеюсь так дальше и будет продолжаться. Hell yeah!

0
0

GUI vs Лень (?) Хотя.. не лень.

Нет вдохновения, пишется всё крайне медленно. Наверно из за того, что нервничаю из за предстоящих событий в ближайшем будущем, мда…

1. Фрагментный и вершинный шейдеры генерятся из графа.

2. Доступны вон несколько узлов шейдера (справа на скрине список), остальные по мере необходимости добавлю.
3. Нуэ, менюхи добавил. Хоть и страшные, но мне всё равно.

0
0

DX11 HLSL PathTracer

Картинка кликабельна.

For fun попробовал написать очень простой PathTracer прямо внутри HLSL шейдера для DX11

Нуэ, сферки и плоскости трассировать – задача достаточно тривиальная, с ней я, собсно, и справился : )

Вот ссылка на демку:  http://l-proger.narod.ru/pathtracer_l.rar

Управление:   только клавиша ПРОБЕЛ.  Нажал – камера начала крутиться, ещё раз начал – перестала.   Чем дольше камера будет находиться в статичном положении, тем качественней будет становится картинка на экране : )

Может потом фракталы прикручу, пока лень.

0
0

GUI v6

Добавил Slider, ProgressBar, ComboBox, Edit.   Добавил потоковое воспроизведение музыки и контроль позиции воспроизведения дорожки слайдером.

UPD:  ах да, ещё добавил тайлинг атласа 🙂

0
0

GUI v4

Переписал внутренний скиннинг, хоть это визуально и не заметно, пофиксил 100500 багов, вон во вложенном Tab-контроле рамка заработала : )  На предыдущем срине её нет не потому, что я её отключил, а потому, что она мистическим образом не рендерилась.

Потом моя долбанутая система обрезания геометрии контролов scissor-ом начала фейлить – Tab внутри Tab-а начал бажить, если заходил за границы клиентской области родителя.

Теперь вроде всё ок. Скроллится, двигается, нажимается…  Только скин надо на XML перенести, а то пока не совсем гибко :

0
0

GUI v2

Блин!  Как задрал этот GUI уже!

Но написать надо! Ведь использование готового – не есть путь для настоящих джедаев (дада, напишу потом компилер, ОС, комп спаяю, генератор энергии сооружу и т.п.)

Итак, что изменилось:

1. Ололош, внутри опять всё переписал, на этот раз  намного чётче!  GUI теперь может хендлить разные виды топологии геометрии  (юзаю  для линий)
2. GUI теперь поддерживает рендеринг сплайнов!  Юхуу!
3. ДОБАВИЛ НАКОНЕЦ Drag & Drop !!  Вон на скрине у нодов есть синие хреньки – прямоугольники!  Просто наживаем мышей на один и перетягиваем на другой, отпускаем мышь иии..БАЦ )  Сплайном соединились!   Чотко же! = )

Осталось сделать удаление связей  (и дохрена контролов типа TabControl ).   WTF! Уже 4:25!!!!!!!    Ушёл спать, срочно!

0
0

GUI. FUCK YEAH, переделал рендеринг!

Вот оно, ребята, GUI моей мечты!  😀   Не, ну оформление конечно кака, но не суть )  Главное ведь что оно своё :3

upd: дада! Опять без скина GUI )  Скины поддерживаются но мне лениво их рисовать 😀

Что изменилось:

Теперь рендеринг всего GUI идёт обычно в 1-5 DIP-ов а не в 100500 как раньше.  Сам по себе GUI не только может, но и рисуется ровно в 1 DIP, однако дополнительные ДИП-ы нужны, если в нём юзаются пользовательские текстуры!   На скрине, приведённом выше, количество DIP-ов = 3 потому что вон та хренька красная сверху слева – это текстура сцены, которая какраз перед рендером GUI и рисуется. Из за неё и не 1 а 3 дипа:  рисуем GUI до картинки, рисуем картинку, рисуем остальное.

То есть я вместо моего адски дебилоидного рендеринга (каждый элемент рисовал сам себя, имел СВОЙ вершинный и константный буфер..омг) сделал чоткий батчинг : )

На самом деле это конечно не сложно совсем. Но кое что изначально слегка напрягло:  родительские контролы должны собой обрезать дочерние контролы, чтобы дочерние не рендерились за границами родительских. Раньше я рекурсивно рендерил, постоянно спуская ScissorRectangle и применяя его для каждого контрола.  И было всё вздрыжне. НО! Теперь то у меня всё всё всё может нарисоваться за 1 DIP! И Scissor хардварный не применить (  Бида!  Вот пришлось симулировать его – вручную обрезаю scissor-ом квады контролов  (модифицирую геометрию и текстурные координаты квадов). Впринципе тоже детсвкая задача : )   Обрезание геометрии делается прямо во время её генерации, а генерация вызывается если изменился scissor. Всё просто.

На скрине новые контролы (сейчас сел и допилил их):

1. ScrollBar  – он один для вертикального и горизонтального скроллирования! Конструктор требует, чтобы юзер указал направление скроллинга

2. ScrollablePlane – вон тот квадратик посреди скрина с 2 скроллами сразу.   ScrollablePlane – наследник Plane  + добавил скроллы.  Можно скроллить теперь контент очень удобно : )  Надо бы прикрутить “кинетические скроллы” (точнее эти модифицировать), чтобы можо было дёрнуть ползунок, а он ещё будет некоторое время двигаться, останавливаясь  (как сейчас на мобилах любят делать)

Adios, ушёл дальше болеть : (

0
0