Страница 1 из 1

Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 01:41
O4karitO
Добрый вечер, возникла следующая проблема. Имеется группа шейдеров с процедурно генерируемой картинкой, то есть нет входных текстур, изображение создаётся за счет мат. операций в frag функции. Шейдеры прекрасно справлялись со своей задачей. Но при разработке под Vr производительность просела, что ожидаемо. Вопрос в следующем - возможно ли ограничить "разрешение" шейдера, чтобы расчёт проводился лишь для некоторых пикселей, а значения между ними интерполировались примерно как интерполируются значения между вершинами( если расчёты ведутся в vert функции)?

Сейчас разбил на 2 шейдера, в одном все считаю и через Graphics.blit рендерю в текстуру нужного разрешения, которую потом использую.
Возможно есть более элегантное решение?

Спасибо.

Re: Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 07:43
jetyb
Но при разработке под Vr производительность просела, что ожидаемо. Вопрос в следующем - возможно ли ограничить "разрешение" шейдера, чтобы расчёт проводился лишь для некоторых пикселей, а значения между ними интерполировались примерно как интерполируются значения между вершинами

В таком понимании этого сделать нельзя.

Можно разве что поставить вершины в модели почаще, тяжелые рассчеты перенести в вершинный шейдер, а в пиксельном все интерполировать.

Re: Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 09:43
bojlahg
делай рендер в RenderTexture с низким разрешением, а потом эту картинку используй где надо.

Re: Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 13:59
kripto289
O4karitO писал(а):Добрый вечер, возникла следующая проблема. Имеется группа шейдеров с процедурно генерируемой картинкой, то есть нет входных текстур, изображение создаётся за счет мат. операций в frag функции. Шейдеры прекрасно справлялись со своей задачей. Но при разработке под Vr производительность просела, что ожидаемо. Вопрос в следующем - возможно ли ограничить "разрешение" шейдера, чтобы расчёт проводился лишь для некоторых пикселей, а значения между ними интерполировались примерно как интерполируются значения между вершинами( если расчёты ведутся в vert функции)?

Сейчас разбил на 2 шейдера, в одном все считаю и через Graphics.blit рендерю в текстуру нужного разрешения, которую потом использую.
Возможно есть более элегантное решение?

Спасибо.

discard или clip?

Re: Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 15:25
jetyb
discard ничего не пишет, а ТС надо возвращать интерполированный результат, да еще и по соседним пикселям

Re: Разрешение шейдера.

СообщениеДобавлено: 23 авг 2016, 19:13
kripto289
jetyb писал(а):discard ничего не пишет, а ТС надо возвращать интерполированный результат, да еще и по соседним пикселям

Ну да, пропустил этот момент.
Тогда может поможет геометрический шейдер или тесселяция? Создавать дополнительные вершины и там проводить расчёт? С тесселяцией вообще можно контролировать кол-во полигонов, как разрешение.

Re: Разрешение шейдера.

СообщениеДобавлено: 26 авг 2016, 21:16
O4karitO
Всем спасибо за ответы, после оптимизации рендер в текстуру дает приемлемые результаты