Войти
ПрограммированиеФорумОбщее

Frustum Culling (комментарии) (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
23:54, 19 фев 2017

на AVX говорят можно покулить 100к AABB за 0.2 ms, в одном потоке (i7-4770K 4.0 GHz)
шикарно помоему

#46
11:42, 1 мая 2017

>ждать заврешения результата. gpu-stall

Чет ниче не сказано про асинхронный оклюжен.

#47
17:52, 1 мая 2017

_Wizard_
> Frustum Culling
Вот взять к примеру код из раздела "SSE OBB-фрустум", что там за жесть с лишними обращениями к переменной
в памяти, с абсолютно не нужным _mm_cvtps_epi32, а также кучей сравнений и ветвлений ?

    //сохраняем результат
    __m128i outside_res_i = _mm_cvtps_epi32(outside);
    _mm_store_si128((__m128i *)&obj_culling_res[0], outside_res_i);

    //сейчас у нас результат хранится отдельно по каждой оси
    //нужно скомбинировать результаты. Если хотя бы по одной оси все 8 вершин либо >1 либо < 1,
    //то объект находится вне области видимости / фрустума
    culling_res[i] = (obj_culling_res[0] != 0 || obj_culling_res[1] != 0 || obj_culling_res[2] != 0) ? 1 : 0;

Почему нельзя было просто взять и написать вот так (вместо _всего_ вышеприведённого куска говнокода) ?

    culling_res[i] = !!(_mm_movemask_ps(outside) & 0x7);

 
Внутренний же цикл тоже можно заметно упростить и развернуть, а также задействовать упреждающую выборку,
что существенно ускорит расчёт.

> на AVX говорят можно покулить 100к AABB
Какой вам AVX, вы бы SSE сначала научились грамотно пользоваться.

#48
18:52, 1 мая 2017

все равно хорошая хорошая и познавательная тема.
то многие забыли вообще про куллинг и интринсики ><

#49
14:01, 3 мая 2017

Hybernaculum
>Почему нельзя было просто взять и написать вот так (вместо _всего_ вышеприведённого куска говнокода) ?
спасибо, поправил в этом месте
с SSE не много работал

>Внутренний же цикл тоже можно заметно упростить и развернуть, а также задействовать упреждающую выборку, что существенно ускорит расчёт.
код не оптимален, но он передает идею и быстрее в разы чем на плюсах
не заморачивался особо - иначе статья будет слишком нудной и громоздкой...
напиши правильный код, всем будет интересно
про упреждающую выборку расскажи - вставлю в статью

#50
14:17, 23 июня 2017

Спасибо за статью. Было интересно прочитать.

Жаль, что не раскрыта тема Predicated Rendering. Он с dx10 железа есть. В SDK вроде сэмпл был.

#51
14:26, 23 июня 2017

evirus

Но это же не frustum culling

#52
14:31, 23 июня 2017

innuendo
а через него нельзя сделать? AABB порендерить

#53
14:34, 23 июня 2017

evirus
> а через него нельзя сделать? AABB порендерить

можно :)

#54
14:34, 23 июня 2017

innuendo
Это которое с артефактами при движении чтоли?

#55
14:40, 23 июня 2017

Mira
я про D3D11_QUERY_OCCLUSION_PREDICATE и ID3D11DeviceContext::SetPredication
Оно с железа dx10 должно работать

#56
14:42, 23 июня 2017

evirus
> я про D3D11_QUERY_OCCLUSION_PREDICATE и ID3D11DeviceContext::SetPredication
> Оно с железа dx10 должно работать

ты же понимаешь что в этом случае посылаешь графические команды на GPU, результат которых точно не виден - вне фрастума ? Зачем лишние телодвижения ?

#57
14:46, 23 июня 2017

innuendo
так вот тут вопрос какие на этом будут издержки, сопоставимы ли они с вышеизложенными методами, или меньше, больше

#58
14:49, 23 июня 2017

innuendo
Кстати да.  Фрустум оно не заменяет,  и может в некоторых случаях переместить ботлнек в другое место

#59
15:00, 23 июня 2017

evirus
Есть кое-что получше:
http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph… er_220dpi.pdf
Слайд 52

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

Тема в архиве.