2014-01-19 1 views
2

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

Вот пример:
enter image description here

Есть некоторые белые бумаги или учебник о таком эффекте?

Каков принцип этого эффекта?

+0

вы, вероятно, найти ответ на gamedev.stackexchange, ком вместо здесь – thumbmunkeys

ответ

1

Есть интересная статья AMD - Getting Procedural.

Кажется, что блестки сложнее, чем я думаю. Достойное решение: используйте 3D-позицию для индексации функции 3D-шума, добавьте вектор просмотра, используйте функцию frac для дальнейшего рандомизации вещей.

Искорка:

float specBase = saturate(dot(reflect(-normalize(viewVec), normal), 
lightDir)); 
// Perturb a grid pattern with some noise and with the view-vector 
// to let the glittering change with view. 
float3 fp = frac(0.7 * pos + 9 * Noise3D(pos * 0.04).r + 0.1 * viewVec); 
fp *= (1 - fp); 
float glitter = saturate(1 - 7 * (fp.x + fp.y + fp.z)); 
float sparkle = glitter * pow(specBase, 1.5); 
0

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

Сначала вы пороговое входное изображение, поэтому все с яркостью ниже порога установлено на прозрачный черный (RGBA = 0,0,0,0). Все с равной или большей яркостью, чем порог, остается таким, каким оно есть.

Затем вы применяете направленное размытие к пороговому изображению.

Затем примените направленное размытие, указывающее 90 ° от предыдущего до порогового изображения. (Примечание - не применяйте его к уже размытому изображению.Это важно! У вас должно получиться 3 изображения - пороговое изображение, размытое изображение и другое размытое изображение, где размытие составляет 90 ° от первого.)

Наконец, используя простую аддитивную смесь, добавьте 2 размытых изображения в исходный вход . (Теперь вы можете выбросить пороговое изображение.) Результат будет заключаться в том, что каждый пиксель, имеющий яркость выше порога, теперь будет иметь яркий крест на нем. Вы можете использовать более двух размытий, если хотите, и отрегулировать их углы, чтобы получить 3 или 5 или более очков, но это означает больше проходов.

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

Кроме того, вышеуказанный процесс фильтрации следует применять в пространстве экрана.

+0

Это не эффект, который я ищу. Эффект, который я пытаюсь создать, - это белые точки, распределенные по объекту, который придает блеск. – MaT

+0

Я считаю, что белые точки - это всего лишь текстура со случайными белыми точками в ней, а затем они применяют фильтр, подобный описанному выше, в качестве почтового процесса в пространстве экрана. – user1118321

+0

Я изменил пример, чтобы показать эффект. Белые точки - это эффект, который я пытаюсь воспроизвести. – MaT

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^