Рендеринг графика с использованием 3D ускорения

Мы генерируем графики для огромных наборов данных. Мы говорим 4096 выборок в секунду и 10 минут на график. Простой расчет составляет 4096 * 60 * 10 = 2457600 выборок на линейный график. Каждый образец представляет собой FP с двойной точностью (8 байт). Кроме того, мы отображаем несколько линейных графиков на одном экране, примерно до ста. Это позволяет нам рендерить около 25 миллионов сэмплов на одном экране. Используя здравый смысл и простые трюки, мы можем добиться того, чтобы этот код выполнялся с помощью процессора, рисуя его на 2D-холсте. Performant, то есть время рендеринга падает ниже одной минуты.Поскольку это научные данные, мы не можем опустить образцы. Серьезно, это не вариант. Даже не начинай думать об этом.

Естественно, мы хотим улучшить время рендеринга, используя все доступные методы. Многоядерность, предварительный рендеринг, кеширование - все это довольно интересно, но не стоит их сокращать. Мы хотим, чтобы рендеринг 30FPS с этими наборами данных был минимальным, предпочтительно 60FPS. У нас сейчас это амбициозная цель.

Естественный способ разгружать рендеринг графики - использование графического процессора системы. Графические процессоры предназначены для работы с огромными наборами данных и их параллельной обработки. Несколько простых тестов HelloWorld показали разницу между скоростью рендеринга днем ​​и ночью при использовании графического процессора.

Теперь проблема в том, что API-интерфейсы GPU, такие как OpenGL, DirectX и XNA, предназначены для трехмерных сцен. Таким образом, их использование для визуализации 2D-графиков возможно, но не идеально. В доказательстве концепций, которые мы разработали, мы столкнулись с тем, что нам нужно преобразовать 2D-мир в 3D-мир. Неожиданно нам приходится работать с XYZ и системой координат с полигонами, вершинами и многим другим. Это далеко от идеала с точки зрения развития. Код становится нечитаемым, обслуживание - это кошмар, и все больше проблем накапливается.

Каким будет ваше предложение или идея в 3D? Является ли единственный способ сделать это, чтобы фактически преобразовать две системы (2D-координаты против 3D-координат и объектов)? Или есть более изящный способ добиться этого?

-Почему полезно рендерить несколько сэмплов на один пиксель? Так как он представляет набор данных лучше. Скажем, на один пиксель у вас есть значения 2, 5 и 8. Из-за некоторого алгоритма пропуска выборки рисуется только 5. Строка будет идти только к 5, а не к 8, следовательно, данные искажены. Вы также можете утверждать об обратном, но факт в том, что первый аргумент имеет значение для наборов данных, с которыми мы работаем. Именно поэтому мы не можем опустить образцы.

Ответы на вопрос(12)

Ваш ответ на вопрос