Blender
V3.3
|
Random number functions. More...
Go to the source code of this file.
Typedefs | |
typedef struct RNG | RNG |
typedef struct RNG_THREAD_ARRAY | RNG_THREAD_ARRAY |
Random number functions.
Definition in file BLI_rand.h.
Definition at line 1 of file BLI_rand.h.
typedef struct RNG_THREAD_ARRAY RNG_THREAD_ARRAY |
Definition at line 1 of file BLI_rand.h.
Fill an array with random numbers.
Definition at line 169 of file rand.cc.
References BLI_rng_get_float(), BLI_rng_srandom(), count, and seed.
void BLI_array_randomize | ( | void * | data, |
unsigned int | elem_size, | ||
unsigned int | elem_num, | ||
unsigned int | seed | ||
) |
Shuffle an array randomly using the given seed contents. This routine does not use nor modify the state of the BLI random number generator.
Definition at line 188 of file rand.cc.
References BLI_rng_seed(), BLI_rng_shuffle_array(), data, and seed.
Referenced by edbm_select_random_exec(), gpencil_select_random_exec(), lattice_select_random_exec(), modifyMesh(), object_select_random_exec(), psys_thread_context_init_distribute(), random_heap_helper(), random_heap_reinsert_helper(), random_heapsimple_helper(), and testbuffer_list_data_randomize().
void BLI_bitmap_randomize | ( | unsigned int * | bitmap, |
unsigned int | bits_num, | ||
unsigned int | seed | ||
) |
Definition at line 199 of file rand.cc.
References BLI_rng_seed(), BLI_rng_shuffle_bitmap(), and seed.
Referenced by curve_select_random_exec().
Return the _n_th number of the given low-discrepancy sequence.
Definition at line 287 of file rand.cc.
References double(), halton_ex(), offset, and r.
Referenced by EEVEE_materials_init(), workbench_volume_modifier_cache_populate(), and workbench_volume_object_cache_populate().
Definition at line 298 of file rand.cc.
References double(), halton_ex(), offset, and r.
Referenced by applyLength(), eevee_lookdev_apply_taa(), EEVEE_sample_ellipse(), EEVEE_sample_rectangle(), EEVEE_temporal_sampling_update_matrices(), and blender::eevee::Sampling::step().
Definition at line 311 of file rand.cc.
References double(), halton_ex(), offset, and r.
Referenced by deformStroke(), eevee_draw_scene(), EEVEE_random_rotation_m4(), EEVEE_render_draw(), EEVEE_sample_ball(), EEVEE_volumes_set_jitter(), and blender::eevee::Sampling::step().
Definition at line 353 of file rand.cc.
References r, and radical_inverse().
Referenced by create_disk_samples(), and hammersley_create().
Definition at line 358 of file rand.cc.
References double(), r, and radical_inverse().
float BLI_hash_frand | ( | unsigned int | seed | ) |
Return a pseudo-random (hash) float from an integer value
Definition at line 180 of file rand.cc.
References BLI_rng_get_float(), BLI_rng_srandom(), and seed.
Referenced by modifyMesh().
Definition at line 53 of file rand.cc.
Referenced by BKE_partdeflect_copy().
Definition at line 58 of file rand.cc.
Referenced by BKE_brush_system_exit(), BKE_mesh_remap_calc_polys_from_mesh(), BKE_partdeflect_free(), BKE_particle_init_rng(), BLI_jitter_init(), bmo_subdivide_edges_exec(), brush_add(), brush_add_count_iter_free(), cloth_build_springs(), createFacepa(), blender::compositor::ScreenLensDistortionOperation::deinit_execution(), distribute_simple_children(), do_map(), dynamics_step(), find_nearest_points_test(), GEO_uv_parametrizer_stretch_end(), gpencil_primitive_exit(), gpencil_sculpt_brush_exit(), gpencil_select_random_exec(), gpencil_session_free(), gpencil_stroke_path_animation(), hammersley_create(), init_keys(), init_mv_jit(), int4_ghash_tests(), make_duplis_particle_system(), modifyMesh(), multi_small_ghash_tests(), Freestyle::Noise::Noise(), object_rand_transverts(), paint_stroke_free(), particles_fluid_step(), PE_free_random_generator(), pointcloud_random(), postTrans(), psys_tasks_free(), psys_thread_context_init_distribute(), randint_ghash_tests(), random_chunk_generate(), random_chunk_mutate_helper(), random_data_mutate_helper(), select_random_exec(), select_random_metaelems_exec(), sort_bmelem_flag(), and utf8_as_char32_test_at_buffer_size().
Definition at line 88 of file rand.cc.
References blender::RandomNumberGenerator::get_double(), and RNG::rng.
Referenced by BLI_jitter_init(), hammersley_create(), and particles_fluid_step().
Definition at line 93 of file rand.cc.
References blender::RandomNumberGenerator::get_float(), and RNG::rng.
Referenced by basic_force_cb(), BKE_brush_jitter_pos(), BKE_brush_randomize_texture_coords(), BKE_particle_init_rng(), BLI_array_frand(), BLI_hash_frand(), BLI_thread_frand(), bmo_subdivide_edges_exec(), boid_body(), brush_add_count_iter(), brush_cut(), calculatePropRatio(), collision_response(), createFacepa(), distribute_children_exec(), distribute_from_faces_exec(), distribute_from_volume_exec(), distribute_simple_children(), find_internal_spring_target_vertex(), gpencil_apply_randomness(), gpencil_brush_randomize_apply(), gpencil_find_end_of_stroke_idx(), gpencil_primitive_update_strokes(), gpencil_stroke_addpoint(), init_mv_jit(), object_rand_transverts(), p_chart_stretch_minimize(), paint_brush_update(), pointcloud_random(), psys_thread_context_init_distribute(), rng_v3_round(), rule_average_speed(), rule_avoid_collision(), rule_fight(), select_random_exec(), select_random_metaelems_exec(), sort_bmelem_flag(), weightvg_do_map(), and wind_func().
Referenced by object_rand_transverts().
Definition at line 78 of file rand.cc.
References blender::RandomNumberGenerator::get_int32(), and RNG::rng.
Referenced by BKE_particle_init_rng(), BLI_rng_thread_rand(), BLI_thread_rand(), make_duplis_particle_system(), multi_small_ghash_tests(), Freestyle::Noise::Noise(), and wind_func().
void void void BLI_rng_get_tri_sample_float_v2 | ( | struct RNG * | rng, |
const float | v1[2], | ||
const float | v2[2], | ||
const float | v3[2], | ||
float | r_pt[2] | ||
) |
Generate a random point inside given tri.
Definition at line 108 of file rand.cc.
References copy_v2_v2(), blender::RandomNumberGenerator::get_triangle_sample(), RNG::rng, v1, and v2.
Referenced by BKE_mesh_remap_calc_polys_from_mesh().
void BLI_rng_get_tri_sample_float_v3 | ( | RNG * | rng, |
const float | v1[3], | ||
const float | v2[3], | ||
const float | v3[3], | ||
float | r_pt[3] | ||
) |
Definition at line 114 of file rand.cc.
References copy_v3_v3(), blender::RandomNumberGenerator::get_triangle_sample_3d(), RNG::rng, v1, and v2.
unsigned int BLI_rng_get_uint | ( | struct RNG * | rng | ) |
Definition at line 83 of file rand.cc.
References blender::RandomNumberGenerator::get_uint32(), and RNG::rng.
Referenced by BLI_rng_shuffle_array(), BLI_rng_shuffle_bitmap(), BLI_thread_srandom(), gpencil_select_random_exec(), init_keys(), int4_ghash_tests(), multi_small_ghash_tests_one(), rand_range_i(), randint_ghash_tests(), and testbuffer_list_state_random_data().
struct RNG* BLI_rng_new | ( | unsigned int | seed | ) |
Definition at line 39 of file rand.cc.
References RNG::rng, seed, and blender::RandomNumberGenerator::seed().
Referenced by BKE_brush_system_init(), BKE_mesh_remap_calc_polys_from_mesh(), BLI_jitter_init(), calculatePropRatio(), find_nearest_points_test(), GEO_uv_parametrizer_stretch_begin(), gpencil_primitive_set_initdata(), gpencil_sculpt_brush_init(), gpencil_select_random_exec(), gpencil_session_initpaint(), gpencil_stroke_path_animation(), hammersley_create(), blender::compositor::ScreenLensDistortionOperation::init_execution(), init_keys(), init_mv_jit(), int4_ghash_tests(), multi_small_ghash_tests(), Freestyle::Noise::Noise(), object_rand_transverts(), paint_brush_update(), PE_create_random_generator(), pointcloud_random(), precalculate_effector(), psys_task_init_distribute(), psys_task_init_path(), randint_ghash_tests(), random_chunk_generate(), random_chunk_mutate_helper(), random_data_mutate_helper(), and utf8_as_char32_test_at_buffer_size().
struct RNG* BLI_rng_new_srandom | ( | unsigned int | seed | ) |
A version of BLI_rng_new that hashes the seed.
Definition at line 46 of file rand.cc.
References RNG::rng, seed, and blender::RandomNumberGenerator::seed_random().
Referenced by BKE_particle_init_rng(), bmo_subdivide_edges_exec(), brush_add(), brush_add_count_iter(), cloth_build_springs(), createFacepa(), distribute_simple_children(), do_map(), dynamics_step(), make_duplis_particle_system(), modifyMesh(), particles_fluid_step(), psys_thread_context_init_distribute(), select_random_exec(), select_random_metaelems_exec(), and sort_bmelem_flag().
Definition at line 63 of file rand.cc.
References RNG::rng, seed, and blender::RandomNumberGenerator::seed().
Referenced by BLI_array_randomize(), BLI_bitmap_randomize(), and BLI_thread_srandom().
void BLI_rng_shuffle_array | ( | struct RNG * | rng, |
void * | data, | ||
unsigned int | elem_size_i, | ||
unsigned int | elem_num | ||
) |
Referenced by random_chunk_mutate_helper().
Note that skipping is as slow as generating n numbers! Simulate getting n random values.
Definition at line 162 of file rand.cc.
References RNG::rng, and blender::RandomNumberGenerator::skip().
Referenced by distribute_children_exec(), distribute_from_faces_exec(), distribute_from_verts_exec(), distribute_from_volume_exec(), exec_distribute_child(), and exec_distribute_parent().
Use a hash table to create better seed.
Definition at line 68 of file rand.cc.
References RNG::rng, seed, and blender::RandomNumberGenerator::seed_random().
Referenced by BKE_brush_system_init(), BLI_array_frand(), BLI_hash_frand(), BLI_rng_threaded_new(), gpencil_stroke_path_animation_preprocess_gaps(), and precalculate_effector().
int BLI_rng_thread_rand | ( | RNG_THREAD_ARRAY * | rngarr, |
int | thread | ||
) |
Definition at line 256 of file rand.cc.
References BLI_rng_get_int(), and RNG_THREAD_ARRAY::rng_tab.
Referenced by texnoise().
void BLI_rng_threaded_free | ( | struct RNG_THREAD_ARRAY * | rngarr | ) |
RNG_THREAD_ARRAY* BLI_rng_threaded_new | ( | void | ) |
array versions for thread safe random generation
Definition at line 238 of file rand.cc.
References BLENDER_MAX_THREADS, BLI_rng_srandom(), MEM_mallocN, and RNG_THREAD_ARRAY::rng_tab.
Referenced by RE_texture_rng_init().
float BLI_thread_frand | ( | int | thread | ) |
Return a pseudo-random number N where 0.0f<=N<1.0f Allows up to BLENDER_MAX_THREADS threads to address
Definition at line 229 of file rand.cc.
References BLI_rng_get_float(), and rng_tab.
Referenced by ED_region_do_draw().
int BLI_thread_rand | ( | int | thread | ) |
Return a pseudo-random number N where 0<=N<(2^31) Allows up to BLENDER_MAX_THREADS threads to address
Definition at line 224 of file rand.cc.
References BLI_rng_get_int(), and rng_tab.
void BLI_thread_srandom | ( | int | thread, |
unsigned int | seed | ||
) |
Better seed for the random number generator, using noise.c hash[] Allows up to BLENDER_MAX_THREADS threads to address
Definition at line 211 of file rand.cc.
References BLENDER_MAX_THREADS, BLI_rng_get_uint(), BLI_rng_seed(), hash, rng_tab, and seed.