Страница 1 из 1

Смешивание Текстур нормалей в Shader

СообщениеДобавлено: 31 июл 2015, 18:43
Kabanelloo
Доброго времени суток ) . Я не могу написать смешивание нормалей .

Есть основной _BumpMap

и на него нужно наложить _NormalDeteilMap

при это иметь _Scaler типа Float который регулирует смешивание + и - .

Я еще не реализовал смешивание и особо не получается.

И нужно получить на выход в o.Normal который принимает только tex2D . в RGB.

Вот я ломаю и никто не знает, Да и с стандарт Юнити шейдера вытащить не получается.

Я реализовал Смешивание текстуры дифузной и решил сделать такое же смешивание только нормалей. Получается не очень ) x_x

Помогите с этой функцией. Прошу )))) Есть конечно вот это http://blog.selfshadow.com/publications/blending-in-detail/

Там об этом речь идет только я не понимаю как это реализовать ....

Re: Смешивание Текстур нормалей в Shader

СообщениеДобавлено: 03 авг 2015, 10:25
alt3d
Так а что, обычный lerp не подходит?
У меня так смешиваются нормал-карты, и вроде все корректно.

// Распаковываем текстуры
float3 normalFirst = UnpackNormal(tex2D(_NormalMapFirstTex, IN.uv_NormalMapFirstTex));
float3 normalSecond = UnpackNormal(tex2D(_NormalMapSecondTex, IN.uv_NormalMapSecondTex));

// Смешиваем и выводим результат в структуру
float3 normalResult = lerp(normalFirst , normalSecond , _NormalMix);
o.Normal = normalResult ;

Где:
_NormalMapFirstTex и _NormalMapSecondTex - слоты под карты нормалей,
uv_NormalMapFirstTex и uv_NormalMapSecondTex - их текстурные координаты,
_NormalMix - значение "смешивания"

А за ссылку, спасибо :).
Позже почитаю, интересно.

Re: Смешивание Текстур нормалей в Shader

СообщениеДобавлено: 04 авг 2015, 11:59
Kabanelloo
Спасибо буду пробовать ) . Есть разные смешивания . Разные математ формулы. Я стараюсь выбрать оптимальную. Да вот были которые ужасно смешивают ))

Re: Смешивание Текстур нормалей в Shader

СообщениеДобавлено: 14 окт 2015, 13:33
Razor_V
Можно сделать так:
Синтаксис:
Используется csharp
o.Normal =  (normalFirstr + (normalSecond * _NormalMix))-_NormalMix/2.0;

P.S.
Lerp выполняет плавную интерполяцию между двумя значениями.