Blender V4.5
hash.h File Reference
#include "util/math.h"
#include "util/types.h"

Go to the source code of this file.

Macros

#define rot(x, k)
#define mix(a, b, c)
#define final(a, b, c)

Functions

CCL_NAMESPACE_BEGIN ccl_device_forceinline float uint_to_float_excl (const uint n)
ccl_device_forceinline float uint_to_float_incl (const uint n)
ccl_device_inline uint hash_uint (const uint kx)
ccl_device_inline uint hash_uint2 (const uint kx, const uint ky)
ccl_device_inline uint hash_uint3 (const uint kx, const uint ky, const uint kz)
ccl_device_inline uint hash_uint4 (const uint kx, const uint ky, const uint kz, const uint kw)
ccl_device_inline float hash_uint_to_float (const uint kx)
ccl_device_inline float hash_uint2_to_float (const uint kx, const uint ky)
ccl_device_inline float hash_uint3_to_float (const uint kx, const uint ky, const uint kz)
ccl_device_inline float hash_uint4_to_float (const uint kx, const uint ky, const uint kz, const uint kw)
ccl_device_inline float hash_float_to_float (const float k)
ccl_device_inline float hash_float2_to_float (const float2 k)
ccl_device_inline float hash_float3_to_float (const float3 k)
ccl_device_inline float hash_float4_to_float (const float4 k)
ccl_device_inline float2 hash_float2_to_float2 (const float2 k)
ccl_device_inline float3 hash_float3_to_float3 (const float3 k)
ccl_device_inline float4 hash_float4_to_float4 (const float4 k)
ccl_device_inline float3 hash_float_to_float3 (const float k)
ccl_device_inline float3 hash_float2_to_float3 (const float2 k)
ccl_device_inline float3 hash_float4_to_float3 (const float4 k)
ccl_device_inline float2 hash_float_to_float2 (const float k)
ccl_device_inline float2 hash_float3_to_float2 (const float3 k)
ccl_device_inline float2 hash_float4_to_float2 (const float4 k)
ccl_device_inline uint hash_hp_uint (uint i)
ccl_device_inline uint hash_hp_seeded_uint (const uint i, uint seed)
ccl_device_inline float hash_hp_float (const uint i)
ccl_device_inline float hash_hp_seeded_float (const uint i, const uint seed)
ccl_device_inline uint hash_wang_seeded_uint (uint i, const uint seed)
ccl_device_inline float hash_wang_seeded_float (const uint i, const uint seed)
ccl_device_inline uint hash_shuffle_uint (uint i, const uint length, const uint seed)
ccl_device_inline uint hash_iqnt2d (const uint x, const uint y)
static uint hash_string (const char *str)

Macro Definition Documentation

◆ final

#define final ( a,
b,
c )
Value:
{ \
c ^= b; \
c -= rot(b, 14); \
a ^= c; \
a -= rot(c, 11); \
b ^= a; \
b -= rot(a, 25); \
c ^= b; \
c -= rot(b, 16); \
a ^= c; \
a -= rot(c, 4); \
b ^= a; \
b -= rot(a, 14); \
c ^= b; \
c -= rot(b, 24); \
} \
((void)0)
#define rot(x, k)

Definition at line 58 of file hash.h.

◆ mix

#define mix ( a,
b,
c )
Value:
{ \
a -= c; \
a ^= rot(c, 4); \
c += b; \
b -= a; \
b ^= rot(a, 6); \
a += c; \
c -= b; \
c ^= rot(b, 8); \
b += a; \
a -= c; \
a ^= rot(c, 16); \
c += b; \
b -= a; \
b ^= rot(a, 19); \
a += c; \
c -= b; \
c ^= rot(b, 4); \
b += a; \
} \
((void)0)

Definition at line 35 of file hash.h.

Referenced by add_node(), bsdf_microfacet_estimate_albedo(), bsdf_microfacet_setup_fresnel_generalized_schlick(), central_cylindrical_to_direction(), do_version_glare_node_options_to_inputs(), dynamicPaint_mixPaintColors(), blender::noise::fractal_voronoi_distance_to_edge(), fractal_voronoi_distance_to_edge(), blender::noise::fractal_voronoi_x_fx(), fractal_voronoi_x_fx(), fresnel_f82_B(), fresnel_f82_Fss(), fresnel_f82tint_B(), fresnel_iridescence(), hash_uint4(), init_test_curve(), integrator_init_from_bake(), interpolate_curve_points(), interpolate_fresnel_color(), LerpCurveSegmentMotionCV(), microfacet_fresnel(), microfacet_ggx_sample_vndf(), blender::noise::mix(), node_mix_add(), node_mix_blend(), node_mix_color(), node_mix_dark(), node_mix_diff(), node_mix_exclusion(), node_mix_hue(), node_mix_light(), node_mix_mul(), node_mix_sub(), noise_fbm(), noise_fbm(), noise_fbm(), noise_fbm(), osl_closure_hair_huang_setup(), perlin_1d(), blender::noise::perlin_fbm(), blender::noise::perlin_noise(), blender::noise::perlin_noise(), blender::noise::perlin_noise(), blender::noise::perlin_noise(), phase_fournier_forand_newton(), quad_mix(), scatter(), shutter_curve_eval(), BVHSpatialSplit::split_curve_primitive(), BVHSpatialSplit::split_triangle_primitive(), svm_node_closure_bsdf(), svm_node_normal_map(), svm_node_principled_volume(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), blender::noise::voronoi_smooth_f1(), blender::noise::voronoi_smooth_f1(), blender::noise::voronoi_smooth_f1(), blender::noise::voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), voronoi_smooth_f1(), and work_balance_do_rebalance().

