Welcome to mirror list, hosted at ThFree Co, Russian Federation.

closure_eval_volume_lib.glsl « shaders « eevee « engines « draw « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e450b8ad3c8100adac3ed922e1e2f14249af6c0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

void output_aov(vec4 color, float value, uint hash)
{
  /* Unsupported. */
}

/* Surface BSDFs. */
Closure closure_eval(ClosureDiffuse diffuse)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureTranslucent translucent)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureReflection reflection)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureRefraction refraction)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureEmission emission)
{
  Closure closure = CLOSURE_DEFAULT;
  closure.emission = emission.emission;
  return closure;
}
Closure closure_eval(ClosureTransparency transparency)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureReflection reflection, ClosureRefraction refraction)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureDiffuse diffuse, ClosureReflection reflection)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureDiffuse diffuse,
                     ClosureReflection reflection,
                     ClosureReflection clearcoat)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureDiffuse diffuse,
                     ClosureReflection reflection,
                     ClosureReflection clearcoat,
                     ClosureRefraction refraction)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureReflection reflection, ClosureReflection clearcoat)
{
  return CLOSURE_DEFAULT;
}
Closure closure_eval(ClosureHair hair)
{
  return CLOSURE_DEFAULT;
}

Closure closure_eval(ClosureVolumeScatter volume_scatter)
{
  Closure closure = CLOSURE_DEFAULT;
  closure.scatter = volume_scatter.scattering;
  closure.anisotropy = volume_scatter.anisotropy;
  return closure;
}
Closure closure_eval(ClosureVolumeAbsorption volume_absorption)
{
  Closure closure = CLOSURE_DEFAULT;
  closure.absorption = volume_absorption.absorption;
  return closure;
}
Closure closure_eval(ClosureVolumeScatter volume_scatter,
                     ClosureVolumeAbsorption volume_absorption,
                     ClosureEmission emission)
{
  Closure closure = CLOSURE_DEFAULT;
  closure.absorption = volume_absorption.absorption;
  closure.scatter = volume_scatter.scattering;
  closure.anisotropy = volume_scatter.anisotropy;
  closure.emission = emission.emission;
  return closure;
}

vec4 closure_to_rgba(Closure closure)
{
  /* Not supported */
  return vec4(0.0);
}

Closure closure_mix(Closure cl1, Closure cl2, float fac)
{
  Closure cl;
  cl.absorption = mix(cl1.absorption, cl2.absorption, fac);
  cl.scatter = mix(cl1.scatter, cl2.scatter, fac);
  cl.emission = mix(cl1.emission, cl2.emission, fac);
  cl.anisotropy = mix(cl1.anisotropy, cl2.anisotropy, fac);
  return cl;
}

Closure closure_add(Closure cl1, Closure cl2)
{
  Closure cl;
  cl.absorption = cl1.absorption + cl2.absorption;
  cl.scatter = cl1.scatter + cl2.scatter;
  cl.emission = cl1.emission + cl2.emission;
  cl.anisotropy = (cl1.anisotropy + cl2.anisotropy) / 2.0; /* Average phase (no multi lobe) */
  return cl;
}