QUOTE (Shoкer @ 02.01.2017, 14:11)
Раз уж ещё остались тут специалисты по шейдерам
, хотел задать один вопрос. Я более менее понял как работать с пиксельными шейдерами, но вот с вертексными ещё толком не разбирался, пользуясь готовыми, поэтому вопрос скорее всего нубский.
Для
примера: есть задача сделать аномалию, в радиусе которой вся геометрия будет обесцвечиваться, притом таких аномалий в сцене может быть
произвольное кол-во. Для этого (как я полагаю) мне нужно в вертексном шейдере каким то образом просчитывать дистанцию каждого вертекса до каждой аномалии, а потом ещё каким то образом делать плавный переход (чтобы не весь полигон обесцвечивался, а только та часть, что непосредственно в радиус аномалии залезает.
Вопросов несколько:
1) Возможно ли такое вообще сделать. (в рамках сталкера)
2) Правильно-ли я понял принцип реализации подобного эффекта. Просто я в шейдерах даже динамических массивов не видел, а потому не ясно как туда вообще передавать данные о позиции каждой аномалии.
3) Нет ли похожих примеров в сталкере или где либо ещё, откуда их можно подсмотреть.
Начинать нужно собственно с вопроса "чтоб не обесцвечивался весь полигон", что уже подразумевает работу с пиксельными шейдерами, и по возможности в постранстве вьюпорта, в экранном пространстве, если нужно действительно неограниченное количество аномалий в кадре, чтоб не делать отдельных проход или рендертаргет для каждой аномалии.
Учтите простую истину - шейдеры перемалывают данные только в пределах одного единственного кадра, причем даже не всего кадра а каждой вершины или пикселя текстуры в каком-либо пространстве, как в пространстве координат самой текстуры натянутой на фигуру, так и в пространстве координат экрана. И они вообще не знают такой штуки как аномалия: если вы хотите работать с аномалией, вам либо придется для каждой аномалии передавать в шейдер ее координаты и радиус (например) или делать отдельный материал, к которому привязан необходимый шейдер, и сфера из этого материала будет представлять собой аномалию.
Такое лучше всего замутить по примеру воды, только ставить шейдер не искажения а обесцвечивания.
QUOTE (Shoкer @ 02.01.2017, 16:47)
+ для тех же аномалий можно ввести деформацию террейна, чтобы от огненных аномалий террейн становился потресканным, а от электрических высушенным и т.п
Деформация терейна, ну то есть настоящая а не бампмаппинг - это работа геометрических шейдеров, то есть >= р3-онли, и то деформация будет чисто визуальная, если например шейдерами там сделать воронку, то физика об этом даже догадываться не будет, и болт например будет отскакивать от того места где ранее была поверхность, до обработки геометрическим шейдером, а не от нового положения поверхности, с учетом работы шейдера.