使用自定义着色器使粒子“闪烁”

时间:2012-12-29 17:28:16

标签: glsl three.js

我正在做一个夜空,我希望我的粒子系统中的星星闪烁。

我听说我可以使用噪音纹理随机,但我不知道从那里去哪里。而且我不确定如何使闪烁顺利发生,即。逐渐变亮,然后变暗。

现在我只给每个顶点一个随机rand属性,然后每200ms左右改变一个统一twinkleRand。如果randoms匹配,则该点变大:

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

这有点奇怪但不太令人信服。

1 个答案:

答案 0 :(得分:2)

而不是改变磅值,改变颜色 - 你将获得更自然,更少脉冲的外观。并给每颗恒星一个独特的持久值,使它们闪烁,而不是频闪。

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