Unity, шейдер Френеля на необработанном изображении - PullRequest
0 голосов
/ 30 апреля 2019

Здравствуйте. Я пытаюсь заархивировать эффект на изображении ниже (это похоже на свет, но только поверх необработанного изображения). К сожалению, я не могу понять, как это сделать, попробовал некоторые шейдеры и ресурсы из ресурса.хранить, но пока никто не работал, также я не знаю много о шейдерах.

Необработанное изображение является элементом пользовательского интерфейса и отображает текстуру рендеринга, которая захватывается камерой.

Я полностью потерян здесь, любая помощь будет оценена, как это сделать?

a busy cat

1 Ответ

2 голосов
/ 30 апреля 2019

Шейдеры Френеля используют разницу между нормалью поверхности и вектором обзора, чтобы определить, какие пиксели обращены к зрителю, а какие - нет. Самолет пользовательского интерфейса всегда будет сталкиваться с пользователем, поэтому не повезло.

Решение этого с помощью шейдеров может быть выполнено двумя способами: либо вы запекаете карту нормалей воображаемой «кривизны» внешнего края ( пример ), либо вы создаете поле расстояния со знаком (* 1005) * пример ), или некоторый подобный метод, который отображает расстояние до края. Карта нормалей, вероятно, учитывает самые сложные эффекты, и я уверен, что некоторые шейдеры Френеля тоже могут с этим работать. Тем не менее, он требует, чтобы вы сделали модель фигуры и выпекали нормаль.

С другой стороны, поле расстояния со знаком может быть создано с помощью сценария из изображения, поэтому, если у вас много изображений, это может быть самый быстрый подход. Получение расстояния до края внутри шейдера в реальном времени не будет работать, так как вам придется выбирать очень большое количество соседних пикселей, что может сделать шейдер в 10-20 раз медленнее, в зависимости от того, насколько толстым должен быть край.

Если вам не нужно, чтобы изображение было таким динамичным, то, возможно, вам лучше всего создать внутреннюю черно-белую текстуру в Photoshop и наложить ее с помощью аддитивного шейдера. Если вы не знаете, как писать шейдеры, то, возможно, два вышеупомянутых подхода немного сложны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...