用THREEJS / GLSL照亮粒子系统

时间:2017-08-21 01:01:00

标签: three.js glsl particle-system particles

我用threejs制作了一个带缓冲测量的粒子系统。我希望粒子能够接收光线。 难道这是不可能的(不可能吗?),因为几何体实际上没有面对光?

我主要在我创建的着色器中使用它。我刚刚用threejs创建了几何体。

粒子不在世界空间吗?它们只在相机空间吗?

什么是用于照明粒子的简单GLSL片段着色器方程?

1 个答案:

答案 0 :(得分:3)

这取决于您使用的粒子材料类型。如果您正在使用shaderMaterial并编写自己的碎片整理器,那么您必须在着色器代码中自己实现照明。例如,要使靠近光源的粒子变亮,只需将每个粒子与光线位置之间的距离变亮即可:

vec3 lightPosition = vec3(1.0, 2.0, 3.0);
float lightStrength = 0.1;

float distanceToLightSource = distance(particlePosition, lightPosition);

vec4 lighterColor = particleColor * distanceToLightSource * lightStrength;