fix particles lighting

This commit is contained in:
MihailRis 2024-12-23 16:26:45 +03:00
parent c6de7f62fe
commit 6be640458d

View File

@ -82,15 +82,34 @@ void ParticlesRenderer::renderParticles(const Camera& camera, float delta) {
} }
update_particle(particle, delta, chunks); update_particle(particle, delta, chunks);
float scale = 1.0f + ((particle.random ^ 2628172) % 1000) *
0.001f * preset.sizeSpread;
glm::vec4 light(1, 1, 1, 0); glm::vec4 light(1, 1, 1, 0);
if (preset.lighting) { if (preset.lighting) {
light = MainBatch::sampleLight( light = MainBatch::sampleLight(
particle.position, chunks, backlight particle.position,
chunks,
backlight
); );
for (int x = -1; x <= 1; x++) {
for (int y = -1; y <= 1; y++) {
for (int z = -1; z <= 1; z++) {
light = glm::max(
light,
MainBatch::sampleLight(
particle.position - preset.size * scale *
glm::vec3(x, y, z),
chunks,
backlight
)
);
}
}
}
light *= 0.9f + (particle.random % 100) * 0.001f; light *= 0.9f + (particle.random % 100) * 0.001f;
} }
float scale = 1.0f + ((particle.random ^ 2628172) % 1000) *
0.001f * preset.sizeSpread;
glm::vec3 localRight = right; glm::vec3 localRight = right;
glm::vec3 localUp = preset.globalUpVector ? glm::vec3(0, 1, 0) : up; glm::vec3 localUp = preset.globalUpVector ? glm::vec3(0, 1, 0) : up;