2013-07-24 16 views
5

Şu anda Cocos2D ile oynuyor. Bir bildirim kalıbı görüntülendiğinde tüm sahneyi bulanıklaştırabilirim.Cocos2d gölgelendiricilerle bulanıklık

Bunu gölgelendiricilerle yapabileceğimi düşündüm (oldukça OpenGL noob'um). Bulduğum şeyden, gölgelendirici için bir algoritma içeren "fsh" dosyaları var. "gausian blurring" için bir tane buldum ancak böyle bir gölgelendiriciyi bir CCScene of Cocos2D'ye nasıl ekleyebilirim?

Bunu anlayamıyorum.

cevap

5

Sadece gölgelendiricilerle biraz oynamaya başladım. İnternette okumak ve denemek için bir sürü malzeme var. Seni nasıl yapacağınızı/anladığınızı anlamak için faydalı bulduğum bazı URL'lerin yönünü göstereceğim. Büyük shader etkisi görünümlü:

Basit öğretici gölgeleme ile bir gri tonlama etkisi (Cocos2D) deneyleri blog yayınını Kodlama

http://www.shaderdev.com/2013/09/16/full-scene-shader-effects-how-to-create-a-grayscale-pause-screen-using-ccrendertexture/

elde etmek. Bu yolda emin adımlarla olanlar ile

http://coding-experiments.blogspot.com/2010/06/frosted-glass.html

... Ben aşağıda Cocos2d için paylaşan gölgelendirici olduğunu. Bunları yararlı bulursanız, aşağıdaki gölgelendiricileri de kullanabilirsiniz. Bunlar, ikinci URL'den alınmıştır.

tepe tarayıcı

attribute vec4 a_position; 
attirbute vec4 a_color; 
attribute vec2 a_texCoord; 

uniform mat4 u_MVPMatrix; 
varying lowp vec2 v_fragmentColor; 
varying lowp vec2 v_texCoord; 

void main() 
{ 
    gl_Position = CC_MVPMatrix * a_position; 
    v_fragmentColor = a_color; 
    v_texCoord = a_texCoord; 
} 

parça gölgelendirici

varying lowp vec4 v_fragmentColor; 
varying lowp vec2 v_texCoord; 
uniform sampler2D u_texture; 

float rand(vec2 co) 
{ 
    return fract(sin(dot(co.xy ,vec2(92.,80.))) + 
       cos(dot(co.xy ,vec2(41.,62.))) * 5.1); 
} 

void main() 
{ 
    vec2 rnd = vec2(0.0); 
    rnd = vec2(rand(v_texCoord),rand(v_texCoord)); 
    glFragColor = texture2D(u_texture, v_texCoord+rnd*0.05); 
}