На самом деле тут по-сути ничего такого сложного. Но дойти до этого было не совсем просто – необходимо было реализовать уйму визуально невидимых фич ) Что я и сделал, собственно.
Теперь надо уже добавлять функционал узлов и радоваться новому редактору! Ах да, и сделать ему нормальный интерфейс (этот же – просто тестовый, не более).
Медленно, но верно…
То времени нет, то нет времени! Писец. Теперь практически некогда заниматься движком ( А если и находится время, то уже ничего тогда не хочется ))
Но потихоньку таки пилю движок дальше, а точнее GUI D:
Ввёл понятия “свойства” и “аттрибуты” в движок, переписал чать GUI, кторая работала мягко говоря отвратно, добавил класс PropertyGrid(!), которому и посвящается сей пост.
PropertyGrid в зачаточном состоянии, но уже работает. Хоть как-то…. Добавил его и понятие “редакторов свойств”. Теперь при клике на свойство текстурной ноды открывается диалог открытия файлов (свой собственный, который умеет просматривать мою виртуальную файловую систему), можно выбрать файл и текстура в текстурной ноде мгновенно перезагрузится (и теперь появился вывод текстур внутри нод графа). Пилю дальше…
1. Фрагментный и вершинный шейдеры генерятся из графа.
For fun попробовал написать очень простой PathTracer прямо внутри HLSL шейдера для DX11
Нуэ, сферки и плоскости трассировать – задача достаточно тривиальная, с ней я, собсно, и справился : )
Вот ссылка на демку: http://l-proger.narod.ru/pathtracer_l.rar
Управление: только клавиша ПРОБЕЛ. Нажал – камера начала крутиться, ещё раз начал – перестала. Чем дольше камера будет находиться в статичном положении, тем качественней будет становится картинка на экране : )
Может потом фракталы прикручу, пока лень.
Потом моя долбанутая система обрезания геометрии контролов scissor-ом начала фейлить – Tab внутри Tab-а начал бажить, если заходил за границы клиентской области родителя.
Теперь вроде всё ок. Скроллится, двигается, нажимается… Только скин надо на XML перенести, а то пока не совсем гибко :