Опциональность Specular и Deffuse для источников света

Общие вопросы о Unity3D

Опциональность Specular и Deffuse для источников света

Сообщение Cryunreal 09 авг 2013, 16:42

Как получить возможность использовать только specular либо только diffuse у источников света? Заметьте, не шейдер который будет воспринимать только спекуляр либо диффузию, а именно у источника света. В некоторых игровых движках эта возможность имеется и нужна для художников, а в Unity получается так, что интенсивность спекуляра источника света совместно возрастает с интенсивностью диффузии источника света
Cryunreal
UNец
 
Сообщения: 7
Зарегистрирован: 29 мар 2011, 01:11

Re: Опциональность Specular и Deffuse для источников света

Сообщение Receptor 09 авг 2013, 18:26

В Юнити такого нету вроде как
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Опциональность Specular и Deffuse для источников света

Сообщение seaman 09 авг 2013, 20:13

Вы действительно имели в виду "Specular"? Вы знаете что это такое? Дословный перевод "Зеркальный". Какое свойство источника света Вы имеете в виду под "зеркальный"?
Нет такого свойство ни в одном движке у источников света. Если где-то и назвали какое-то свойство словом "Specular" (в чем я лично глубоко сомневаюсь), то они явно имели в виду что-то не общепринятое.
Под "Diffuse", можно, конечно, понимать просто "цвет". Однако обычно это все же также как и "Specular" - свойство поверхности, а не источника света.
Поэтому - просьба показать движок (лучше со скрином настроек) с такими параметрами у источника света. Тогда можно будет подумать что соответствует Вашим параметрам в Юнити.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Опциональность Specular и Deffuse для источников света

Сообщение waruiyume 09 авг 2013, 21:10

(max_sm) правда это не движок :p
Изображение
Дифуз умножается на rgb компоненты, цвета светильника, a- не юзается. Умножаем спеуляр на а компонент цвета и нормализованные rgb, от туда же Изображение
Синтаксис:
Используется glsl
Shader "Custom/SeparateSpecular" {
        Properties
        {
      _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
        {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf SimpleSpecular

      half4 LightingSimpleSpecular (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
          {
          half3 h = normalize (lightDir + viewDir);

          half diff = max (0, dot (s.Normal, lightDir));

          float nh = max (0, dot (s.Normal, h));
          float spec = pow (nh, 48.0);
          spec *= _LightColor0.a; //Here

          half4 c;
          c.rgb = (s.Albedo * _LightColor0.rgb * diff + normalize(_LightColor0.rgb) * spec) * (atten * 2);//And here
                  //normalize(_LightColor0.rgb) * spec

          c.a = s.Alpha;
          return c;
      }

      struct Input
          {
          float2 uv_MainTex;
      };

      sampler2D _MainTex;
      void surf (Input IN, inout SurfaceOutput o)
          {
          o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
      }
      ENDCG
    }
}

 

Единственное ограничение, в том, что все rgb компоненты, цвета светильника, в сумме должны быть больше 0.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Опциональность Specular и Deffuse для источников света

Сообщение seaman 09 авг 2013, 21:17

На скрине галочка - воздействует ли данный светильник на спекуляр поверхности, а не значение спекуляр самого светильника.
Дальше приведен шейдер. Любой шедер - это характеристика поверхности, а не светильника. Он может использовать характеристики светильника, но он не принадлежит светильнику.
Все же хорошо бы посмотреть на движок, в котором у светильника есть характеристика "Спекуляр".
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Опциональность Specular и Deffuse для источников света

Сообщение Cryunreal 09 авг 2013, 21:25

light emit.jpg

Я не путаю, знаю прекрасно что такое spec и diff)
Вот один из примеров в maya( это все отображается во вьюпорте, то есть реалтайм рендер самый обыновенный, только forward или deffered точно не знаю ), сделал сейчас на ходу. В максе тоже самое в приведенном вами примере, но не знаю работает ли это во вьюпорте. Вот еще пример результата, когда в сцене 2 источника света, и оба излучают только Specular. http://jasonvfx.com/vsfx755/independent ... r_pass.png Так же встречал это часто в различных рендерах игровых, точно знаю в каком это есть, но говорить не буду(нельзя)
суть в том что это иногда для освещения нужны источники света, которые не имеют бликов. Ими заполняют пространство, имитируя глобальную иллюминацию. За примером далеко не надо ходить, так делались все старые мультфильмы пиксара, у них почти все мультики вообще без глобалки рендились, потому как её просто напросто не было в RenderMan)))
У вас нет доступа для просмотра вложений в этом сообщении.
Cryunreal
UNец
 
Сообщения: 7
Зарегистрирован: 29 мар 2011, 01:11

Re: Опциональность Specular и Deffuse для источников света

Сообщение waruiyume 09 авг 2013, 21:29

точно знаю в каком это есть, но говорить не буду(нельзя)

А я... а я... а я знаю как нихера не делать и получать 100500$ в минуту, только я не скажу как- низя!
Я уею с партизан #-o
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Опциональность Specular и Deffuse для источников света

Сообщение seaman 09 авг 2013, 21:54

На приведенной как пример картинке - отдельный проход расчета рендера - расчет спекуляра. Даже картинка называется specular_pass.
На скрине из майя аналогичная галочка максу - влияет ли данный светильник на спекуляр.
Еще раз. Спекуляр - это характеристика поверхности, а не светильника. Добавь к светильнику скрипт с такой галочкой. Положи на поверхность соответствующий шейдер, который использует эту галочку из скрипта - вот и получишь то что нужно. Можно сделать как в Максе или Майке - добавить светильнику соответствующие галочки. Однако я возьму - на поверхность положу шейдер, которому начхать на эти галочки - и все. Они не действуют. Поэтому нет их в движках.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Опциональность Specular и Deffuse для источников света

Сообщение Cryunreal 09 авг 2013, 22:48

seeman, мысль здравая, но представьте ситуацию...
шарик, на него слева светит источник света действующий только на спекуляр, а справа только на диффузию...
вот так
light emmit.jpg

тут возникает тогда вопрос, возможно ли сделать в юнити шейдер, который будет от определённых источников света воспринимать только спекуляр либо только диффузию? и пример кода желательно)
У вас нет доступа для просмотра вложений в этом сообщении.
Cryunreal
UNец
 
Сообщения: 7
Зарегистрирован: 29 мар 2011, 01:11

Re: Опциональность Specular и Deffuse для источников света

Сообщение BornFoRdeatH 09 авг 2013, 22:59

seaman писал(а):Добавь к светильнику скрипт с такой галочкой. Положи на поверхность соответствующий шейдер, который использует эту галочку из скрипта - вот и получишь то что нужно.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Опциональность Specular и Deffuse для источников света

Сообщение Cryunreal 09 авг 2013, 23:14

Зачем второй раз мне повторять одно и то же. Лучше скажите какой это должен быть шейдер, который от "источника света с галочкой" будет воспринимать спекуляр, а от "источника света без галочки" не будет, при учете что они оба светят на меш одновременно.
Cryunreal
UNец
 
Сообщения: 7
Зарегистрирован: 29 мар 2011, 01:11


Вернуться в Общие вопросы

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

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