Смена цвета у Crease Shading

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

Смена цвета у Crease Shading

Сообщение Anonymyx 01 июн 2016, 14:59

Хай. 1ый раз имею дело непосредственно с кодом шейдера. Возможно ли изменить цвет выделения контура у эффекта Crease Shading? (Например, на красный)
Синтаксис:
Используется glsl

Shader "Hidden/CreaseApply" {
Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _HrDepthTex ("Base (RGB)", 2D) = "white" {}
        _LrDepthTex ("Base (RGB)", 2D) = "white" {}

}

SubShader {
        Pass {
                ZTest Always Cull Off ZWrite Off

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

sampler2D _MainTex;
sampler2D _HrDepthTex;
sampler2D _LrDepthTex;

uniform float4 _MainTex_TexelSize;

uniform float intensity;

struct v2f {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
};

v2f vert( appdata_img v )
{
        v2f o;
        o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
        o.uv.xy = v.texcoord.xy;
        return o;
}

half4 frag (v2f i) : SV_Target
{
        float4 hrDepth = tex2D(_HrDepthTex, i.uv);
        float4 lrDepth = tex2D(_LrDepthTex, i.uv);
       
        hrDepth.a = DecodeFloatRGBA(hrDepth);
        lrDepth.a = DecodeFloatRGBA(lrDepth);
       
        float4 color = tex2D(_MainTex, i.uv);

        return color * (1.0-abs(hrDepth.a-lrDepth.a)*intensity);

/*float percent = (1.0-abs(hrDepth.a-lrDepth.a)*intensity);
color.r += color.r * percent;
return color + (color * percent);
*/


}

ENDCG


        }
}

Fallback off

}

 

Пробовал самостоятельно менять строчку return, но из этого ничего не вышло. Прошу помощи.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение i_am_kisly 02 июн 2016, 18:24

Да, это возможно. Как минимум переименуй шей дер и Кинь в папку ассет. И вытащи его из скрытых.
Текущие проекты: [Lineage2 unity5][_blog non6.blogspot.ru ]
i_am_kisly
Старожил
 
Сообщения: 742
Зарегистрирован: 10 фев 2015, 17:26
  • Сайт

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 02 июн 2016, 20:12

Вот, набросал... Один из вариантов. Всегда красный цвет на весь экран как результат... Изменение MainTex на "red" ничего не дает.
Синтаксис:
Используется glsl
Shader "CreaseApplyMod" {

Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _HrDepthTex ("Base (RGB)", 2D) = "white" {}
        _LrDepthTex ("Base (RGB)", 2D) = "white" {}
        _Color ("Main Color", COLOR) = (250,0,0)
}

SubShader {
        Pass {
                ZTest Always Cull Off ZWrite Off

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

sampler2D _MainTex;
sampler2D _HrDepthTex;
sampler2D _LrDepthTex;
fixed4 _Color;

uniform float4 _MainTex_TexelSize;

uniform float intensity;

struct v2f {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
};

v2f vert( appdata_img v )
{
        v2f o;
        o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
        o.uv.xy = v.texcoord.xy;
        return o;
}

half4 frag (v2f i) : SV_Target
{
        float4 hrDepth = tex2D(_HrDepthTex, i.uv);
        float4 lrDepth = tex2D(_LrDepthTex, i.uv);
       
        hrDepth.a = DecodeFloatRGBA(hrDepth);
        lrDepth.a = DecodeFloatRGBA(lrDepth);
       
        float4 color = tex2D(_MainTex, i.uv);

        return _Color * (1.0-abs(hrDepth.a-lrDepth.a)*intensity);


}

ENDCG


        }
}

Fallback off

}

 
Последний раз редактировалось Anonymyx 02 июн 2016, 22:15, всего редактировалось 1 раз.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение i_am_kisly 02 июн 2016, 21:44

А что он должен делать ? Я не догоняю. Опиши, я исправлю потому что твой шейдер делает всё что угодно но не то что должен..
Текущие проекты: [Lineage2 unity5][_blog non6.blogspot.ru ]
i_am_kisly
Старожил
 
Сообщения: 742
Зарегистрирован: 10 фев 2015, 17:26
  • Сайт

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 02 июн 2016, 22:08

Это стандартный Image Effect шейдер. Image Effects - Edge Detection - Crease Shading. Обводка контура объекта черным цветом с заданной толщиной и интенсивностью (но это не суть).
Скрытый текст:
Изображение

Тот что в шапке - без изменений (то что изменял - закомментил).
Мне нужно то же самое, но просто чтобы цвет был не черный, а например красный.
Нашел это: http://answers.unity3d.com/questions/13 ... ffect.html
Но все так же, цвет на весь экран, хотя конечно, я делаю что-то не так...
Был бы благодарен за любую помощь!
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение waruiyume 02 июн 2016, 22:33

Думаю как-то так:
return lerp(color, _TintColor, (1.0-abs(hrDepth.a-lrDepth.a)*intensity));
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 02 июн 2016, 22:40

Синтаксис:
Используется csharp
_TintColor ("Some Color", Color) = (250,0,0)
...
fixed4 _TintColor;
...
return lerp(color, _TintColor, (1.0-abs(hrDepth.a-lrDepth.a)*intensity));
 


Так, красный на весь экран... :(
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение waruiyume 02 июн 2016, 22:50

Расшарьте здесь тестовый проект(достаточно, только чтобы оригинальный постэффект работал), и я попробую помочь.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 02 июн 2016, 23:28

http://rgho.st/7f6PF5fYc
Шейдер в Standart Assets - Effects - Image Effects - Shaders (вроде так).
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение waruiyume 03 июн 2016, 01:15

https://yadi.sk/i/9OA_5ESosDYZS
Синтаксис:
Используется glsl
float str = abs(hrDepth.a-lrDepth.a)*intensity;
return lerp(color, fixed4(1,0,0,0), str);
 

Что странно, у меня тоже сначала заливало весь экран, а при попытке вывести маску (1.0-abs(hrDepth.a-lrDepth.a)*intensity) та выводилась сплошным цветом.
У меня только одна идея, почему-то залип компилятор, ну или что-то проглючило в эдиторном скрипте 8-|
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 03 июн 2016, 23:29

waruiyume, спасибо огромное! Очень помогли! :ymhug: Уже сделал смену шейдеров при клике, т.е. наведение-синий, кликаем-красный. (popcorn1)
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение i_am_kisly 04 июн 2016, 23:45

т.е. у вас два одинаковых шейдера, только один красный, другой синий ?
Текущие проекты: [Lineage2 unity5][_blog non6.blogspot.ru ]
i_am_kisly
Старожил
 
Сообщения: 742
Зарегистрирован: 10 фев 2015, 17:26
  • Сайт

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 04 июн 2016, 23:49

Ага. Лисапед?
Скармливаю скрипту соотв. шейдер при опред. усовиях.
Я так понял SetFloat тут не подойдёт.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Смена цвета у Crease Shading

Сообщение i_am_kisly 05 июн 2016, 00:15

наверное потому что надо использовать SetColor ?
Текущие проекты: [Lineage2 unity5][_blog non6.blogspot.ru ]
i_am_kisly
Старожил
 
Сообщения: 742
Зарегистрирован: 10 фев 2015, 17:26
  • Сайт

Re: Смена цвета у Crease Shading

Сообщение Anonymyx 05 июн 2016, 12:32

SetColor у material же... Как и SetFloat.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


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

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

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