Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- s_rng rng = make_rng(0);
- s_rng move_rng = make_rng(game->render_time * 0.25f);
- // s_list<s_v2, 128> arr;
- constexpr int c_count = 10000;
- static b8 foo = false;
- static s_list<s_v2, c_count> arr;
- if(!foo) {
- foo = true;
- arr.count = 0;
- for(int i = 0; i < c_count; i += 1) {
- arr.add(wxy(randf32(&rng), randf32(&rng)));
- }
- }
- draw_rect(wxy(0.5f), c_world_size, make_rrr(1.0f), 0);
- foreach_ptr(rect_i, rect, arr) {
- // s_v4 color = rand_color_normalized(&rng);
- s_v4 color = make_rgb(0.1f,0,0);
- color.g = range_lerp(rect->x, 0, c_world_size.x, 0, 1);
- color.b = range_lerp(rect->y, 0, c_world_size.y, 0, 1);
- // draw_rect(rect, v2(64), color, 0);
- draw_light(*rect, 8, color, 0.1f, 1);
- s_v2 dir = v2_dir_from_to(g_mouse, *rect);
- float distance = v2_distance(g_mouse, *rect);
- s_v2 push = dir * smoothstep(200, 0, distance) * 40;
- rect->x += cosf(game->render_time + rect_i);
- rect->y += sinf(game->render_time + rect_i * 123.4f);
- *rect += push;
- *rect = prevent_offscreen(*rect, v2(8));
- }
- {
- s_render_flush_data data = make_render_flush_data(zero, zero);
- data.projection = ortho;
- data.blend_mode = e_blend_mode_normal;
- data.depth_mode = e_depth_mode_no_read_no_write;
- render_flush(data, true, 0);
- }
- {
- clear_framebuffer_color(game->light_fbo.id, make_rrr(0));
- s_render_flush_data data = make_render_flush_data(zero, zero);
- data.projection = ortho;
- data.blend_mode = e_blend_mode_additive;
- data.depth_mode = e_depth_mode_no_read_no_write;
- data.fbo = game->light_fbo;
- render_flush(data, true, 1);
- }
- {
- draw_texture_screen(wxy(0.5f), c_world_size, make_rrr(1), e_texture_light, e_shader_flat, v2(0, 1), v2(1, 0), zero, 0);
- s_render_flush_data data = make_render_flush_data(zero, zero);
- data.projection = ortho;
- data.blend_mode = e_blend_mode_multiply;
- data.depth_mode = e_depth_mode_no_read_no_write;
- render_flush(data, true, 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment