Shader - выделение объекта

Для экспериментальных разработок и тем "я нашел чужой исходник, почему он не работает?"

Shader - выделение объекта

Сообщение comrade 03 сен 2015, 14:42

Всем привет, в чем может быть проблема данного шейдера(смотреть спойлер)? При накидывании его на объект, появляется помятый шар, а должно быть обводка объекта белой полосой.
Пробовал с разными объектами, результат одинаковый.
Синтаксис:
Используется glsl
Shader "Custom/selected" {
        Properties {
                _Color ("Main Color", Color) = (.5,.5,.5,1)
                _OutlineColor("Outline Color", Color) = (0,0,0,1)
                _Outline("Outline width", Range (0.0, 0.03)) = .005
                _MainTex ("Base (RGB)", 2D) = "white" {}
               
        }
       
CGINCLUDE
#include "UnityCG.cginc"
       
        struct appdata {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
        };
       
        struct v2f {
                float4 pos : POSITION;
                float4 color : COLOR;
                };
       
        uniform float _Outline;
        uniform float4 _OutlineColor;
       
        v2f vert (appdata v) {
                v2f o;
                o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
               
                float3 norm = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal);
                float2 offset = TransformViewToProjection(norm.xy);
               
                o.pos.xy += offset * o.pos.z * _Outline;
                o.color = _OutlineColor;
                return o;
               
        }
               
ENDCG
                SubShader {
                Tags { "Queue" = "Transparent"}
               
                Pass{
                        Name "OUTLINE"
                        Tags { "LightMode" = "Always"}
                        Cull Off
                        ZWrite Off
                        ZTest Always
                        ColorMask RGB
                       
                        Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
       
half4 frag(v2f i) :COLOR {
        return i.color;
        }      
ENDCG  
       
                }
               
                Pass {
                        Name "BASE"
                        ZWrite On
                        ZTest  LEqual
                        Blend SrcAlpha OneMinusSrcAlpha
                        Material {
                                Diffuse [_Color]
                                Ambient [_Color]
                        }
                        Lighting On
                        SetTexture [_MainTex] {
                                ConstantColor [_Color]
                                Combine texture * constant
                        }
                        SetTexture [_MainTex] {
                                Combine previous * primary DOUBLE
                        }
                }
        }
        SubShader {
                Tags { "Queue" = "Transparent"}
                Pass{
                        Name "OUTLINE"
                        Tags { "LightMode" = "Always"}
                        Cull Front
                        ZWrite Off
                        ZTest Always
                        ColorMask RGB
                       
                        Blend SrcAlpha OneMinusSrcAlpha
                       
                        CGPROGRAM
                        #pragma vertex vert
                        #pragma exclude_renderers gles xbox360 ps3
                        ENDCG
                        SetTexture [_MainTex] {combine primary}
                }
                Pass{
                        Name "BASE"
                        ZWrite On
                        ZTest  LEqual
                        Blend SrcAlpha OneMinusSrcAlpha
                        Material {
                                Diffuse [_Color]
                                Ambient [_Color]
                        }
                        Lighting On
                        SetTexture [_MainTex] {
                                ConstantColor [_Color]
                                Combine texture * constant
                        }
                        SetTexture [_MainTex] {
                                Combine previous * primary DOUBLE
                        }
                }
        }
        Fallback "Diffuse"             
}
Последний раз редактировалось comrade 14 сен 2015, 14:40, всего редактировалось 2 раз(а).
comrade
UNец
 
Сообщения: 7
Зарегистрирован: 02 авг 2015, 11:04

Re: Shader - выделение объекта

Сообщение comrade 14 сен 2015, 14:37

В версии юнити 5.2.0 материал вообще почемуто черный.
Никто не поможет?
comrade
UNец
 
Сообщения: 7
Зарегистрирован: 02 авг 2015, 11:04

Re: Shader - выделение объекта

Сообщение Navigator_x 03 май 2016, 23:28

comrade писал(а):В версии юнити 5.2.0 материал вообще почемуто черный.
Никто не поможет?


CGPROGRAM
#pragma vertex vert
#pragma exclude_renderers gles xbox360 ps3
ENDCG

Попробуй закоментируй эти строки, либо совсем удали
Navigator_x
UNец
 
Сообщения: 13
Зарегистрирован: 01 май 2016, 15:33


Вернуться в Шейдерная кузня

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

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