Шейдера+Image Effects

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

Шейдера+Image Effects

Сообщение Ursus 23 мар 2011, 16:34

Некоторые шейдера не дружат с Image Effects. Например известные мне шейдера Флага (в том числе и упоминавшийся здесь недавно).

Изображение

В какую сторону плыть?
Image Effects видит реальный контур меша, на который назначен материал.
Причём не дружат как-то с одной стороны флага. Шаманизм с мешем модели результатов не принёс.
Есть надежда поколдовать с шейдером Флага. Но пока этому не учился - по времени дешевле забить на постэффекты.
Текст флагошейдера для ориентации:

Синтаксис:
Используется glsl
Shader "FX/FlagWave"
{

Properties
{
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Texture", 2D) = "white" { }
    _WaveSpeed ("Wave Speed", float) = 50.0
}

SubShader
{
    Pass
    {
       CULL Off
       
      CGPROGRAM
      #pragma vertex vert
      #pragma fragment frag
      #include "UnityCG.cginc"
      #include "AutoLight.cginc"
       
      float4 _Color;
      sampler2D _MainTex;
      float _WaveSpeed;

      // vertex input: position, normal
      struct appdata {
          float4 vertex : POSITION;
          float4 texcoord : TEXCOORD0;
      };
       
      struct v2f {
          float4 pos : POSITION;
          float2 uv: TEXCOORD0;
      };
       
      v2f vert (appdata v) {
          v2f o;

        float sinOff=v.vertex.x+v.vertex.y+v.vertex.z;
        float t=_Time*_WaveSpeed;
        if(t < 0.0) t *= -1.0;
        float fx=v.texcoord.x;
        float fy=v.texcoord.x*v.texcoord.y;

        v.vertex.x+=sin(t*1.45+sinOff)*fx*0.5;
        v.vertex.y=sin(t*3.12+sinOff)*fx*0.5-fy*0.9;
        v.vertex.z-=sin(t*2.2+sinOff)*fx*0.2;
   
          o.pos = mul( UNITY_MATRIX_MVP, v.vertex );
          o.uv = v.texcoord;

         return o;
      }
       
      float4 frag (v2f i) : COLOR
      {
         half4 color = tex2D(_MainTex, i.uv);
         return color;
      }

      ENDCG

      SetTexture [_MainTex] {combine texture}
    }
}
   Fallback "VertexLit"
}

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

Re: Шейдера+Image Effects

Сообщение alexz 23 мар 2011, 20:00

Ursus писал(а):Image Effects видит реальный контур меша, на который назначен материал.

Какой именно из эффектов? Скрипты эффектов могут повторно рисовать объект, выставляя ему какой-то другой материал, в результате чего вершинный шейдер из оригинального материала не применяется. Можно посмотреть код эффекта, понять, что в нём происходит, и потом уже действовать по обстоятельствам.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Шейдера+Image Effects

Сообщение Ursus 23 мар 2011, 20:45

В частности с флагами глючат ВСЕ Image Effects (проверял специально). Необычно то, что с одной стороны флаги-вымпелы рисуются отлично.
Аватара пользователя
Ursus
UNец
 
Сообщения: 12
Зарегистрирован: 29 авг 2010, 18:29
Откуда: Минск, Беларусь
  • ICQ

Re: Шейдера+Image Effects

Сообщение alexz 23 мар 2011, 21:05

Включены Sun Shafts и Bloom And Flares:
Изображение

Всё в порядке.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Шейдера+Image Effects

Сообщение Ursus 23 мар 2011, 22:37

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

Re: Шейдера+Image Effects

Сообщение alexz 23 мар 2011, 23:30

Вторая сторона тоже нормальная.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37


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

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

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