◆ rot

#define rot ( x,
k )
Value:
(((x) << (k)) | ((x) >> (32 - (k))))

Definition at line 33 of file hash.h.

Function Documentation

◆ hash_float2_to_float()

◆ hash_float2_to_float2()

◆ hash_float2_to_float3()

◆ hash_float3_to_float()

◆ hash_float3_to_float2()

ccl_device_inline float2 hash_float3_to_float2 ( const float3 k)

◆ hash_float3_to_float3()

◆ hash_float4_to_float()

◆ hash_float4_to_float2()

ccl_device_inline float2 hash_float4_to_float2 ( const float4 k)

Definition at line 247 of file hash.h.

References ccl_device_inline, hash_float4_to_float(), make_float2(), and make_float4().

Referenced by compute_3d_orientation().

◆ hash_float4_to_float3()

◆ hash_float4_to_float4()

◆ hash_float_to_float()

ccl_device_inline float hash_float_to_float ( const float k)

Definition at line 168 of file hash.h.

References __float_as_uint, ccl_device_inline, and hash_uint_to_float().

Referenced by hash_float_to_float2(), and hash_float_to_float3().

◆ hash_float_to_float2()

ccl_device_inline float2 hash_float_to_float2 ( const float k)

◆ hash_float_to_float3()

◆ hash_hp_float()

ccl_device_inline float hash_hp_float ( const uint i)

Definition at line 450 of file hash.h.

References ccl_device_inline, hash_hp_uint(), i, and uint_to_float_excl().

Referenced by tabulated_sobol_generate_4D().

◆ hash_hp_seeded_float()

ccl_device_inline float hash_hp_seeded_float ( const uint i,
const uint seed )

Definition at line 456 of file hash.h.

References ccl_device_inline, hash_hp_seeded_uint(), i, seed, and uint_to_float_excl().

◆ hash_hp_seeded_uint()

ccl_device_inline uint hash_hp_seeded_uint ( const uint i,
uint seed )

◆ hash_hp_uint()

◆ hash_iqnt2d()

ccl_device_inline uint hash_iqnt2d ( const uint x,
const uint y )

2D hash recommended from "Hash Functions for GPU Rendering" JCGT Vol. 9, No. 3, 2020 See https://www.shadertoy.com/view/4tXyWN and https://www.shadertoy.com/view/XlGcRh http://www.jcgt.org/published/0009/03/02/paper.pdf

Definition at line 538 of file hash.h.

References ccl_device_inline, x, and y.

Referenced by path_rng_pixel_init().

◆ hash_shuffle_uint()

ccl_device_inline uint hash_shuffle_uint ( uint i,
const uint length,
const uint seed )

Definition at line 504 of file hash.h.

References ccl_device_inline, count_leading_zeros(), i, length(), mask(), and seed.

Referenced by tabulated_sobol_shuffled_sample_index().

◆ hash_string()

uint hash_string ( const char * str)
inlinestatic

Definition at line 550 of file hash.h.

References i, and str.

Referenced by LightManager::add_ies(), and GeometryManager::create_volume_mesh().

◆ hash_uint()

ccl_device_inline uint hash_uint ( const uint kx)

Definition at line 77 of file hash.h.

References b, and ccl_device_inline.

Referenced by Integrator::device_update(), hash_uint_to_float(), integrator_init_from_bake(), and perlin_1d().

◆ hash_uint2()

◆ hash_uint2_to_float()

◆ hash_uint3()

ccl_device_inline uint hash_uint3 ( const uint kx,
const uint ky,
const uint kz )

Definition at line 104 of file hash.h.

References b, and ccl_device_inline.

Referenced by hash_uint3_to_float(), lcg_state_init(), and perlin_3d().

◆ hash_uint3_to_float()

ccl_device_inline float hash_uint3_to_float ( const uint kx,
const uint ky,
const uint kz )

Definition at line 153 of file hash.h.

References ccl_device_inline, hash_uint3(), and uint_to_float_incl().

Referenced by hash_float3_to_float().

◆ hash_uint4()

ccl_device_inline uint hash_uint4 ( const uint kx,
const uint ky,
const uint kz,
const uint kw )

Definition at line 119 of file hash.h.

References b, ccl_device_inline, and mix.

Referenced by hash_uint4_to_float(), and perlin_4d().

◆ hash_uint4_to_float()

ccl_device_inline float hash_uint4_to_float ( const uint kx,
const uint ky,
const uint kz,
const uint kw )

Definition at line 158 of file hash.h.

References ccl_device_inline, hash_uint4(), and uint_to_float_incl().

Referenced by hash_float4_to_float().

◆ hash_uint_to_float()

ccl_device_inline float hash_uint_to_float ( const uint kx)

◆ hash_wang_seeded_float()

ccl_device_inline float hash_wang_seeded_float ( const uint i,
const uint seed )

◆ hash_wang_seeded_uint()

ccl_device_inline uint hash_wang_seeded_uint ( uint i,
const uint seed )

Definition at line 470 of file hash.h.

References ccl_device_inline, i, and seed.

Referenced by hash_wang_seeded_float(), and tabulated_sobol_shuffled_sample_index().

◆ uint_to_float_excl()

CCL_NAMESPACE_BEGIN ccl_device_forceinline float uint_to_float_excl ( const uint n)

Definition at line 13 of file hash.h.

References ccl_device_forceinline.

Referenced by hash_hp_float(), hash_hp_seeded_float(), hash_wang_seeded_float(), and sobol_burley().

◆ uint_to_float_incl()

ccl_device_forceinline float uint_to_float_incl ( const uint n)