LINUX.ORG.RU

быстро нарисовать много шариков - есть ли где нить такой базовый примитив?

 


1

3

Сабж. Много это 10^4÷10^6, шарики непрозрачные но могут быть двухцветные, с нетривиальным алгоритмом выбора цвета каждой точки.

У меня щас есть некий велосипед на основе самопального z-буфера, который крутиться на CPU. Хочется сделать это по человечески на каком нить openGL, но мне категорически не нравится то что там нет примитива сферы, а шарики приходится набирать из треугольничков. Что бы шарики были красивышные придется на каждый задавать много треугольников, и хотя это делается автоматом но вызывает у меня когнитивный диссонанс.

В принципе ведь рисование примитива сфера ничем особо от рисования треугольника не отличается - ну алгоритм чуть другой... Мб где нить таки есть сфера в виде базового, НЕ СОСТАВНОГО примитива?

ЗЫ в качестве некого изврата пришла щас в голову мысль рисовать вместо шарика описанный кубик и дальше играться с прозрачностью и пиксельными шейдерами. Но выглядит как то...

★★★★★

Последнее исправление: AIv (всего исправлений: 1)
Ответ на: комментарий от anonymous_coward

Спасибо, я немножко в курсе:-)

Но таки билборд здесь представляется наиболее простым и прямым решением.

AIv ★★★★★
() автор топика

Что бы шарики были красивышные

А про рейтрейсинг не думали? Для 10^4÷10^6 наверное смысла нет, но если больше, то можно наверное выиграть и в скорости и в красоте.

Полупрозрачные шарики, отражение, вот это вот все. Можно и на ГПУ часть считать

anonymous
()
Ответ на: комментарий от anonymous

Полурозрачные шарики неактуальны. Тут от картинки требуется в первую очередь наглядность. Ну и рейтрейсинг мы полтреда обсуждали;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Кстати, честно рисовать шарики возможно будет и быстрее, чем имитировать их в шейдере. И уж всяко проще.

Ну и потом там спиновые волны всякие, те же доменные границы (и их тип) и пр. - на такой диагностике хорошо видны.

Если они не прячутся где-то в объёме.

Были попытки показывать вектор цветом точки (как раз три компоненты RGB), но там без бутылки вообще не разберешься.

Ещё до широкого распространения CUDA (году в 2008) я игрался с сеточными методами на фрагментных шейдерах. Отладка этого дела поначалу так и происходила: на глаз, по цвету.

fmdw
()
Ответ на: комментарий от AIv

рейтрейсинг мы полтреда обсуждали;-)

А, да, сначала не понял, там какие-то наезды в начале треда, автоматически пропустил

Ну наглядно (это так как у вас на картинках?) можно сделать просто. У вас же шарики фактически одинаковые? Рисуем шарик в текстуру, потом выводим квадратиками с аццкой скоростью. Профит

anonymous
()

Кроме шариков есть еще что либо? Если нет, то ray marching на GPU для твоей задачи самое то. OpenGL тут не нужен.

anonymous
()

кабздец. я думал, ему надо реально 3д шарики с особым алгоритмом раскраски рисовать, а ему походу обычных спрайтов достаточно. вот что значит неправильные теги...

waker ★★★★★
()
Ответ на: комментарий от Eddy_Em

Сфера — это не примитив.

Сфера куда как более примитивный примитив, чем треугольник. Точка пересечения луча со сферой считается проще, нормаль считается проще.

OpenGL срет людям в мозги.

anonymous
()
Ответ на: комментарий от xorik

он сферы рисует все теми же треугольниками на opengl :)

waker ★★★★★
()
Ответ на: комментарий от AIv

Не надо tracing, это медленно. Делай ray marching, как в volume rendering.

anonymous
()
Ответ на: комментарий от anonymous

Ну наглядно (это так как у вас на картинках?) можно сделать просто. У вас же шарики фактически одинаковые? Рисуем шарик в текстуру, потом выводим квадратиками с аццкой скоростью. Профит

Они повернуты под разными углами. Но надо подумать.

AIv ★★★★★
() автор топика
Ответ на: комментарий от fmdw

Кстати, честно рисовать шарики возможно будет и быстрее, чем имитировать их в шейдере. И уж всяко проще.

Треугольничками? Не думаю.

Если они не прячутся где-то в объёме.

А вот для этого и есть плоскости отсечения;-)

AIv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.