Multitexturing. Dirt.

Шейдеры и все-все-все.

Multitexturing. Dirt.

Сообщение Ursus 30 дек 2010, 16:17

Может быть кто-нибудь встречал шейдер, работающий при версии 3.*, похожий на Lightmap-BumpSpec (два UV-set-а: UV: Диффуз, Спекуляр-Мап, Нормал-мап, UV2: Дирт-Мап ) + работа с тенями от источника света, но техника смешивания Диффуз+Дирт-Мап в итоге должна быть похожа на DiffuseDetail, и без реакции потери интенсивности Dirt на источник света.
(Планы изучения шейдерописания просто пока отложены на попозже).
Аватара пользователя
Ursus
UNец
 
Сообщения: 12
Зарегистрирован: 29 авг 2010, 18:29
Откуда: Минск, Беларусь
  • ICQ

Re: Multitexturing. Dirt.

Сообщение gnoblin 30 дек 2010, 20:15

получается нужен bumpedspec + diffuse detail (uv2)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Multitexturing. Dirt.

Сообщение Ursus 30 дек 2010, 22:34

Да. И, удивительно, что такого нет в стандартной поставке; 90% контента для архитектуры в последних играх используют именно такую комбинацию.
Аватара пользователя
Ursus
UNец
 
Сообщения: 12
Зарегистрирован: 29 авг 2010, 18:29
Откуда: Минск, Беларусь
  • ICQ

Re: Multitexturing. Dirt.

Сообщение gnoblin 31 дек 2010, 00:12

а зачем второй ув-канал если достаточно тайлинга?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Multitexturing. Dirt.

Сообщение gnoblin 31 дек 2010, 00:16

Синтаксис:
Используется glsl
Shader "Bumped Specular Detail" {
Properties {
        _Color ("Main Color", Color) = (1,1,1,1)
        _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
        _Shininess ("Shininess", Range (0.03, 1)) = 0.078125
        _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
        _BumpMap ("Normalmap", 2D) = "bump" {}
        _Detail ("Detail (RGB)", 2D) = "gray" {}
}
SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 450
       
CGPROGRAM
#pragma surface surf BlinnPhong

sampler2D _MainTex;
sampler2D _BumpMap;
sampler2D _Detail;
float4 _Color;
float _Shininess;

struct Input {
        float2 uv_MainTex;
        float2 uv_BumpMap;
        float2 uv_Detail;
};

void surf (Input IN, inout SurfaceOutput o) {
        half4 tex = tex2D(_MainTex, IN.uv_MainTex);
        o.Albedo = tex.rgb * _Color.rgb * tex2D(_Detail,IN.uv_Detail).rgb * 2;
       
        o.Gloss = tex.a;
        o.Alpha = tex.a * _Color.a;
        o.Specular = _Shininess;
        o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
}

FallBack "Specular"
}
 
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Multitexturing. Dirt.

Сообщение Ursus 31 дек 2010, 12:40

Отличный шейдер в своём классе. Спасибо. Найдётся немало объектов, которые выглядят намного хуже без такого материала. Но в моём клиническом случае нужна ассоциация второго UV-seta c Detail (Dirt) #:-s
(Хотя есть недостаток: источники света в материале не должны выбелять Detail, как это же происходит с LightMap. В оригинальном DiffuseDetail
этого как раз не происходит)
gnoblin писал(а):а зачем второй ув-канал если достаточно тайлинга?

Архитектура требует проработки: первый UV-set для тайлинга (повышается плотность пикселя на кв. м), второй UV-set для создания уникальности всем плоскостям и придания эффекта реализма (скриншоты из Maya):
http://dl.dropbox.com/u/5582933/UV1_UV2.jpg

С Новым Годом!
Аватара пользователя
Ursus
UNец
 
Сообщения: 12
Зарегистрирован: 29 авг 2010, 18:29
Откуда: Минск, Беларусь
  • ICQ

Re: Multitexturing. Dirt.

Сообщение DbIMok 31 дек 2010, 13:20

ну, в этом шейдере 3 UV используется. много? нужно именно 2?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Multitexturing. Dirt.

Сообщение gnoblin 31 дек 2010, 13:26

в шейдере используется только первый канал.

чтобы у dirt использовался второй, замените uv_Detail на uv2_Detail.

Всё равно не понял зачем тут второй UV, если можно для каждой текстуры и так независимо настраивать плотность и смещение текстуры.

(Хотя есть недостаток: источники света в материале не должны выбелять Detail, как это же происходит с LightMap. В оригинальном DiffuseDetail
этого как раз не происходит)

В этом шейдере Albedo смешивается как раз точно так же как в DiffuseDetail - что не так? :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Multitexturing. Dirt.

Сообщение Paul Siberdt 31 дек 2010, 14:08

Именно двойная развертка позволяет при пользовании двух небольших текстур (тайла материала и маски грязи) получить большую вариативность рисунка поверхности.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Multitexturing. Dirt.

Сообщение gnoblin 31 дек 2010, 14:40

ок!
наверное ).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Multitexturing. Dirt.

Сообщение Ursus 31 дек 2010, 15:33

gnoblin писал(а):чтобы у dirt использовался второй, замените uv_Detail на uv2_Detail.
Блин. Сделал это сразу как только шейдер опубликовался здесь, но не сработало - не заметил, что этот параметр был в 2-х местах. Исправил теперь в обоих. Всё заработало! Огромное спасибо! Отличный подарок к Новому Году!
В этом шейдере Albedo смешивается как раз точно так же как в DiffuseDetail - что не так?
Ввёл в заблуждение Specular Color. Если на Color-е нет альфы со Спекуляром - канал заливается сплошным белым. Создаётся эффект пересвета. Если позаботиться о нужной текстуре Спекуляра - всё работает на отлично. Ещё раз спасибо!
Аватара пользователя
Ursus
UNец
 
Сообщения: 12
Зарегистрирован: 29 авг 2010, 18:29
Откуда: Минск, Беларусь
  • ICQ

Re: Multitexturing. Dirt.

Сообщение gnoblin 31 дек 2010, 16:32

Ursus, см. ЛС
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3