Merge pull request #373 from MihailRis/update-particles

Update particles
This commit is contained in:
MihailRis 2024-11-19 10:16:20 +03:00 committed by GitHub
commit cb27bd0fba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 8 additions and 1 deletions

View File

@ -17,6 +17,7 @@
| acceleration | Ускорение частиц. | {0, -16, 0} |
| explosion | Сила разлёта частиц при спавне. | {2, 2, 2} |
| size | Размер частиц. | {0.1, 0.1, 0.1} |
| size_spread | Максимальное отклонение времени размера частиц. | 0.2 |
| spawn_shape | Форма области спавна частиц. (ball/sphere/box) | ball |
| spawn_spread | Размер области спавна частиц. | {0, 0, 0} |
| random_sub_uv | Размер случайного подрегиона текстуры (1 - будет использована вся текстура). | 1.0 |

View File

@ -89,11 +89,13 @@ void ParticlesRenderer::renderParticles(const Camera& camera, float delta) {
);
light *= 0.9f + (particle.random % 100) * 0.001f;
}
float scale = 1.0f + ((particle.random ^ 2628172) % 1000) *
0.001f * preset.sizeSpread;
batch->quad(
particle.position,
right,
preset.globalUpVector ? glm::vec3(0, 1, 0) : up,
preset.size,
preset.size * scale,
light,
glm::vec3(1.0f),
particle.region

View File

@ -42,6 +42,7 @@ dv::value ParticlesPreset::serialize() const {
root["acceleration"] = dv::to_value(acceleration);
root["explosion"] = dv::to_value(explosion);
root["size"] = dv::to_value(size);
root["size_spread"] = sizeSpread;
root["spawn_spread"] = dv::to_value(size);
root["spawn_shape"] = to_string(spawnShape);
root["random_sub_uv"] = randomSubUV;
@ -67,6 +68,7 @@ void ParticlesPreset::deserialize(const dv::value& src) {
if (src.has("size")) {
dv::get_vec(src["size"], size);
}
src.at("size_spread").get(sizeSpread);
if (src.has("spawn_spread")) {
dv::get_vec(src["spawn_spread"], spawnSpread);
}

View File

@ -42,6 +42,8 @@ struct ParticlesPreset : public Serializable {
glm::vec3 explosion {2.0f};
/// @brief Particle size
glm::vec3 size {0.1f};
/// @brief Particles size spread
float sizeSpread = 0.2f;
/// @brief Spawn spread shape
ParticleSpawnShape spawnShape = BALL;
/// @brief Spawn spread