在 THREEJS/GLSL 中照亮粒子系统

Lighting a Particle System in THREEJS/GLSL

我用threejs做了一个带buffergeometry的粒子系统。我想让粒子接收光。 这很难(不可能吗?)因为几何体实际上没有面可以发光?

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

粒子不在世界space中吗?他们只在相机 space 中吗?

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

这取决于您使用哪种 material 粒子。如果您正在使用 shaderMaterial 并编写自己的片段着色器,那么您必须在着色器代码中自己实现照明。例如,要使靠近光源的粒子变亮,只需按每个粒子与光源位置之间的距离使它们的颜色变亮:

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

float distanceToLightSource = distance(particlePosition, lightPosition);

vec4 lighterColor = particleColor * distanceToLightSource * lightStrength;