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

Тест видимости. (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
(Правка: 30 апр. 2021, 1:26) 16:24, 29 апр. 2021

MrShoor
Дорогой мой, программист это не только игродел. Эта профессия несколько шире, если ты не в курсе. Сомнительно что ты разбираешься во внутренней кухне OBDMS, программировании встроенных процессоров или в системном программировании на Unix. Но это не повод сомневаться в твоей квалификации как программиста.
Форум для того и служит, что бы задавать вопросы по тем областям с которыми ты ПОКА не сталкивался. Вот я мало имел дел с графикой на уровне моделей и многие проблемы при этом возникающие для меня в новинку. Но я с этим разберусь (с вашей помощью), после чего буду это знать. Деталей помнить не обязательно, но если мне опять это понадобится то у меня будет код который я смогу использовать. Вот как то так.

>Так что по вопросам, которые ты тут задаешь я на вскиду дам стаж года 3 реальной разработки.
Я даже больше могу сказать - хотя я уже 17 лет как на этом форуме но это первая ИГРА которую я делаю. До этого меня интересовали вопросы с играми не связанные. Больше всего я работал с шейдерами и вычислениями на GPU, так что в своих оценках моего опыта в геймдеве ты не так уж далек от истины. Просто теперь у меня появилось время поразвлекаться и вместо аппликаций для профессионалов я стал делать игрушку для души.

> А вот скинь если не сложно свою модельку города (обещаю не распространять нигде). Мне просто дико интересно сколько у меня получится мс на вывод этих 5 миллионов. У меня есть стойкое чувство, что с 5 миллионами я уложусь в 11мс.
Это можно. Только она большая, где-то полгига в OBJ. Но уложиться нужно в 5 мс - у тебя же будет один глаз насколько я понимаю. И это нужно проверять на карте уровня 970. 
Пока я не за компом, через час запакую и дам ссылку в личке.


#31
11:58, 30 апр. 2021

обычно делают как - расставляют оклудеры (коих не много, они низкополигональные, стены и т.д.), рендерят их на CPU в половинном разрешении например, получают буфер глубины, строят мипы, и тестируют уже баунды объектов видим/не видим.

но рендерить на GPU баунды объктов какой смысл? да и еще потом это читать назад, этож синхронизация, проще HOQ использовать.

#32
12:18, 30 апр. 2021

Outlaw

вышел из небытия?
#33
13:59, 30 апр. 2021

Outlaw
> рендерят их на CPU в половинном разрешении например, получают буфер глубины,
> строят мипы, и тестируют уже баунды объектов видим/не видим
Рисовать Мона и на GPU через MDI/DI где нужно. Да ещё их куллить предварительно на compute shader.
В таком случае и HQQ не нужен. Не нужно с CPU синхронизироваться.
HQQ имеет серьезный минус,( кроме CPU sync) это невозможность работать с инстансингом + GPU culling

#34
(Правка: 15:54) 15:53, 30 апр. 2021

Outlaw
> рендерят их на CPU в половинном разрешении например, получают буфер глубины, строят мипы, и тестируют уже баунды объектов видим/не видим.
Подожди, как это на CPU? Т.е. ты хочешь все что делает карта автоматически (растеризацию, кулинг, рассчет глубины пикселя, мипы) делать врукопашную на CPU? Это какая же скорость будет для тысячи кубиков? А какой в этом смысл - экономия десятка микросекунд на чтение 16КБ по PCIe шине?

#35
17:16, 30 апр. 2021

Andrey
> Рисовать Мона и на GPU через MDI/DI где нужно. Да ещё их куллить предварительно
> на compute shader.
> В таком случае и HQQ не нужен. Не нужно с CPU синхронизироваться.
..но результат куллинга на ЦПУ стороне (без блокирования) можно получить только через пару кадров, так? То есть выходит, что нужно и то и другое: предварительный куллинг на ЦПУ через фрастум и растеризацию, и финальный на ГПУ.

san
> Подожди, как это на CPU?
Можно это делать в низком разрешении или использовать "неточный" zbuffer как описано тут: https://software.intel.com/content/dam/develop/external/us/en/doc… n-culling.pdf

#36
17:20, 30 апр. 2021

Andrey
> Рисовать Мона и на GPU через MDI/DI где нужно.

ты хоть делал это ? поделись опытом

#37
(Правка: 17:57) 17:50, 30 апр. 2021

Apfel1994
> Можно это делать в низком разрешении или использовать "неточный" zbuffer
Да какая разница? Вообще-то GPU для того и создан что бы процессор этой работой не занимался. GPU это делает в сотни раз быстрее. Передача нескольких килобайт по шине шириной в 1000 мегабайт в секунду это тоже копейки. Ради чего штаны через голову надевать, я не пойму? Результат кулинга будет идти через кадр? Совсем не обязательно, достаточно делать тест ДО начала основного рендера но после получения информации о положении головы. Лишняя синхронизация погоды не сделает, все равно в этот момент GPU простаивает.

#38
17:56, 30 апр. 2021

san
> Передача нескольких килобайт по шине шириной в 1000 мегабайт в секунду это тоже копейки. Ради чего штаны через голову надевать, я не пойму?
Ради того, чтобы CPU не стоял и не ждал GPU.
И это не распространённая практика. Называется Software Occlusion Culling.
Можешь почитать тут: https://software.intel.com/content/www/us/en/develop/articles/sof… -culling.html
В твоем случае - я бы так делать не стал.
Мне думается, сейчас самое современное - это использование depth buffer-а с прошлого кадра (с репроекцией), и проверка на compute shader - ах попадание AABB объектов в него.

#39
(Правка: 18:25) 18:05, 30 апр. 2021

HolyDel
> Ради того, чтобы CPU не стоял и не ждал GPU.
Блин... устал повторять - в случае VR синхронизация необходима! Она там есть изначально. Если один тред будет ждать 100 мкс это никак на производительности не скажется. А вот если это делать на CPU то не факт что этот процесс впишется с 10 мс. И главное непонятно ради чего это делать на не предназначенном для этого оборудовании.

>Мне думается, сейчас самое современное - это использование depth buffer-а с прошлого кадра (с репроекцией), и проверка на compute shader - ах попадание AABB объектов в него.
Хм... Не понял. Речь идет о том, что бы просто не выводить лишнюю геометрию. Заполняет список на отрисовку CPU, как компьют шейдер (на GPU)  может управлять этим процессом?

#40
18:42, 30 апр. 2021

san
> Она там есть изначально.
Ну да в SwapBuffers / vkAcquireNextImageKHR / Present. Зачем еще одну плодить?

san
> Хм... Не понял. Речь идет о том, что бы просто не выводить лишнюю геометрию. Заполняет список на отрисовку CPU, как компьют шейдер (на GPU)  может управлять этим процессом?
Через DrawIndirect.

#41
20:04, 30 апр. 2021

Посмотри как в Анриле 4. Исходники есть везде.

#42
(Правка: 22:27) 20:17, 30 апр. 2021

HolyDel
>DrawIndirect
Т.е. насколько я понимаю физически вертексный шейдер все равно запустится, потом он прочитает буфер и (в зависимости от условия) на этом конвейер завершаится или пойдет дальше. Причем буфер все равно придётся заполнять, причем не в компьют очереди а в графической, иначе они будут выполняться асинхронны. Я так никогда не делал, но что-то не уверен что это будет быстрее чем вообще не включать в рендер ненужные обьекты. Можно конечно попробовать. Микрософтовский пример с 1000 треугольников это конечно не 5 миллионов на его основе мало что можно оценить.

lookid
> Посмотри как в Анриле 4. Исходники есть везде.
Издеваемся? Там можно что-то найти?

#43
22:57, 30 апр. 2021

Apfel1994
> ..но результат куллинга на ЦПУ стороне (без блокирования) можно получить только
> через пару кадров, так? То есть выходит, что нужно и то и другое:
> предварительный куллинг на ЦПУ через фрастум и растеризацию, и финальный на
> ГПУ.
Не, я тут предлагал Occlusion Culling полностью без CPU. Вариант Outlaw это софтвариный OC но без синхронизации CPU, т.е. лишён недостатков HOQ. В моем предложении не нужна репроекция, буфера глубины с предыдущего кадра. Но взамен нуна отрисовка Occlusion Box'ов в отдельный буфер глубины более низкого разрешения, далее мипы в compute, (кстати тут Мона и мин мах фильтр попробовать) полученный буфер с мипами в финальный куллиг. Что бы все работало нужны правильные Occlusion box'ы. Иначе за кронами деревьев и под крышами домов будут мигать исчезающие объекты. Т.е. без нехилых тулзов строящих Occlusion box'ы для сложной геометрии с дырками никак не обойтись.

#44
23:07, 30 апр. 2021

san
> конвейер завершаится или пойдет дальше. Причем буфер все равно придётся
> заполнять, причем не в компьют очереди а в графической, иначе они будут
> выполняться асинхронны
Буфер меняет compute shader, используешь его drawIndirect вызовах,
Ставишь барьеры на буфер. Запускаешь вычислительную и графическую и вперёд. Любой пример по компут+графика посмотри по Direct3D12, поверь мне с Vulkan все ещё сложнее, там и маски и семафоры не ще... На Direct3D12 то как взлетает у меня быстрее на, Vulkan ещё не разобрался а причине зависания после нескольких кадров.

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