ru
Feedback
Random Rust Dev

Random Rust Dev

Открыть в Telegram

Разработка на языке Rust. Пишу простыни со своими мыслями о Rust и проектах на нем.

Больше
216
Подписчики
-124 часа
-27 дней
+230 день
Архив постов
Моя новая любимая ошибка в Rust
Моя новая любимая ошибка в Rust

Если кому-то очень скучно. Посмотрите документацию тут. Незамыленным глазом, понятно вообще че-там написано или туфта какая-то. https://docs.rs/edict/1.0.0-rc4/edict/index.html

Традиционное освещение VS рейтрейсинг
Традиционное освещение VS рейтрейсинг

Когда надоело говорить "боровить", говори "реквизировать"
Когда надоело говорить "боровить", говори "реквизировать"

Вы когда-нибудь уходили в отпуск, что бы работать над пет-проектом? Я снова так сделал, но на этот раз пет это стол для настолок. Я не делал мебель со школы. Пожелайте мне удачи

Пришло время, как мне показалось, стабилизировать edict Потратив несколько бессоных часов я обновил документацию, сделал краткий список фич и поправил баги сборки в разных конфигурациях. И вот представляю вам, релиз кандидат номер 2 https://crates.io/crates/edict/1.0.0-rc2

Макрос для экспорта всего и вся из плагина стал слишком большим и неудобным. Что ж, долой его, теперь все экспортируется из плагина прямо на месте. #[arcana::system] #[arcana::filter] #[arcana::job] #[arcana::init] и прочие атрибуты добавленные к айтемам экспортируют их из плагина. А заодно добавляют туда расположение в коде, так что теперь можно из редактора прыгнуть на код системы или ренерджобы по кнопке

photo content

Визуальное программирование! Пока что немного ограниченно - нельзя задать значения в аргументы. А еще нельзя добавить граф к сущности в редакторе, потому что нету инспектора сущностей. Можно только в коде. Ноды создаются из самых обычных функций. Плагин просто перечисляет их.

Правильный ответ - inline const https://doc.rust-lang.org/unstable-book/language-features/inline-const.html Фикс
fn get_iter<'a, T>(q: Option<&'a VecDeque<T>>) -> std::collections::vec_deque::Iter<'a, T> {
  q.unwrap_or(const { &VecDeque::new() }).iter()
}
Q: Почему это работает? A: Создаваемая ссылка становится &'static. Q: Почему нужен блок? A: Потому что иначе rustc берет ссылку уже в runtime контексте и она на temporary значение.

Возможно многие как и я ждут эту фичу. Она должны быть в следующием релизе на stable. Она позволяет исправить следующий код что бы тот компилился.

fn get_iter<'a, T>(q: Option<&'a VecDeque<T>>) -> std::collections::vec_deque::Iter<'a, T> {
  q.unwrap_or(&VecDeque::new()).iter()
}
Что же это за фича?

Начал тут описывать архитектуру движка какая выходит. https://github.com/zakarumych/nothing/blob/wip/README.md

Ну все, я официально умею в нейронки теперь. Закончил писать обучение и предсказание на HLSL. Оно еще и быстрее местами работает, чем из фреймворка. Добавил бы в движок, но в движке до сих пор нету 3д. Видимо пора :)

Добавил хуки к рендерграфу и научил эдитор показывать каждый выход если это Image2D.

Пора бы уже соединять чуть более сложный граф, чем draw -> present. Конечно же нашлось чуть более чем ноль багов.

"Почему бы не добавить конфигурацию рендерджобам прямо в граф?" подумал я пару дней назад

И конечно можно указать Desc на любом уровне, где его нет.

Опять я отвлекаюсь от графики. Недавно я сделал библиотеку egui-probe для генерации UI редактирования значения любых типов с помощью EguiProbe трейта, который можно задерайвить. Но это редактирование конкретного типа. А что если типа нет? Совсем без схемы делать ну такое. Хоче рантаймовую опциональную схему и генерировать UI для неё. Поэтому сегодня я сделал новую библиотеку. Она предоставляет тип Value который может принимать несколько классических вариантов данных. А так же тип Desc, который описыает схему. Сам он при этом может редактироваться с помощью EguiProbe. А объединяя Value и Desc можно получить ValueProbe, который может быть использован для редактирования значения согласно схеме. Самое замечательное, что почти не пришлось писать UI кода в этот раз. Всю тяжелую UI работу делает egui-probe На видео показан demo example.

После небольшого отдыха я продолжил работать над движком. Обновил зависимости и порефакторил. После чего занялся той самой задачей, от которой выгорел в прошлый раз - gpu work graph. И вот оно работает.