2012-12-29 28 views
1

我正在創造一個夜空,我希望我的粒子系統中的星星能夠閃爍。使用自定義着色器使粒子「閃爍」

我聽說我可以用隨機性的噪音紋理,但我不知道該從哪裏去。而且我不確定如何讓閃爍順利發生,即。逐漸變亮,然後變暗。

現在我只給每個頂點隨機rand屬性,然後改變每200ms左右均勻twinkleRand。如果隨機匹配,點變大:

if (rand == twinkleRand) { 
    gl_PointSize = size * abs(sin(js_time) + rand/100.); 
} 
else { 
    gl_PointSize = size; 
} 

這是有點但不是很有說服力的效果。

+1

+1有一次我得到新的選票。我已經喜歡這個問題了,但是'這太有點兒了'真的讓我着迷了=) – Windle

+0

@ty你能給我們添加一個小的jsfiddle例子嗎? – Gero3

回答

2

而不是改變點的大小,改變顏色 - 你會得到一個更自然,脈衝更少的外觀。並給每個明星一個獨特的持久價值,讓他們閃爍,而不是閃光。

newColor = starColor * (1.0 - (sin(js_time*starSpeed)+1.0)*starVariance*0.5)