Фундаментальные знания
И снова пост из разряда "размышлений на тему". В любой области есть такая проблема, что знания могут стать не актуальны и невостребованными рынком. Технологии умирают, что-то устаревает и т.п. Юнити пока это конечно не грозит, но думаю что когда кто-то начинал изучать Action Script 3 и подумать не мог, что его убьёт HTML5 (но это не значит, что за убийства флеша можно простить! Помним! Скорбим! Не простим!) Поэтому работа в IT это путь постоянного обучения. При этом очень важно актуализировать знания. И где-то тут по тексту мне уже кажется должна быть реклама какого-то курса, но нет) Да и я не хочу пока в этом канале рекламу делать XD
Есть одна абсолютно не устаревающая вещь. Фундаментальные знания. Почему любой Senior разработчик в среднем легко сможет перескочить с технологии Х, на технологию Y? Будет плеваться конечно, но перескочит) Потому что в программировании суть везде одна, меняется чуть-чуть синтаксис, где-то инструменты удобнее (привет джавистам от .Net разрабов), где-то чуть сложнее, так как придётся вникнуть в другую парадигму. Но всё программирование по сути сводится к простой фразе. Программирование — это превращение одного представления данных в другое представление данных посредством серии обработок :) И так по сути можно описать любую программу. Поэтому фундаментальные вопросы архитектуры, простоты, чистоты кода не меняются в зависимости от технологии. И лучше учить их, чем конкретику фреймворков. Конкретику и нюансы фреймворка надо знать только в том фреймворке, в котором ты работаешь. Я просто встречал ребят которые знают миллиард фреймворков, но по сути про программирование не знают ничего (а тут стоит передать привет части фронтендеров)
Чем же прикольны вузовские знания? Многие говорят, что они устарели, что то что проходят в вузах уже не нужно в реальности, так как технологии обновляются быстрее, чем университетские программы. И это так) Но лишь наполовину. Если брать конкретные прикладные технологии, конкретные языки и т.п. в вузе иногда преподаётся что-то древнее. У когда я учился у нас преподавали: C++ — который в целом ой как не скоро можно будет назвать "устаревшим", но у нас преподавали какой-то древний стандарт), Ассемблер — который полезно знать для понимания работы ПК и больше ни за чем и собственно Action Script 3. Но помимо прочего на парах рассказывали про ООП (который не меняется уже хз сколько лет концептуально), про паттерны, про классы, объекты и т.п. И да, конечно я понимаю что можно было в курсе сделать лучше, спустя 10 лет программирования, но оглядываясь назад по той же теории баз данных и прочим вещам нам давали неплохую фундаменталку. Так как ну модель OSI и теорема CAP так же особо сильно не меняются со временем)
И моё любимое фундаментальное знание — это математика. Понимание теории множеств, дискретной математики — дают буст в целом в любой области программирования. Теория функции комплексного переменного и матан — больше про игровую индустрию и математическое моделирование. Линал — очень полезен при работе с графикой. И это те знания которые не устаревают вообще, так как они не меняются и имеют огромную широту применения. Даже если надоест программирование, есть очень много применений математического моделирования и той же комбинаторики :)
Практические навыки в конкретной технологии тоже нужны. Но чтобы не переживать что "знания будут не актуальны" и "устареют" лучше делать максимальный упор на фундаментальные знания. Тогда смена областей, языков и т.п. будет происходить буквально по щелчку пальцев и прочтению одного мануала. Там уже будет как в анекдоте :)
Стоят студенты и курят. И у них спрашивают:
- Hу как, мужики, за сколько сможете китайский выучить?
(Студенты) - А методичка есть?
- Да, есть.
(Студенты) - Hу сейчас докурим и сдадим!
И снова пост из разряда "размышлений на тему". В любой области есть такая проблема, что знания могут стать не актуальны и невостребованными рынком. Технологии умирают, что-то устаревает и т.п. Юнити пока это конечно не грозит, но думаю что когда кто-то начинал изучать Action Script 3 и подумать не мог, что его убьёт HTML5 (но это не значит, что за убийства флеша можно простить! Помним! Скорбим! Не простим!) Поэтому работа в IT это путь постоянного обучения. При этом очень важно актуализировать знания. И где-то тут по тексту мне уже кажется должна быть реклама какого-то курса, но нет) Да и я не хочу пока в этом канале рекламу делать XD
Есть одна абсолютно не устаревающая вещь. Фундаментальные знания. Почему любой Senior разработчик в среднем легко сможет перескочить с технологии Х, на технологию Y? Будет плеваться конечно, но перескочит) Потому что в программировании суть везде одна, меняется чуть-чуть синтаксис, где-то инструменты удобнее (привет джавистам от .Net разрабов), где-то чуть сложнее, так как придётся вникнуть в другую парадигму. Но всё программирование по сути сводится к простой фразе. Программирование — это превращение одного представления данных в другое представление данных посредством серии обработок :) И так по сути можно описать любую программу. Поэтому фундаментальные вопросы архитектуры, простоты, чистоты кода не меняются в зависимости от технологии. И лучше учить их, чем конкретику фреймворков. Конкретику и нюансы фреймворка надо знать только в том фреймворке, в котором ты работаешь. Я просто встречал ребят которые знают миллиард фреймворков, но по сути про программирование не знают ничего (а тут стоит передать привет части фронтендеров)
Чем же прикольны вузовские знания? Многие говорят, что они устарели, что то что проходят в вузах уже не нужно в реальности, так как технологии обновляются быстрее, чем университетские программы. И это так) Но лишь наполовину. Если брать конкретные прикладные технологии, конкретные языки и т.п. в вузе иногда преподаётся что-то древнее. У когда я учился у нас преподавали: C++ — который в целом ой как не скоро можно будет назвать "устаревшим", но у нас преподавали какой-то древний стандарт), Ассемблер — который полезно знать для понимания работы ПК и больше ни за чем и собственно Action Script 3. Но помимо прочего на парах рассказывали про ООП (который не меняется уже хз сколько лет концептуально), про паттерны, про классы, объекты и т.п. И да, конечно я понимаю что можно было в курсе сделать лучше, спустя 10 лет программирования, но оглядываясь назад по той же теории баз данных и прочим вещам нам давали неплохую фундаменталку. Так как ну модель OSI и теорема CAP так же особо сильно не меняются со временем)
И моё любимое фундаментальное знание — это математика. Понимание теории множеств, дискретной математики — дают буст в целом в любой области программирования. Теория функции комплексного переменного и матан — больше про игровую индустрию и математическое моделирование. Линал — очень полезен при работе с графикой. И это те знания которые не устаревают вообще, так как они не меняются и имеют огромную широту применения. Даже если надоест программирование, есть очень много применений математического моделирования и той же комбинаторики :)
Практические навыки в конкретной технологии тоже нужны. Но чтобы не переживать что "знания будут не актуальны" и "устареют" лучше делать максимальный упор на фундаментальные знания. Тогда смена областей, языков и т.п. будет происходить буквально по щелчку пальцев и прочтению одного мануала. Там уже будет как в анекдоте :)
Стоят студенты и курят. И у них спрашивают:
- Hу как, мужики, за сколько сможете китайский выучить?
(Студенты) - А методичка есть?
- Да, есть.
(Студенты) - Hу сейчас докурим и сдадим!
👍17
Туториал по симпатичному дождю в 2д в Unity. Просто и со вкусом по сути по работе с партикл системой )
https://www.youtube.com/watch?v=fpGMz5Ia0XM
https://www.youtube.com/watch?v=fpGMz5Ia0XM
YouTube
Unity 2D Rain Tutorial
Let's see how we can add a cool 2D Rain to your game! This time we have a 2D Tutorial and we are in the 2D Renderer of URP and we will use the Particle System! Enjoy!
***Follow Rabbit's Tale game development***
Steam: https://store.steampowered.com/app/…
***Follow Rabbit's Tale game development***
Steam: https://store.steampowered.com/app/…
👍6
Классный репозиторий по переводу glsl шейдеров в shaderlab юнити :) Работает не идеально и пишет прям много лишнего, но упрощает работу по переписыванию до "отрезать лишнее" :) https://github.com/pema99/glsl2hlsl
GitHub
GitHub - pema99/glsl2hlsl: Shadertoy to Unity shader converter
Shadertoy to Unity shader converter. Contribute to pema99/glsl2hlsl development by creating an account on GitHub.
👍5
Советы по работе с префабами в Unity
https://habr.com/ru/post/687416/
Давно я не выпускал статей и вот дошли руки написать о том, о чём больше нельзя молчать! Может кому-то пригодятся мои мысли, соображения, опыт и советы на эту тему :)
https://habr.com/ru/post/687416/
Давно я не выпускал статей и вот дошли руки написать о том, о чём больше нельзя молчать! Может кому-то пригодятся мои мысли, соображения, опыт и советы на эту тему :)
Хабр
Советы по работе с префабами в Unity
Всем привет! Меня зовут Григорий Дядиченко, и я технический продюсер. Сегодня хотелось бы обсудить работу с префабами, их организацию и несколько советов по тому, как работать с префабами и с...
🔥10👍1
Пошумим?
Если вы работаете с графикой, то все виды шумов должны быть вашими лучшими друзьями. Я делал очень много различных эффектов основываясь чисто на шуме перлина. По этой причине очень важно напомнить про keijiro сана и про его репозиторий, который лежит теперь удобно пакетом в registry https://github.com/keijiro/NoiseShader
Рекомендую добавить себе в закладки, запомнить что он есть и пользоваться. Волны делаются шумом, прикольные абстрактные формы делаются шумом. Надеюсь скоро наконец-таки зарелизится один проект, и я смогу показать какую ещё симпатичную штуку можно сделать с помощью шума. Как пример интересных работ, как шумом перлина дистортится пламя https://www.graphicon.ru/html/2008/proceedings/English/S8/Paper_3.pdf :) В общем если заниматься VFX в шуме лучше разбираться)
Вообще надо всё же собраться с силами и написать большую обзорную статью про шум и его применения. Так сказать с чем его готовят) Но сейчас пока и так слишком много дел на сентябрь)
Если вы работаете с графикой, то все виды шумов должны быть вашими лучшими друзьями. Я делал очень много различных эффектов основываясь чисто на шуме перлина. По этой причине очень важно напомнить про keijiro сана и про его репозиторий, который лежит теперь удобно пакетом в registry https://github.com/keijiro/NoiseShader
Рекомендую добавить себе в закладки, запомнить что он есть и пользоваться. Волны делаются шумом, прикольные абстрактные формы делаются шумом. Надеюсь скоро наконец-таки зарелизится один проект, и я смогу показать какую ещё симпатичную штуку можно сделать с помощью шума. Как пример интересных работ, как шумом перлина дистортится пламя https://www.graphicon.ru/html/2008/proceedings/English/S8/Paper_3.pdf :) В общем если заниматься VFX в шуме лучше разбираться)
Вообще надо всё же собраться с силами и написать большую обзорную статью про шум и его применения. Так сказать с чем его готовят) Но сейчас пока и так слишком много дел на сентябрь)
GitHub
GitHub - keijiro/NoiseShader: Noise shader library for Unity
Noise shader library for Unity. Contribute to keijiro/NoiseShader development by creating an account on GitHub.
👍13
Значит хотел с утра начать писать систему для визуализации графов для статьи по графам. Чтобы загрузить какой-то графовый датасет и показать как там можно визуализировать) Оптимизации и т.п. С демкой в WebGL)
Но сделать же нужно нормально, поэтому я закопался в рефлексию и парсинг CSV с ней. Чтобы система не была заточена прям под конкретный граф, то пришлось написать конструкцию, как на скрине, чтобы элегантно пробрасывать маппинги) Видимо статья будет ещё про подходы к асинхронности на вебгл (такси там юзать as is нельзя, проще на корутинах делать) и ещё примером того, как можно обращаться с рефлексией) Ну либо надо будет один репозиторий использовать, как иллюстрацию для пары статей/постов, когда я допишу этого монстра)
Начал я с утра писать проект по графам XD
Но сделать же нужно нормально, поэтому я закопался в рефлексию и парсинг CSV с ней. Чтобы система не была заточена прям под конкретный граф, то пришлось написать конструкцию, как на скрине, чтобы элегантно пробрасывать маппинги) Видимо статья будет ещё про подходы к асинхронности на вебгл (такси там юзать as is нельзя, проще на корутинах делать) и ещё примером того, как можно обращаться с рефлексией) Ну либо надо будет один репозиторий использовать, как иллюстрацию для пары статей/постов, когда я допишу этого монстра)
Начал я с утра писать проект по графам XD
👍3
Unity написали небольшую статью в блоге «как сделать свой кодстайл») Больше кодстайлов богам кодстайлов :) https://blog.unity.com/technology/clean-up-your-code-how-to-create-your-own-c-code-style
Unity Blog
Clean up your code: How to create your own C# code style | Unity Blog
While there’s more than one way to format Unity C# code, agreeing on a consistent code style for your project enables your team to develop a clean, readable, and scalable codebase. In this blog, we provide some guidelines and examples you can use to develop…
🤡4👍2
Интересное видео про рекурсию https://www.youtube.com/watch?v=ngCos392W4w
YouTube
5 Simple Steps for Solving Any Recursive Problem
In this video, we take a look at one of the more challenging computer science concepts: Recursion. We introduce 5 simple steps to help you solve challenging recursive problems and show you 3 specific examples, each progressively more difficult than the last.…
🔥1
FFT
Быстрое преобразование Фурье — это основа, это знать надо. Я нашёл довольно интересный видос про него https://www.youtube.com/watch?v=h7apO7q16V0 Но вообще это алгоритм который советую изучить в вкурить каждому, так как имеет очень широкий спектр применений) Ещё тут можно почитать статью про него https://towardsdatascience.com/fast-fourier-transform-937926e591cb
Как несколько примеров:
Сжатие изображений https://www.youtube.com/watch?v=gGEBUdM0PVc
Суммирование и фильтрация сигналов https://www.researchgate.net/figure/Fourier-transform-of-a-sum-of-sinusoids-and-filtering-the-highest-frequency_fig3_237061998
Поиск размылия на картинке https://pyimagesearch.com/2020/06/15/opencv-fast-fourier-transform-fft-for-blur-detection-in-images-and-video-streams/#:~:text=The%20Fast%20Fourier%20Transform%20is,mathematics%2C%20science%2C%20and%20engineering.
И ещё несколько https://www.quora.com/What-are-some-applications-of-2D-FFT-for-image-processing-computer-vision-computer-graphics
Важно понимать, что это только кажется, что понимание "логики сигналов". И того, что звук и картинка — это по сути аналовые сигналы переведённые в цифровые — нужна только тем, кто пишет движки, алгоритмы компрессии и т.п. Не скажу что часто, но периодически встречаются задачи, где это знание бывает весьма полезно. И как всегда. Важно не уметь "написать реализацию из головы". Сам алгоритм известен и его реализацию можно откуда-то скопировать. Важно понимать суть и его применение, чтобы потом было понятно "что искать в гугле"
Быстрое преобразование Фурье — это основа, это знать надо. Я нашёл довольно интересный видос про него https://www.youtube.com/watch?v=h7apO7q16V0 Но вообще это алгоритм который советую изучить в вкурить каждому, так как имеет очень широкий спектр применений) Ещё тут можно почитать статью про него https://towardsdatascience.com/fast-fourier-transform-937926e591cb
Как несколько примеров:
Сжатие изображений https://www.youtube.com/watch?v=gGEBUdM0PVc
Суммирование и фильтрация сигналов https://www.researchgate.net/figure/Fourier-transform-of-a-sum-of-sinusoids-and-filtering-the-highest-frequency_fig3_237061998
Поиск размылия на картинке https://pyimagesearch.com/2020/06/15/opencv-fast-fourier-transform-fft-for-blur-detection-in-images-and-video-streams/#:~:text=The%20Fast%20Fourier%20Transform%20is,mathematics%2C%20science%2C%20and%20engineering.
И ещё несколько https://www.quora.com/What-are-some-applications-of-2D-FFT-for-image-processing-computer-vision-computer-graphics
Важно понимать, что это только кажется, что понимание "логики сигналов". И того, что звук и картинка — это по сути аналовые сигналы переведённые в цифровые — нужна только тем, кто пишет движки, алгоритмы компрессии и т.п. Не скажу что часто, но периодически встречаются задачи, где это знание бывает весьма полезно. И как всегда. Важно не уметь "написать реализацию из головы". Сам алгоритм известен и его реализацию можно откуда-то скопировать. Важно понимать суть и его применение, чтобы потом было понятно "что искать в гугле"
YouTube
The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?
In this video, we take a look at one of the most beautiful algorithms ever created: the Fast Fourier Transform (FFT). This is a tricky algorithm to understand so we take a look at it in a context that we are all familiar with: polynomial multiplication. You…
👍5🔥5
Оптимизация текстур
Последним шагом настройки билда всегда должна быть оптимизация текстур. И первое правило юнити разработчика — недоверять юнити. В целом оптимизация текстур в проекте это довольно глубокая тема. Но я приведу довольно простой пример из моих утренних изысканий. Сразу оговорюсь. Пользоваться этим как "выставляйте именно такие настройки" нельзя. Всё зависит от целевых платформ и много чего ещё.
Я ща ковыряю проект под WebGL и там есть 3д модели. Собственно текстур пока не много 4, и на них проще будет объяснить. Текстуры эти изначально были пожаты, как на картинке один. То есть юнити автоматом подбирало причём достаточно высокие настройки компресии. Я просто заметил, что на визуал модели это не влияет никак. Вес билда 6.44 мб.
Во втором случае я переписал настройки для текстур с альфой (albedo + roughness) на картинку 2 и без альфы (metallic и ambient occlusion) на картинку 3. Визуально различия не особо заметны, но тем не менее вес билда теперь 4.44 мб.
Два мегабайта, без изменения разрешения текстур чисто на более тонкой настройке текстур. Конечно я не рекомендую ставить именно такие настройки, так как нужно понимать к чему это ведёт. Но для веба 2мб веса — это много и важно. Поэтому последним шагом разработки и для оптимизации билда лучше пройтись по всем текстурам и всё пожать. Если на это есть время. Либо же когда "на фичу не хватает пару мб". Так как то, что выбирает юнити автоматом редко бывает оптимально)
Последним шагом настройки билда всегда должна быть оптимизация текстур. И первое правило юнити разработчика — недоверять юнити. В целом оптимизация текстур в проекте это довольно глубокая тема. Но я приведу довольно простой пример из моих утренних изысканий. Сразу оговорюсь. Пользоваться этим как "выставляйте именно такие настройки" нельзя. Всё зависит от целевых платформ и много чего ещё.
Я ща ковыряю проект под WebGL и там есть 3д модели. Собственно текстур пока не много 4, и на них проще будет объяснить. Текстуры эти изначально были пожаты, как на картинке один. То есть юнити автоматом подбирало причём достаточно высокие настройки компресии. Я просто заметил, что на визуал модели это не влияет никак. Вес билда 6.44 мб.
Во втором случае я переписал настройки для текстур с альфой (albedo + roughness) на картинку 2 и без альфы (metallic и ambient occlusion) на картинку 3. Визуально различия не особо заметны, но тем не менее вес билда теперь 4.44 мб.
Два мегабайта, без изменения разрешения текстур чисто на более тонкой настройке текстур. Конечно я не рекомендую ставить именно такие настройки, так как нужно понимать к чему это ведёт. Но для веба 2мб веса — это много и важно. Поэтому последним шагом разработки и для оптимизации билда лучше пройтись по всем текстурам и всё пожать. Если на это есть время. Либо же когда "на фичу не хватает пару мб". Так как то, что выбирает юнити автоматом редко бывает оптимально)
👍10
Григорий Дядиченко
Оптимизация текстур Последним шагом настройки билда всегда должна быть оптимизация текстур. И первое правило юнити разработчика — недоверять юнити. В целом оптимизация текстур в проекте это довольно глубокая тема. Но я приведу довольно простой пример из моих…
P.S. Да, чуть ошибся. Для теста лучше использовать Low Quality в Compression. Всё время их путаю. Но оно всё равно для того же AO подбирает компрессию ASTC8x8, которое весит в два раза больше, чем RGB Compressed ETC2. Тут же не качество сжатия, а качество выходной текстуры
Кстати, я же завтра выступаю и участвую в панельной дискуссии на https://mixrconf.ru Приходите послушать :)
В 10:30 расскажу про «Работа с графикой в мобильном AR. Трюки и технические нюансы»
А в 12:30 будет круглый стол «Технологические вызовы XR-импортозамещения »
В общем будет интересно :) Ну и конечно промокод на скидку 15% speaker-gnsbxr-friends :) Так же если нет возможности присутствовать оффлайн будет онлайн часть конференции с трансляцией входящая в любой билет :)
В 10:30 расскажу про «Работа с графикой в мобильном AR. Трюки и технические нюансы»
А в 12:30 будет круглый стол «Технологические вызовы XR-импортозамещения »
В общем будет интересно :) Ну и конечно промокод на скидку 15% speaker-gnsbxr-friends :) Так же если нет возможности присутствовать оффлайн будет онлайн часть конференции с трансляцией входящая в любой билет :)
🔥2
Почему красивый код и оптимальный — это две разные вещи
Собственно сейчас всё ещё ковыряя графы, у меня появился пример. Вообще амбицию засунуть 150к вершин графа в WebGL я оставил. Ну точнее это реально, но с бекендом, правильным маппингом типа BSP и т.п. Так как браузер по памяти тупо не вывезет даже на уровне данных о графе с позициями вершин. Понятное дело что трансформы и прочее можно было бы вынести в пулл, но тут как я считал, что оптимальна система "мозг бек — фронт рисует". Так и собственно оказалось. Но думаю 10к запихаем)
А причём здесь оптимальный и красивый код? Ну можно посмотреть на картинку 1 и картинку 2. Я откатился к картинке 2, так как цели теперь не такие зверские и в целом можно пережить, но в чём между ними разница? Кроме компактности записи и каких-то странных буфферов? (хотя всё написано в комментах)
Так как приложение однопоточное (веб жеж) мы можем использовать хак заведя просто статические буфферы для некоторых операций (важно чтобы в начале операции буффер очищался, чтобы буфферы были стейтлесс) И тогда вот возникает какой нюанс. На 168к вершин (именно такой граф я по началу ковырял) — Linq каждый расчёт позиций граффа аллоцирует 8мб в кучу. А хак буфферы 40 байт (можно свести к нулю, но это надо избавится от хешсета, чтобы не было аллокации его итератора)
Это очень хитрый контракт, не самый лучший код, но когда мы идём к каким-то краевым задачам, то появляются такие вот вещи. Поэтому оптимальный код и красивый/удобный код — это две разные вещи :) Да, такой код очень опасен и неудобен, но при этом он работает на порядок быстрее реализации на LINQ. Можно конечно изменить модель данных, чтобы получать соседей без LINQ конструкций, но с графами есть такие нюансы, что в зависимости от используемой модели есть свои плюсы и минусы) Скажем если вершины знают своих соседей, а не это ответственность структуры графа. Но в моей задаче это не так важно. При решении конкретной задачи я бы подбирал модель данных под неё :)
Собственно сейчас всё ещё ковыряя графы, у меня появился пример. Вообще амбицию засунуть 150к вершин графа в WebGL я оставил. Ну точнее это реально, но с бекендом, правильным маппингом типа BSP и т.п. Так как браузер по памяти тупо не вывезет даже на уровне данных о графе с позициями вершин. Понятное дело что трансформы и прочее можно было бы вынести в пулл, но тут как я считал, что оптимальна система "мозг бек — фронт рисует". Так и собственно оказалось. Но думаю 10к запихаем)
А причём здесь оптимальный и красивый код? Ну можно посмотреть на картинку 1 и картинку 2. Я откатился к картинке 2, так как цели теперь не такие зверские и в целом можно пережить, но в чём между ними разница? Кроме компактности записи и каких-то странных буфферов? (хотя всё написано в комментах)
Так как приложение однопоточное (веб жеж) мы можем использовать хак заведя просто статические буфферы для некоторых операций (важно чтобы в начале операции буффер очищался, чтобы буфферы были стейтлесс) И тогда вот возникает какой нюанс. На 168к вершин (именно такой граф я по началу ковырял) — Linq каждый расчёт позиций граффа аллоцирует 8мб в кучу. А хак буфферы 40 байт (можно свести к нулю, но это надо избавится от хешсета, чтобы не было аллокации его итератора)
Это очень хитрый контракт, не самый лучший код, но когда мы идём к каким-то краевым задачам, то появляются такие вот вещи. Поэтому оптимальный код и красивый/удобный код — это две разные вещи :) Да, такой код очень опасен и неудобен, но при этом он работает на порядок быстрее реализации на LINQ. Можно конечно изменить модель данных, чтобы получать соседей без LINQ конструкций, но с графами есть такие нюансы, что в зависимости от используемой модели есть свои плюсы и минусы) Скажем если вершины знают своих соседей, а не это ответственность структуры графа. Но в моей задаче это не так важно. При решении конкретной задачи я бы подбирал модель данных под неё :)
🔥5👍2
Media is too big
VIEW IN TELEGRAM
Пока закину небольшое превью без особых оптимизаций (хотя сильно оптимизировать я пока и не хочу) Spring Embedded алгоритм укладки графа. Конечно граф который я нашёл — сильно связный. Надо какую-то синтетику сгенерировать. Так как когда связность очень высокая этот алгоритм на 10к ребёр не поедет. Это 1к ребёр :) (граф хранится чисто рёбрами на сайте) Собственно цвет вершины выбирается в зависимости от числа её соседей
Выступил на круглом столе и про графику в AR :)
👍14
Очень крутой репозиторий с PathTracer с помощью Compute Shader https://github.com/Pjbomb2/Realtime-Compute-Shader-Unity-PathTracer
Визуал прям кайф :) Надо будет протестировать насколько быстро работает, но в любом случае любопытно будет на досуге поковырять :)
Визуал прям кайф :) Надо будет протестировать насколько быстро работает, но в любом случае любопытно будет на досуге поковырять :)
🔥4