|
Blender V5.0
|
#include <eevee_sampling.hh>
Public Member Functions | |
| Sampling (Instance &inst, ClampData &clamp_data) | |
| ~Sampling () | |
| template<typename PassType> | |
| void | bind_resources (PassType &pass) |
| float | rng_get (eSamplingDimension dimension) const |
| float2 | rng_2d_get (eSamplingDimension starting_dimension) const |
| float3 | rng_3d_get (eSamplingDimension starting_dimension) const |
| bool | finished () const |
| bool | finished_viewport () const |
| bool | interactive_mode () const |
| uint64_t | sample_count () const |
| uint64_t | sample_index () const |
| bool | use_clamp_direct () const |
| bool | use_clamp_indirect () const |
| bool | do_render_sync () const |
| uint64_t | dof_ring_count_get () const |
| uint64_t | dof_sample_count_get () const |
Sampling | |
| void | init (const Scene *scene) |
| void | init (const Object &probe_object) |
| void | end_sync () |
| void | step () |
| void | reset () |
| bool | is_reset () const |
Static Public Member Functions | |
Cumulative Distribution Function (CDF) | |
| static void | cdf_from_curvemapping (const CurveMapping &curve, Vector< float > &cdf) |
| static void | cdf_invert (Vector< float > &cdf, Vector< float > &inverted_cdf) |
Sampling patterns | |
| void | dof_disk_sample_get (float *r_radius, float *r_theta) const |
| static float3 | sample_ball (const float3 &rand) |
| static float2 | sample_disk (const float2 &rand) |
| static float3 | sample_hemisphere (const float2 &rand) |
| static float3 | sample_sphere (const float2 &rand) |
| static float2 | sample_spiral (const float2 &rand) |
Definition at line 25 of file eevee_sampling.hh.
Definition at line 72 of file eevee_sampling.hh.
|
inline |
Definition at line 73 of file eevee_sampling.hh.
Definition at line 87 of file eevee_sampling.hh.
References SAMPLING_BUF_SLOT.
|
static |
Creates a discrete cumulative distribution function table from a given curvemapping. Output cdf vector is expected to already be sized according to the wanted resolution.
Definition at line 351 of file eevee_sampling.cc.
References BKE_curvemapping_evaluateF(), BLI_assert, float, blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::last(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), and x.
Referenced by blender::eevee::MotionBlurModule::init().
|
static |
Inverts a cumulative distribution function. Output vector is expected to already be sized according to the wanted resolution.
Definition at line 368 of file eevee_sampling.cc.
References BLI_assert, clamp_f(), blender::IndexRange::drop_front(), blender::Vector< T, InlineBufferCapacity, Allocator >::first(), float, i, blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::last(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), and x.
Referenced by blender::eevee::MotionBlurModule::init().
|
inline |
Definition at line 158 of file eevee_sampling.hh.
Special RNG for depth of field. Returns radius and theta angle offset to apply to the web sampling pattern.
Definition at line 310 of file eevee_sampling.cc.
|
inline |
Returns sample count inside the jittered depth of field web pattern.
Definition at line 210 of file eevee_sampling.hh.
|
inline |
Returns sample count inside the jittered depth of field web pattern.
Definition at line 218 of file eevee_sampling.hh.
| void blender::eevee::Sampling::end_sync | ( | ) |
Definition at line 99 of file eevee_sampling.cc.
References SCE_EEVEE_TAA_REPROJECTION.
|
inline |
Definition at line 117 of file eevee_sampling.hh.
|
inline |
Definition at line 123 of file eevee_sampling.hh.
| void blender::eevee::Sampling::init | ( | const Object & | probe_object | ) |
Definition at line 90 of file eevee_sampling.cc.
References BLI_assert, DRW_object_get_data_for_drawing(), and max_ii().
| void blender::eevee::Sampling::init | ( | const Scene * | scene | ) |
Definition at line 28 of file eevee_sampling.cc.
References BKE_render_preview_pixel_size(), BLI_assert, SceneEEVEE::clamp_surface_direct, SceneEEVEE::clamp_surface_indirect, SceneEEVEE::clamp_volume_direct, SceneEEVEE::clamp_volume_indirect, divide_ceil_u(), Scene::eevee, SceneEEVEE::flag, blender::math::max(), max_ii(), RenderData::mode, SceneEEVEE::motion_blur_steps, Scene::r, R_MBLUR, blender::eevee::sampling_web_ring_count_get(), blender::eevee::sampling_web_sample_count_get(), SCE_EEVEE_DOF_JITTER, square_i(), SceneEEVEE::taa_render_samples, and SceneEEVEE::taa_samples.
|
inline |
Definition at line 129 of file eevee_sampling.hh.
Referenced by step().
| bool blender::eevee::Sampling::is_reset | ( | ) | const |
Definition at line 251 of file eevee_sampling.cc.
References BLI_assert.
| void blender::eevee::Sampling::reset | ( | ) |
Definition at line 245 of file eevee_sampling.cc.
References BLI_assert.
|
inline |
Definition at line 103 of file eevee_sampling.hh.
|
inline |
Definition at line 111 of file eevee_sampling.hh.
|
inline |
Definition at line 95 of file eevee_sampling.hh.
Special ball distribution: Point are distributed in a way that when they are orthogonally projected into any plane, the resulting distribution is (close to) a uniform disc distribution. rand is 3 random float in the [0..1] range. Returns point in a ball of radius 1 and centered on the origin.
Definition at line 263 of file eevee_sampling.cc.
References cosf, fmaxf, M_PI, sample, sinf, sqrtf, and square_f().
|
inline |
Definition at line 135 of file eevee_sampling.hh.
Referenced by blender::eevee::Film::init().
Uniform disc distribution. rand is 2 random float in the [0..1] range. Returns point in a disk of radius 1 and centered on the origin.
Definition at line 278 of file eevee_sampling.cc.
References cosf, M_PI, sinf, and sqrtf.
Referenced by blender::eevee::Film::pixel_jitter_get().
Uniform hemisphere distribution. rand is 2 random float in the [0..1] range. Returns point on a Z positive hemisphere of radius 1 and centered on the origin.
Definition at line 284 of file eevee_sampling.cc.
References cos_theta(), cosf, M_PI, safe_sqrtf(), sin_theta(), sinf, and square_f().
|
inline |
Definition at line 141 of file eevee_sampling.hh.
Uniform sphere distribution. rand is 2 random float in the [0..1] range. Returns point on the sphere of radius 1 and centered on the origin.
Definition at line 292 of file eevee_sampling.cc.
References cos_theta(), cosf, M_PI, safe_sqrtf(), sin_theta(), sinf, and square_f().
Referenced by blender::eevee::IrradianceBake::raylists_build().
| void blender::eevee::Sampling::step | ( | ) |
Definition at line 130 of file eevee_sampling.cc.
References BLI_assert, BLI_halton_2d(), BLI_halton_3d(), fractf, i, interactive_mode(), blender::eevee::SAMPLING_AO_U, blender::eevee::SAMPLING_AO_V, blender::eevee::SAMPLING_AO_W, blender::eevee::SAMPLING_CLOSURE, blender::eevee::SAMPLING_CURVES_U, SAMPLING_DIMENSION_COUNT, blender::eevee::SAMPLING_FILTER_U, blender::eevee::SAMPLING_FILTER_V, blender::eevee::SAMPLING_LENS_U, blender::eevee::SAMPLING_LENS_V, blender::eevee::SAMPLING_LIGHTPROBE, blender::eevee::SAMPLING_RAYTRACE_U, blender::eevee::SAMPLING_RAYTRACE_V, blender::eevee::SAMPLING_RAYTRACE_W, blender::eevee::SAMPLING_RAYTRACE_X, blender::eevee::SAMPLING_SHADOW_I, blender::eevee::SAMPLING_SHADOW_J, blender::eevee::SAMPLING_SHADOW_K, blender::eevee::SAMPLING_SHADOW_U, blender::eevee::SAMPLING_SHADOW_V, blender::eevee::SAMPLING_SHADOW_W, blender::eevee::SAMPLING_SHADOW_X, blender::eevee::SAMPLING_SHADOW_Y, blender::eevee::SAMPLING_SSS_U, blender::eevee::SAMPLING_SSS_V, blender::eevee::SAMPLING_TIME, blender::eevee::SAMPLING_TRANSPARENCY, blender::eevee::SAMPLING_UNUSED_0, blender::eevee::SAMPLING_UNUSED_1, blender::eevee::SAMPLING_UNUSED_2, blender::eevee::SAMPLING_VOLUME_U, blender::eevee::SAMPLING_VOLUME_V, blender::eevee::SAMPLING_VOLUME_W, square_i(), and UNUSED_VARS_NDEBUG.
|
inline |
Definition at line 146 of file eevee_sampling.hh.
Referenced by blender::eevee::DeferredLayer::do_split_direct_indirect_radiance().
|
inline |
Definition at line 151 of file eevee_sampling.hh.
Referenced by blender::eevee::DeferredLayer::do_split_direct_indirect_radiance().