diff options
author | pommicket <pommicket@gmail.com> | 2021-09-29 11:54:07 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2021-09-29 11:54:07 -0400 |
commit | dbbe3bcdb841e51fa06effd1aab07bcb24f422eb (patch) | |
tree | 2fcf73c9680ec62c8a143b5f43a0281bc6172a22 | |
parent | 0b9cd314267fb3f654959ed4a33e604b4bfb4fa3 (diff) |
adding more grains
-rw-r--r-- | main.c | 20 | ||||
-rw-r--r-- | vlib.h | 4 |
2 files changed, 17 insertions, 7 deletions
@@ -4,7 +4,7 @@ static const float PLAYER_HEIGHT = 1.5f; -static GLProgram *program_unlit, *program_main, *program_grain; +static GLProgram *program_grain; static mat4 g_camera; static bool g_wireframe; @@ -38,8 +38,6 @@ int main(int argc, char **argv) { Player player_data = {0}, *player = &player_data; World world_data = {0}, *world = &world_data; - program_unlit = gl_program_new("unlitv.glsl", "unlitf.glsl"); - program_main = gl_program_new("mainv.glsl", "mainf.glsl"); program_grain = gl_program_new("grainv.glsl", "grainf.glsl"); typedef struct { vec3 pos; @@ -66,8 +64,9 @@ int main(int argc, char **argv) { window_set_relative_mouse(1); + float grain_gen_radius = 2; for (int i = 0; i < 100000; ++i) { - arr_add(world->grains, addc3(scale3(rand_vec3(), 4),-2)); + arr_add(world->grains, scale3(rand_unit_vec3(), grain_gen_radius * randf())); } const uint32_t tex_width = 1024; uint32_t tex_chunk_size = tex_width * 4; // height must be a multiple of 4 @@ -126,13 +125,24 @@ int main(int argc, char **argv) { if (!g_wireframe) gl.Enable(GL_DEPTH_TEST); + { + uint n_new_grains = 10000; + uint32_t ngrains = arr_len(world->grains); + vec3 *p, *end; + memmove(world->grains, world->grains + n_new_grains, (ngrains - n_new_grains) * sizeof *world->grains); + end = world->grains + ngrains; + for (p = end - n_new_grains; p < end; ++p) { + *p = scale3(rand_unit_vec3(), grain_gen_radius * randf()); + } + } + { // fixed time step (for consistency) float t = dt + leftover_time; while (t >= timestep) { arr_foreachp(world->grains, vec3, g) { float x = g->x, y = g->y, z = g->z; (void)x; (void)y; (void)z; - vec3 wind = Vec3(-z, y, x); + vec3 wind = Vec3(-z, y*100, x); *g = add3(*g, scale3(wind, timestep)); } t -= timestep; @@ -10778,7 +10778,7 @@ V_DECL vec2 rand_unit_vec2(void) { V_DECL vec3 rand_unit_vec3(void) { vec3 v; do - v = rand_vec3(); + v = addc3(scale3(rand_vec3(),2),-1); while (sqlength3(v) > 1); return normalize3(v); } @@ -10786,7 +10786,7 @@ V_DECL vec3 rand_unit_vec3(void) { V_DECL vec4 rand_unit_vec4(void) { vec4 v; do - v = rand_vec4(); + v = addc4(scale4(rand_vec4(),2),-1); while (sqlength4(v) > 1); return normalize4(v); } |