Blender V4.3
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)   (((x) << (k)) | ((x) >> (32 - (k))))
 
#define mix(a, b, c)
 
#define final(a, b, c)
 

Functions

CCL_NAMESPACE_BEGIN ccl_device_forceinline float uint_to_float_excl (uint n)
 
ccl_device_forceinline float uint_to_float_incl (uint n)
 
ccl_device_inline uint hash_uint (uint kx)
 
ccl_device_inline uint hash_uint2 (uint kx, uint ky)
 
ccl_device_inline uint hash_uint3 (uint kx, uint ky, uint kz)
 
ccl_device_inline uint hash_uint4 (uint kx, uint ky, uint kz, uint kw)
 
ccl_device_inline float hash_uint_to_float (uint kx)
 
ccl_device_inline float hash_uint2_to_float (uint kx, uint ky)
 
ccl_device_inline float hash_uint3_to_float (uint kx, uint ky, uint kz)
 
ccl_device_inline float hash_uint4_to_float (uint kx, uint ky, uint kz, uint kw)
 
ccl_device_inline float hash_float_to_float (float k)
 
ccl_device_inline float hash_float2_to_float (float2 k)
 
ccl_device_inline float hash_float3_to_float (float3 k)
 
ccl_device_inline float hash_float4_to_float (float4 k)
 
ccl_device_inline float2 hash_float2_to_float2 (float2 k)
 
ccl_device_inline float3 hash_float3_to_float3 (float3 k)
 
ccl_device_inline float4 hash_float4_to_float4 (float4 k)
 
ccl_device_inline float3 hash_float_to_float3 (float k)
 
ccl_device_inline float3 hash_float2_to_float3 (float2 k)
 
ccl_device_inline float3 hash_float4_to_float3 (float4 k)
 
ccl_device_inline float2 hash_float_to_float2 (float k)
 
ccl_device_inline float2 hash_float3_to_float2 (float3 k)
 
ccl_device_inline float2 hash_float4_to_float2 (float4 k)
 
ccl_device_inline uint hash_hp_uint (uint i)
 
ccl_device_inline uint hash_hp_seeded_uint (uint i, uint seed)
 
ccl_device_inline float hash_hp_float (uint i)
 
ccl_device_inline float hash_hp_seeded_float (uint i, uint seed)
 
ccl_device_inline uint hash_wang_seeded_uint (uint i, uint seed)
 
ccl_device_inline float hash_wang_seeded_float (uint i, uint seed)
 
ccl_device_inline uint hash_shuffle_uint (uint i, uint length, 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)
local_group_size(16, 16) .push_constant(Type b
#define rot(x, k)
Definition hash.h:34

Definition at line 59 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 36 of file hash.h.

Referenced by add_node(), bsdf_microfacet_estimate_albedo(), bsdf_microfacet_setup_fresnel_conductor(), bsdf_microfacet_setup_fresnel_f82_tint(), bsdf_microfacet_setup_fresnel_generalized_schlick(), central_cylindrical_to_direction(), dynamicPaint_mixPaintColors(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_mix(), blender::noise::fractal_voronoi_distance_to_edge(), fractal_voronoi_distance_to_edge(), blender::noise::fractal_voronoi_x_fx(), fractal_voronoi_x_fx(), fresnel_iridescence(), hash_uint4(), init_test_curve(), integrator_init_from_bake(), interpolate_curve_points(), interpolate_fresnel_color(), blender::nodes::node_composite_glare_cc::GlareOperation::is_identity(), 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(), shutter_curve_eval(), BVHSpatialSplit::split_curve_primitive(), BVHSpatialSplit::split_triangle_primitive(), subd_triangle_attribute_float(), subd_triangle_attribute_float2(), subd_triangle_attribute_float3(), subd_triangle_attribute_float4(), 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 )   (((x) << (k)) | ((x) >> (32 - (k))))

Definition at line 34 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 ( float3 k)

◆ hash_float3_to_float3()

◆ hash_float4_to_float()

◆ hash_float4_to_float2()

ccl_device_inline float2 hash_float4_to_float2 ( float4 k)

Definition at line 237 of file hash.h.

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

Referenced by compute_3d_orientation().

◆ hash_float4_to_float3()

◆ hash_float4_to_float4()

ccl_device_inline float4 hash_float4_to_float4 ( float4 k)

◆ hash_float_to_float()

ccl_device_inline float hash_float_to_float ( float k)

Definition at line 158 of file hash.h.

References __float_as_uint, 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 ( float k)

Definition at line 226 of file hash.h.

References hash_float2_to_float(), hash_float_to_float(), and make_float2().

◆ hash_float_to_float3()

◆ hash_hp_float()

ccl_device_inline float hash_hp_float ( uint i)

Definition at line 432 of file hash.h.

References hash_hp_uint(), and uint_to_float_excl().

Referenced by tabulated_sobol_generate_4D().

◆ hash_hp_seeded_float()

ccl_device_inline float hash_hp_seeded_float ( uint i,
uint seed )

Definition at line 438 of file hash.h.

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

◆ hash_hp_seeded_uint()

ccl_device_inline uint hash_hp_seeded_uint ( 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 520 of file hash.h.

Referenced by path_rng_pixel_init().

◆ hash_shuffle_uint()

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

Definition at line 486 of file hash.h.

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

Referenced by tabulated_sobol_shuffled_sample_index().

◆ hash_string()

static uint hash_string ( const char * str)
inlinestatic

Definition at line 532 of file hash.h.

References str.

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

◆ hash_uint()

ccl_device_inline uint hash_uint ( uint kx)

Definition at line 78 of file hash.h.

References b.

Referenced by hash_uint_to_float(), hashnoise_1d(), integrator_init_from_bake(), osl_hash_if(), osl_hash_ii(), and perlin_1d().

◆ hash_uint2()

◆ hash_uint2_to_float()

◆ hash_uint3()

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

Definition at line 101 of file hash.h.

References b.

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

◆ hash_uint3_to_float()

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

Definition at line 146 of file hash.h.

References hash_uint3(), and uint_to_float_incl().

Referenced by hash_float3_to_float().

◆ hash_uint4()

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

Definition at line 114 of file hash.h.

References b, and mix.

Referenced by hash_uint4_to_float(), osl_hash_ivf(), and perlin_4d().

◆ hash_uint4_to_float()

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

Definition at line 151 of file hash.h.

References hash_uint4(), and uint_to_float_incl().

Referenced by hash_float4_to_float().

◆ hash_uint_to_float()

◆ hash_wang_seeded_float()

◆ hash_wang_seeded_uint()

ccl_device_inline uint hash_wang_seeded_uint ( uint i,
uint seed )

Definition at line 452 of file hash.h.

References seed.

Referenced by hash_wang_seeded_float(), and tabulated_sobol_shuffled_sample_index().

◆ uint_to_float_excl()

◆ uint_to_float_incl()

ccl_device_forceinline float uint_to_float_incl ( uint n)

Definition at line 25 of file hash.h.

References float.

Referenced by hash_uint2_to_float(), hash_uint3_to_float(), hash_uint4_to_float(), and hash_uint_to_float().