Войти
ПрограммированиеФорумГрафика

[Unity3D] Делаем нормальный инструментарий для линий без трололо и бесплатно. (7 стр)

Страницы: 13 4 5 6 7 8 Следующая »
#90
(Правка: 16:49) 15:42, 3 апр. 2019

alexzzzz
> Такое будет работать на других платформах (если вообще будет)?
Тут даже выше требования чем в геометрическом шейдере. Так что смысла так делать нету, только опять же для PC реализации, но мне кажеться в таком случае лучше будет делать расчет уже на Compute Shader.

Using a geometry shader (#pragma geometry) sets the compilation target to 4.0.
In regular graphics shaders the compute buffer support requires minimum shader model 4.5.

Смотри, сейчас передается помимо позиций точек, направление линий и цвет (это по минимуму), при переходе на геометрический шейдер загрузка уменьшается в два раза и минус дополнительные расчеты на CPU. Для молнии у меня передается еще три uv массива, в геометрическом шейдере их тоже не будет. При использовании DrawProcedural минус массив с индексами. Даже без учета лишней загрузки массива это очень сильный буст.

Одно очень сильное "но" в это всем есть. Даже для молний данные не обновляются это статичный мешь, а анимация работает через шейдер. То есть загрузка какая бы она сейчас медленная не была работает один раз. А геометрический шейдер и прочие расчеты на GPU, которых сейчас нету, будут немного отжирать FPS. То есть только для анимированных линий нужен будет геометрический или вычислительный шейдер.

Поэтому разработчик Vectrosity, которую ты тестировал еще в январе, не торопится ее оптимизировать. Потому что вся анимация у него идет от unity transform.

Также у нас в текущей реализации есть CustomLinesRenderer, в котором можно использовать свой шейдер с встроенной в него своей анимацией, тоже вариант не обновлять мешь. Возможно будет лучше добавить что то вроде морфа для анимации.


#91
(Правка: 17:21) 17:20, 3 апр. 2019

Ещё у меня впечатление, что в шейдере переменная _ScreenParams при рендере в окне Scene View какую-то фигню выдаёт. Что-нибудь типа размера всего окна редактора, вместо размера клиентской области Scene View. Из-за этого толщина линий немного некорректная и картинка слегка артефачит, не комильфо. Не знаю, как исправить ничего не переусложняя.

#92
(Правка: 17:54) 17:32, 3 апр. 2019

Если у тебя последняя версия тогда надо сравнивать с другими версиями, я писал в 2017 ничего не замечал. Возможно ты забыл какой нибудь инклуд в шейдер добавить вот он и глючить стал.
_ScreenParams выдвет две пары значений ширину и высоту, прямую и обратную +1.

#93
16:24, 4 апр. 2019

Ложная тревога, сейчас всё нормально с _ScreenParams и толщиной линий. Где-то раньше был косяк.

#94
(Правка: 19:45) 19:18, 14 апр. 2019

Допилил свою рисовалку до состояния, когда ещё не готово, марафет не наведён, но можно пробовать пользоваться: https://bitbucket.org/alexzzzz/xdrawgizmos
Нормальное название так и не придумал, оставил класс XDraw.

Можно установить через менеджер пакетов, добавив в manifest.json строчку:

  "dependencies": {
    "ru.gamedev.xdrawgizmos": "https://bitbucket.org/alexzzzz/xdrawgizmos.git#master",
    ...
Две демо-сцены в 2019.1 можно импортировать в проект через интерфейс менеджера пакетов. В 2018.3 их можно скопировать в проект вручную из папки Samples~/Samples или скачать отдельно: https://dl.dropbox.com/s/1rukaqau3e4ikce/XDrawSamples.unitypackage

+ Показать

Базовые примитивы: Point, Line, Icon, SolidTriangle. Плюс варианты Point3D и Icon3D, у которых размер задаётся в мировых единицах и зависит от расстояния до камеры. Из этих примитивов собираются Mesh, Arrow, Triangle, Quad, Poly, Circle, Arc, Sphere, Box, Bounds, Grid, SolidArc, SolidCircle.

Всё рендерится через Graphics.DrawProcedural (или Graphics.DrawProceduralNow в 2019.1) без создания промежуточных мешей. Аллокаций вроде нет. Работает и в рантайме, и в редакторе. Поддерживаются матрицы для трансформации рисуемого.

#95
20:11, 14 апр. 2019

Молодец, клево, если все работает как заявлено.
WebGL поддерживает?

#96
20:33, 14 апр. 2019

Не поддерживает и не будет.

#97
20:39, 14 апр. 2019
Assets\Runtime\UnsafeBuffer.cs(26,45): error CS0103: The name 'Unsafe' does not exist in the current context
#98
(Правка: 20:45) 20:43, 14 апр. 2019

Polyflow3d
Там в зависимостях есть com.unity.collections. Какая-то с ним проблема, не скачался или что-то ещё, не знаю. Попробуй добавить этот пакет дополнительно через менеджер пакетов.

PS
А если XDrawGizmos ставить не через менеджер пакетов, а скачать репозиторий и скопировать прямо в Assets, то com.unity.collections и com.unity.mathematics точно надо доустанавливать вручную.

#99
(Правка: 20:53) 20:52, 14 апр. 2019

Впрочем, com.unity.collections нужен был чисто ради типа Unsafe. В версии 0.11.4 его использование убрал. Чтобы обновиться, удалите в конце manifest.json раздел lock:

  "lock": {
    "ru.gamedev.xdrawgizmos": {
      "hash": ".......",
      "revision": "master"
    }

#100
(Правка: 21:59) 21:50, 14 апр. 2019

alexzzzz
Че то у меня шейдеры не тянут.

unity Shader is not supported on this GPU (none of subshaders/fallbacks are suitable)

Но это я попробовал в 2017 переделать, в 2018 ругается только на
Assembly has reference to non-existent assembly 'Unity.Mathematics' (Assets/XDraw/Runtime/XDrawGizmos.asmdef)
#101
21:51, 14 апр. 2019

А что за GPU?

#102
22:06, 14 апр. 2019

foxes
А как устанавливаешь, через менеджер пакетов или копируя из репозитория в Assets?

#103
(Правка: 22:20) 22:09, 14 апр. 2019

alexzzzz
я из репозитория скопировал. У тебя Runtime C# требуется 6.0, а в 2018 только 4.0, и такой математики нет "Unity.Mathematics"

#104
22:19, 14 апр. 2019

Тогда Unity.Mathematics надо подключать вручную. Если копировать в Assets, то зависимости не подцепляются. Или можно копировать не в Assets, а в Packages.

Страницы: 13 4 5 6 7 8 Следующая »
ПрограммированиеФорумГрафика