17#define SSS_SAMPLE_MAX 64
18#define SSS_BURLEY_TRUNCATE 16.0
19#define SSS_BURLEY_TRUNCATE_CDF 0.9963790093708328
20#define SSS_TRANSMIT_LUT_SIZE 64.0
21#define SSS_TRANSMIT_LUT_RADIUS 2.0
22#define SSS_TRANSMIT_LUT_SCALE ((SSS_TRANSMIT_LUT_SIZE - 1.0) / float(SSS_TRANSMIT_LUT_SIZE))
23#define SSS_TRANSMIT_LUT_BIAS (0.5 / float(SSS_TRANSMIT_LUT_SIZE))
24#define SSS_TRANSMIT_LUT_STEP_RES 64.0
44 const float m_1_pi = 0.318309886183790671538;
48 float3 s = 1.9 -
A + 3.5 * ((
A - 0.8) * (
A - 0.8));
50 float3 l = 0.25 * m_1_pi * radius;
60 exp_r_3_d.x =
expf(-r / (3.0 * d.x));
61 exp_r_3_d.y =
expf(-r / (3.0 * d.y));
62 exp_r_3_d.z =
expf(-r / (3.0 * d.z));
63 float3 exp_r_d = exp_r_3_d * exp_r_3_d * exp_r_3_d;
69 return (exp_r_d + exp_r_3_d) / (4.0 * d);
#define BLI_STATIC_ASSERT_ALIGN(st, align)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
static float3 burley_setup(float3 radius, float3 albedo)
static float3 burley_eval(float3 d, float r)
VecBase< float, 4 > float4
VecBase< float, 3 > float3
float4 samples[SSS_SAMPLE_MAX]