This media is not supported in your browser
VIEW IN TELEGRAM
"Почему бы не добавить конфигурацию рендерджобам прямо в граф?" подумал я пару дней назад
🥰4
This media is not supported in your browser
VIEW IN TELEGRAM
Пора бы уже соединять чуть более сложный граф, чем draw -> present.
Конечно же нашлось чуть более чем ноль багов.
Конечно же нашлось чуть более чем ноль багов.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Добавил хуки к рендерграфу и научил эдитор показывать каждый выход если это Image2D.
👍1
Ну все, я официально умею в нейронки теперь.
Закончил писать обучение и предсказание на HLSL.
Оно еще и быстрее местами работает, чем из фреймворка.
Добавил бы в движок, но в движке до сих пор нету 3д.
Видимо пора :)
Закончил писать обучение и предсказание на HLSL.
Оно еще и быстрее местами работает, чем из фреймворка.
Добавил бы в движок, но в движке до сих пор нету 3д.
Видимо пора :)
👍6🐳5
Начал тут описывать архитектуру движка какая выходит.
https://github.com/zakarumych/nothing/blob/wip/README.md
https://github.com/zakarumych/nothing/blob/wip/README.md
GitHub
arcana/README.md at wip · zakarumych/arcana
There's nothing here. Contribute to zakarumych/arcana development by creating an account on GitHub.
👍4
Возможно многие как и я ждут эту фичу.
Она должны быть в следующием релизе на stable.
Она позволяет исправить следующий код что бы тот компилился.
Что же это за фича?
Она должны быть в следующием релизе на stable.
Она позволяет исправить следующий код что бы тот компилился.
fn get_iter<'a, T>(q: Option<&'a VecDeque<T>>) -> std::collections::vec_deque::Iter<'a, T> {
q.unwrap_or(&VecDeque::new()).iter()
}
Что же это за фича?
🤔4
Правильный ответ - inline const
https://doc.rust-lang.org/unstable-book/language-features/inline-const.html
Фикс
Q: Почему это работает?
A: Создаваемая ссылка становится
Q: Почему нужен блок?
A: Потому что иначе rustc берет ссылку уже в runtime контексте и она на temporary значение.
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 значение.
🔥9👍1
Визуальное программирование!
Пока что немного ограниченно - нельзя задать значения в аргументы.
А еще нельзя добавить граф к сущности в редакторе, потому что нету инспектора сущностей.
Можно только в коде.
Ноды создаются из самых обычных функций.
Плагин просто перечисляет их.
Пока что немного ограниченно - нельзя задать значения в аргументы.
А еще нельзя добавить граф к сущности в редакторе, потому что нету инспектора сущностей.
Можно только в коде.
Ноды создаются из самых обычных функций.
Плагин просто перечисляет их.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Макрос для экспорта всего и вся из плагина стал слишком большим и неудобным.
Что ж, долой его, теперь все экспортируется из плагина прямо на месте.
и прочие атрибуты добавленные к айтемам экспортируют их из плагина.
А заодно добавляют туда расположение в коде, так что теперь можно из редактора прыгнуть на код системы или ренерджобы по кнопке
Что ж, долой его, теперь все экспортируется из плагина прямо на месте.
#[arcana::system]
#[arcana::filter]
#[arcana::job]
#[arcana::init]
и прочие атрибуты добавленные к айтемам экспортируют их из плагина.
А заодно добавляют туда расположение в коде, так что теперь можно из редактора прыгнуть на код системы или ренерджобы по кнопке
🔥7👍1
Пришло время, как мне показалось, стабилизировать
Потратив несколько бессоных часов я обновил документацию, сделал краткий список фич и поправил баги сборки в разных конфигурациях.
И вот представляю вам, релиз кандидат номер 2
https://crates.io/crates/edict/1.0.0-rc2
edict
Потратив несколько бессоных часов я обновил документацию, сделал краткий список фич и поправил баги сборки в разных конфигурациях.
И вот представляю вам, релиз кандидат номер 2
https://crates.io/crates/edict/1.0.0-rc2
crates.io
crates.io: Rust Package Registry
🔥9🎉2
Вы когда-нибудь уходили в отпуск, что бы работать над пет-проектом?
Я снова так сделал, но на этот раз пет это стол для настолок.
Я не делал мебель со школы. Пожелайте мне удачи
Я снова так сделал, но на этот раз пет это стол для настолок.
Я не делал мебель со школы. Пожелайте мне удачи
🔥22👍2😁1💯1
Если кому-то очень скучно. Посмотрите документацию тут.
Незамыленным глазом, понятно вообще че-там написано или туфта какая-то.
https://docs.rs/edict/1.0.0-rc4/edict/index.html
Незамыленным глазом, понятно вообще че-там написано или туфта какая-то.
https://docs.rs/edict/1.0.0-rc4/edict/index.html
docs.rs
edict - Rust
Edict is a fast, powerful and ergonomic ECS crate that expands traditional ECS feature set. Written in Rust by your fellow 🦀
❤4👀1
Я сегодня много думал.
Думал о битсетах и Блум-фильтрах.
Захотелось мне создать Блум-фильтр-лайк структуру, по которой можно было бы итерироваться.
То есть вот буквально 3 операции. Добавить индекс, проверить наличие и проитерироваться.
С возможностью получить ложно положительные результаты в двух последних.
И вот идея.
Наверное многие из нас знакомы с иерархическими битсетами. Где мы ставим биты на нижнем уровне для отдельных индексов, а выше для все больших диапозонов, и так 3-4 и более уровней.
При итерации мы пропускаем огромные диапазоны если бит не выставлен. А если выставлен, то смотрим биты суб-диапазонов, спускаемся все ниже до отдельных индексов на каждый бит.
И все бы ничего, но нам надо памяти по 1 биту на каждый возможный индекс. Ну да, лениво выделяя ее по возможности, но со временем вот так много.
А что если разных значений мы выставить можем миллиард, но одновременно лишь сотни?
Как насчет использовать Блум-фильтр на каждом уровне? Сильно меньше чем целый бит на возможный индекс, а стремиться к 2 * сколько одновременно храним индексов.
А итерируемся так же. Просто с ложными индексами с небольшой вероятностью (пока не переполнили слишком фильтр).
Грубые подсчеты говорят, что должно быть сильно экономно.
Думал о битсетах и Блум-фильтрах.
Захотелось мне создать Блум-фильтр-лайк структуру, по которой можно было бы итерироваться.
То есть вот буквально 3 операции. Добавить индекс, проверить наличие и проитерироваться.
С возможностью получить ложно положительные результаты в двух последних.
И вот идея.
Наверное многие из нас знакомы с иерархическими битсетами. Где мы ставим биты на нижнем уровне для отдельных индексов, а выше для все больших диапозонов, и так 3-4 и более уровней.
При итерации мы пропускаем огромные диапазоны если бит не выставлен. А если выставлен, то смотрим биты суб-диапазонов, спускаемся все ниже до отдельных индексов на каждый бит.
И все бы ничего, но нам надо памяти по 1 биту на каждый возможный индекс. Ну да, лениво выделяя ее по возможности, но со временем вот так много.
А что если разных значений мы выставить можем миллиард, но одновременно лишь сотни?
Как насчет использовать Блум-фильтр на каждом уровне? Сильно меньше чем целый бит на возможный индекс, а стремиться к 2 * сколько одновременно храним индексов.
А итерируемся так же. Просто с ложными индексами с небольшой вероятностью (пока не переполнили слишком фильтр).
Грубые подсчеты говорят, что должно быть сильно экономно.
🔥2