Страница 1 из 1

Noise в шейдерах

СообщениеДобавлено: 06 ноя 2010, 03:26
gnoblin
Пробовал использовать шум в шейдере, noise(x) у меня почему-то не заработал :(.

Подсмотрел на оф.форуме алгоритм для генерации шума,
поэтому вот небольшой сурфейс шейдер на тему:
noise1.jpg


Создает анимированный во времени шумок.
Синтаксис:
Используется glsl
 Shader "Noise1" {
    Properties {
      _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert
          #include "UnityCG.cginc"

      struct Input {
          float2 uv_MainTex;
      };
      sampler2D _MainTex;

      float Rand( float2 inpos )
          {
                float2 input =  inpos;
                const float2 randvec = float2(15.12345, 91.98765);
                float    randangle = dot( input ,  randvec );
                float rand = sin( randangle ) * 115309.76543;
                return 1.0 - 2.0 * frac(rand);
      }
 
      void surf (Input IN, inout SurfaceOutput o) {
     
      //tex2D (_MainTex, IN.uv_MainTex).rgb;
      float g =  Rand( IN.uv_MainTex.xy + _Time.y );
          o.Albedo = half3(g,g,g);    
         
      }
      ENDCG
    }
    Fallback "Diffuse"
  }

Re: Noise в шейдерах

СообщениеДобавлено: 13 ноя 2010, 01:32
gnoblin
подборка текстур шума
http://www.neilblevins.com/cg_education ... noise.html

Re: Noise в шейдерах

СообщениеДобавлено: 13 ноя 2010, 04:09
Phoenics
gnoblin писал(а):Пробовал использовать шум в шейдере, noise(x) у меня почему-то не заработал :(.


Насколько я знаю она мало где работает, если работает где-то, лучше пользвоатся текстурами для шума

Re: Noise в шейдерах

СообщениеДобавлено: 25 ноя 2010, 18:25
Guyver
наткнулся в инете на статью ... где описывается шум перлина, сравнил функции ранд, оказалось тут упрощённая формула (адрес статьи если кому интересно http://www.m3xbox.com/GPU_blog/?tag=fractal)

прикол в том, что сама функция рандома уже около потолка по арифметическим инструкциям... пытался замутить генерацию перлина по seed, но увы и ах напоролся на превышение кол-ва инструкций арифметических буквально на smooth_random =((( а жаль .... идея рандомной генерации поверхностей была так заманчива.

Re: Noise в шейдерах

СообщениеДобавлено: 25 ноя 2010, 22:13
sp00n
эммм, а разве нельзя рандом считать на цпу, а в шейдер передавать уже посчитанное значение?