我用threejs制作了一个带缓冲测量的粒子系统。我希望粒子能够接收光线。 难道这是不可能的(不可能吗?),因为几何体实际上没有面对光?
我主要在我创建的着色器中使用它。我刚刚用threejs创建了几何体。
粒子不在世界空间吗?它们只在相机空间吗?
什么是用于照明粒子的简单GLSL片段着色器方程?
答案 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;