fine tuned explosion parameters.

This commit is contained in:
Andreas Ortmann 2016-09-30 22:25:37 +02:00
parent c950d6a54d
commit 03998dc74a
2 changed files with 19 additions and 12 deletions

View file

@ -17,9 +17,13 @@ varying float explCenterDist;
// TODO: rotate to face the user! // TODO: rotate to face the user!
void main() void main()
{ {
// add a bit variation to the decay compution by adding part of the initial
// position to the age
float ageMod = age + mod(20.0*in_position.z + 10.0*in_position.x + in_position.y, 0.5);
//decay = min(1.0, age+5.0*length(velocity)) / halfAge; //decay = min(1.0, age+5.0*length(velocity)) / halfAge;
//decay = max(decay*decay, sqrt(decay)); //decay = max(decay*decay, sqrt(decay));
decay = age / halfAge; decay = ageMod / halfAge;
// faster particles are smaller // faster particles are smaller
float speedScale = (1.0 - 0.8*length(in_velocity)/maxVelocity); float speedScale = (1.0 - 0.8*length(in_velocity)/maxVelocity);

View file

@ -51,7 +51,9 @@ namespace endofthejedi {
// TODO: add dust particles // TODO: add dust particles
// TODO: add little rocks flying around // TODO: add little rocks flying around
glClearColor(0.0, 0.0, 0.0, 1.0); //glClearColor(0.0, 0.0, 0.0, 1.0);
float s = 0.1;
glClearColor(s, s, s, 1.0);
m_shader.bind(); m_shader.bind();
@ -70,7 +72,7 @@ namespace endofthejedi {
renderParticles(); renderParticles();
renderTraces(); //renderTraces();
//glColor3f(1.0, 0.0, 0.0); //glColor3f(1.0, 0.0, 0.0);
//glBegin(GL_QUADS); //glBegin(GL_QUADS);
@ -99,9 +101,8 @@ namespace endofthejedi {
// TODO: use this as shader input too and make the area 2x around this // TODO: use this as shader input too and make the area 2x around this
// so that it stays hot/yellow for 2/3 of the time // so that it stays hot/yellow for 2/3 of the time
float explSize = 0.01f; float explCoreSize = 0.02f;
float maxVelocity = 0.4f;
float maxVelocity = 0.2f;
ParticleBatch *batch = new ParticleBatch(id, n, particleRadius, duration); ParticleBatch *batch = new ParticleBatch(id, n, particleRadius, duration);
batch->setCenter(glm::vec3(pos, 0.0)); batch->setCenter(glm::vec3(pos, 0.0));
@ -121,7 +122,7 @@ namespace endofthejedi {
glm::vec3 v = glm::ballRand(maxVelocity); glm::vec3 v = glm::ballRand(maxVelocity);
v *= util::randf_0_1() * util::randf_0_1() * util::randf_0_1(); v *= util::randf_0_1() * util::randf_0_1() * util::randf_0_1();
batch->setParticle(i, glm::vec3(pos, 0.0) + glm::ballRand(explSize), v); batch->setParticle(i, glm::vec3(pos, 0.0) + glm::ballRand(explCoreSize), v);
} }
batch->upload(); batch->upload();
@ -141,13 +142,13 @@ namespace endofthejedi {
} }
if (!gotIt) { if (!gotIt) {
addExplosionEffect(expl->id, expl->position, 1000, 2.0); addExplosionEffect(expl->id, expl->position, 500, 0.5);
} }
} }
if (m_particles.size() == 0) { //if (m_particles.size() == 0) {
addExplosionEffect(0, glm::vec2(0.0, 0.0), 1000, 2.0); // addExplosionEffect(0, glm::vec2(0.0, 0.0), 1000, 2.0);
} //}
std::vector<ParticleBatch*> rm; std::vector<ParticleBatch*> rm;
@ -246,7 +247,9 @@ namespace endofthejedi {
glm::mat4 RendererPolygon3d::computeModelMatrix(const game::Ship *ship) glm::mat4 RendererPolygon3d::computeModelMatrix(const game::Ship *ship)
{ {
// TODO: rotate them before shooting, that looks better // TODO: rotate them before shooting, that looks better
glm::mat4 mat = computeModelMatrix(ship->position, m_state->shipRadius()); //glm::mat4 mat = computeModelMatrix(ship->position, m_state->shipRadius());
glm::mat4 mat = computeModelMatrix(ship->position, 5.0*m_state->shipRadius());
// XXX model is flipped // XXX model is flipped
//glm::mat4 mat = computeModelMatrix(ship->position, 0.3); //glm::mat4 mat = computeModelMatrix(ship->position, 0.3);
mat = glm::rotate(mat, (float) M_PI, glm::vec3(0.0f, 1.0f, 0.0f)); mat = glm::rotate(mat, (float) M_PI, glm::vec3(0.0f, 1.0f, 0.0f));