Войти
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

[АРХИВ] Шейдеры, техники, rendering path'ы (19 стр)

Страницы: 118 19 20 2124 Следующая »
#270
18:26, 10 фев. 2016

> а почему грибы в дали имеют такую большую/жирную красную подсветку ?

подсветка везде одинакового размера, просто для маленьких объектов она кажется большой

EDIT: Одинаковый размер в экранных пикселях

EDIT: Если хочешь более тонкую границу, меньше семплов просто сделай


#271
18:46, 10 фев. 2016

Вообще меняя циферки можно яркость/размер/четкость регулировать

Вот подобие контуров из Left 4 Dead

Изображение

шейдер

+ Показать

материалы

+ Показать

но тут такой момент, что если при блюре результирующая сумма получается больше единицы (это задирает яркость выше нормы), то следует очень осторожно выбирать цвета, так как они будут смешиваться (например там где зеленый и красный контур пересекуются, там будет желтый цвет, поэтому нужно выбирать совместимые цвета, как в этом примере

EDIT: исправил копипасту с материалами

#272
18:53, 10 фев. 2016

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

#273
20:56, 10 фев. 2016

У тебя за кубиком видно один лишь контур от объекта только лишь по этому - (gl_FragColor = viewport * (1.0 - blurredMask.a) + blurredMask;) ?
Или у тебя реально в RTT c масками находятся дырявые объекты?) Я сколько ни смотрел шейдер так и не нашел что их может делать дырявыми кроме этой строчки и в масках скорее всего у тебя полностью раскрашенные объекты лежат.

Я попытался добавить прозрачности для силуэта , сделав пасс с силуэтами от объектов как альфа пасс, а в материале blend сделал как  - "addalpha" таким образом тоже получил прозрачную подсветку, которая реагирует на cSiluetColor.a
Но так как контуры рисуются полность в своем пассе то ни каких дыр в них нет )

И я вот думаю каким макаром мне сравнить оригинальную модель с ее контуром.
Чтобы если скажем текущий пиксель силуэта лежит на объекте подсветки (если смотреть из камеры) в пределах его объёма - то такой пиксель силуэта просто отбрасывался и не писался во фрейм буфер.

- пробовал сравнивать разницу clip(project) ~ какая-то фигня
- так же пробовал сравнивать скринпос позицию контура и объекта ~ что-то клипается вроде, но как-то коряво, в общем тоже какая-то фигня :)

+ Показать

#274
21:02, 10 фев. 2016

Дырка получается blurredMask = clamp(blurredMask - mask.a, 0.0, 1.0);

#275
21:07, 10 фев. 2016

Пытаюсь решить вопрос смешивания цветов на границе двух обводок, получился дикий шейдер

+ Показать

оно вроде как работает, но хотел бы способ поэлегантнее

#276
21:31, 10 фев. 2016

а почему бы после for результат не поделить result.rgb /= на кол-во выборок ?

Я не знаю насколько оправданно такое обилие IF'ов шейдере :)
Но могу предположить что может быть стоит сравнивать по интенсивности белого в цвете?

vec3 MyMax(vec3 color1, vec3 color2)
{
  return GetIntensity(color1) > GetIntensity(color2) ? color1 : color2;
}
#277
22:20, 10 фев. 2016

я забил на этот способ, там все равно мигание есть, когда то один цвет выбирается, то другой (из за сжатого в два раза рендертаргета цвета смещаются туда сюда)

в общем финальный шейдер, который меня абсолютно устраивает, в нем смешивание абсолютно незаметно

+ Показать

codingmonkey
> Но могу предположить что может быть стоит сравнивать по интенсивности белого в
> цвете?
этот способ не различает к примеру чисто зеленый и чисто красный цвета

EDIT: посмотрел код функции, GetIntensity() зеленый и красный он будет различать все же)

#278
12:37, 11 фев. 2016

я не тестил твой шейдер, но я правильно понял, что в своем шейдере уменьшаешь обводку для далеких объектов? По идее смысл перевода в экранное пространство, чтобы обводка имела одинаковую толщину в пикселях. Если для дальних объектов нужна более тонкая обводка, может просто не переводить в экранные координаты?

#279
18:31, 11 фев. 2016

>я не тестил твой шейдер
А зря, интересно было бы сравнить фпс при равных сценах :)
Я знаю что у тебя картинка будет более качественнее, но тем не менее, в случае если нам наплевать на градацию контура и нужна "дешёвая подсветка"

>По идее смысл перевода в экранное пространство
Мы узнаем куда смотрят нормали модели(из ворд спейс) в пространстве камеры (вив спейс)
Далее берем эту вид нормаль.xy (2д часть - в плоскости экрана/вида)
Трансформируем её в проджект спейс(clip space) - получаем, ту же нормаль но в проджект спейсе (прибавляются аффекты перспективы fov / орто)
Ну и далее собственно к оригинальному clip space модели, прибавляем этот вектор смещения помноженный на ширину силуэта(юниформ) +сюда же, как фактор для дальних-ближних объектов в умножение включен оригинальный clip.z модели, вернее квадратный корень из него. мб я и ахинею написал, но это - то, как я сам эти трансформации понимаю )
Я глянул вроде годно смотрится на дальних.
В так или иначе, это все по ранее приведенной тобой же ссылке сделано, из какой-то вики статьи или топика на стаковерфлоу.

>Если для дальних объектов нужна более тонкая обводка, может просто не переводить в экранные координаты?
Условия не хочу в шейдере писать и определять что там дальнее, а что нет.
- Еще что не хотелось бы это - внутреннюю часть рисовать от контура, но пока не придумал как.
- И градиент контуру как-то бы прикрутить

#280
18:53, 11 фев. 2016

Не, ты не понял, просто создаешь оболочку для объекта, как я в начале делал и все, вопрос решен, для дальних объектов обводка получается тоньше как и сам объект, изза перспективы )

EDIT:
> И градиент контуру как-то бы прикрутить

у тебя есть исходная точка и новая точка увеличенного контура, градиент зависит от расстояния в пиксельном шейдере

#281
19:36, 11 фев. 2016

так мне тоже интересно, почему же тогда так не делали в том примере для юньки, мб есть какие-то косяки при таком подходе

#282
19:41, 11 фев. 2016

да там нубы просто) юнити для нубов)

#283
22:05, 13 фев. 2016

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

#284
22:13, 13 фев. 2016

там же просто shadow пасс в Unlit техниках добавить нужно или нет ?

Страницы: 118 19 20 2124 Следующая »
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

Тема в архиве.