innuendo
Подозреваю, что халф на CPU плохо работать будет.
stratego
Смысл в том, чтоб готовый буфер высот (размером в 100М точек) кидать прямиком в GPU и разбирать там. Я не хочу его прореживать на проце. Проц занят.
Читаю про тесселяционный шейдер, возможно, с его помощью выйдет, если карту высот в текстуру закинуть.
fecaloid666
Набросал тут тебе примерчик с геометрическим шейдером, посмотри, можешь модифицировать под себя, добавить нормали или текстуру.
https://github.com/DangerousCriminalFuntik/fecaloid666
Funtik
Спасибище! Я не знал, что в геом. шейдере можно из текстуры читать. Предварительно - именно то, что нужно.
Лоды не предлагали?
Всё равно же 100м вершин вершинному шейдеру придётся обработать, а потом еще разгребать в геометрическом. Думаю тормозить это всё всё равно будет, тем более пересылать надо постоянно будет этот объём данных.
Зачем посылать постоянно ?
Нужно сразу послать так послать
innuendo
Попробую параметрически навыпускать нужное кол-во вершин из геом. шейдера.
fecaloid666
В твоём кейсе геом шейдер это самое последнее
Пытаюсь сделать отрисовку, отправляя одну точку: glDrawArraysInstanced(GL_POINTS, 0, 1,(Raster->Width-1)*(Raster->Height-1));
Работает неплохо, ~10ФПС для 100М поликов без расчета нормалей и с пустым вершинным и фрагментным шейдерами.
Но появилась другая проблема: GS упорно не делает выборку из нормализованной float-текстуры. Вначале пробовал GL_TEXTURE_RECTANGLE, не взлетело. Переделал для GL_TEXTURE_2D, тот же результат. В шейдере читается 0.0f В чем может быть проблема?
Init:
Render:
VS:
GS:
FS:
fecaloid666
Попробуй заменить текчя на текчялод
innuendo
Ничего не изменилось. Пробовал при значениях lod 0.0f и 1.0f. Не оч понятно, как должен работать lod на текстуре без mipmapping'a.
fecaloid666
Короче посмотри рендердоком
fecaloid666
> GS упорно не делает выборку из нормализованной float-текстуры.
Ты переломил мне мозг. Ты скажи, что ты сделать хоть пытаешься?
innuendo
API: OpenGL, unsupported
Поищу аналоги.
std::variant
Считать тексель и использовать это значение как высоту(Z)
Тема закрыта.