Визуализация Моны Лизы в ПБО - PullRequest
5 голосов
/ 18 июля 2011

После прочтения этой статьи я хотел попытаться сделать то же самое, но чтобы ускорить процесс рендеринга, часть, которую я хотел исполнить на GPU, само собой разумеется, почему треугольники или любые другие геометрические объекты должны отображаться на GPU, а не на CPU.

Вот одно хорошее изображение процесса:

Mona Lisa

Задача:

  1. Визуализация 'набора вершин'
  2. Оцените разницу в пикселях по пиксель между визуализированным «набором вершин» и изображением Моны Лизы (Мона Лиза находится на текстурном или графическом процессоре без большой разницы)

Проблема:

При использовании OpenCL или Cuda с расширением OpenGL FBO (Frame Buffer Object).

В этом случае согласно нашей задаче

  1. Визуализация 'набора вершин' ( обрабатывается OpenGL )
  2. Оцените разницу в пикселях по пиксель между визуализированным «набором вершин» и изображением Моны Лизы ( обрабатывается OpenCL или Cuda )

Так что в этом случае я вынужден делать копии из FBO в PBO (Pixel Buffer Object), чтобы получить «набор вершин», доступный для OpenCL / Cuda. Я знаю, как быстро выполняются копии памяти с устройства на устройство, но, учитывая, что мне нужно делать тысячи таких копий, имеет смысл не делать этого ...

Эта проблема оставляет три варианта:

  1. Визуализация с OpenGL в PBO ( каким-то образом, я не знаю как, это также может быть невозможно сделать )
  2. Визуализируйте изображение и оцените разницу между изображениями полностью с помощью OpenGL ( каким-то образом, я не знаю, как, возможно, используя шейдеры, единственная проблема в том, что я никогда не писал шейдеры в своей жизни, и это может потребоваться месяцы работы для меня ... )
  3. Визуализируйте изображение и оцените разницу между изображениями полностью с OpenCL / Cuda ( Я знаю, как это сделать, но также потребуются месяцы, чтобы получить стабильную и более или менее оптимизированную версию рендерера, реализованную в OpenCL или Cuda )

Вопрос

Кто-нибудь может мне помочь с написанием шейдера для вышеуказанного процесса или, может быть, указать способ рендеринга Моны Лизы в PBO без копий из FBO ...

1 Ответ

1 голос
/ 18 июля 2011

У меня такое ощущение, что подход Shader также будет иметь ту же проблему ввода-вывода, вы, конечно, можете сравнивать текстуры в шейдере, если графический процессор поддерживает PS 4.0 или выше; но вы все равно должны получить исходную текстуру (Мона Лиза) на устройстве.

Редактировать: копаться немного, и это сообщение на форуме может дать некоторое представление:

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=221384&page=1.

Плакат Komat представляет пример шейдера на 2-й странице.

...