Как изменить текстуру-переменную из шейдера

Шейдеры и все-все-все.

Как изменить текстуру-переменную из шейдера

Сообщение aigame 06 янв 2018, 15:55

Как изменить значение цвета определенного пикселя (пикселей) глобальной переменной типа sampler2D при выполнении фрагментного шейдера? Есть ли аналог SetPixel в Cg?

Зачем это надо? - делаю фрагментный шейдер в котором при появлении точки на текстуре с определенным значением цвета, добавлялся к соседним точкам в окружности некоторый оттенок. Появление такой точки не частое событие и осуществлять перебор в каждой точке соседей на предмет получения оттенка, будет не оптимально. Хотелось бы в первый проход сформировать некую текстуру со всеми оттенками, а в следующий проход просто сложить её с главной текстурой. Возможно-ли, это?
aigame
UNец
 
Сообщения: 4
Зарегистрирован: 06 янв 2018, 15:03

Re: Как изменить текстуру-переменную из шейдера

Сообщение jetyb 09 янв 2018, 07:44

В смысле постановки вопроса - никак. Собственно, sampler2D - это не массив пикселей и для изменения данных не предназначен.

Проще всего сделать изменяемую текстуру рендер-текстурой и рендерить в нее через специальный шейдер.
Вариант посложнее - вычислительные шейдеры.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Как изменить текстуру-переменную из шейдера

Сообщение aigame 09 янв 2018, 20:12

Спасибо, тема закрыта.
Применил вычислительный шейдер.
aigame
UNец
 
Сообщения: 4
Зарегистрирован: 06 янв 2018, 15:03

Re: Как изменить текстуру-переменную из шейдера

Сообщение artk 11 фев 2018, 21:05

Вычислительные шейдеры - это стрельба из пушки по воробьям.
Посмотрите примеры использования https://docs.unity3d.com/ScriptReferenc ... xture.html
https://github.com/hecomi/UnityWaterSurface
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8