Box Filter

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

Box Filter

Сообщение gnoblin 22 окт 2010, 06:34

Шейдер, который размывает текстуру по алгоритму Box Filter.
Размер текстуры (1024х1024) захардкодил в коде шейдера, и надеюсь нигде не накосячил :).

Синтаксис:
Используется glsl
Shader "ImageProc BoxFilter" {
 Properties {
      _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert

      struct Input {
          float2 uv_MainTex;
      };
     
      sampler2D _MainTex;
      void surf (Input IN, inout SurfaceOutput o) {
          float4 col = float4(0,0,0,0);
          //сам фильтр
          float4 samples[4] = {
                        -1.0, 0.0, 0, 0.25,
                        1.0, 0.0, 0, 0.25,
                        0.0, 1.0, 0, 0.25,
                        0.0, -1.0, 0, 0.25
                  };
         
          // Sample and output the box averaged colors
          for(int i=0;i<4;i++)
          {
                        col += samples[i].w*tex2D(_MainTex, IN.uv_MainTex + float2(samples[i].x/1024, samples[i].y/1024));
          }
                 
          o.Albedo = col;        
      }
      ENDCG
    }
    Fallback "Diffuse"
  }
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Box Filter

Сообщение gnoblin 22 окт 2010, 19:36

Ура, теперь знаю как не задавать размер текстуры в коде (используя _TexelSize).

uniform sampler2D _BumpMap;
uniform float4 _BumpMap_TexelSize;

http://forum.unity3d.com/threads/57275- ... Resolution

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

Re: Box Filter

Сообщение Neodrop 22 окт 2010, 22:30

Сдаётся мне, что это намёк на то, что текстура в степени двойки. (popcorn)
Но, может я и не прав.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


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

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

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