1
+ #ifndef __MATERIAL_FOG_UTIL__
2
+ #define __MATERIAL_FOG_UTIL__
1
3
2
- vec4 getFogLinear(in vec4 diffuseColor, in vec4 fogColor, in float start, in float end, in float distance) {
3
4
4
- float fogFactor = (end - distance) / (end - start);
5
- fogFactor = clamp(fogFactor, 0.0, 1.0);
5
+ vec4 getFogLinear(in vec4 diffuseColor, in vec4 fogColor, in float start, in float end, in float distance) {
6
6
7
- return mix(fogColor, diffuseColor, fogFactor);
8
- }
7
+ float fogFactor = (end - distance) / (end - start );
8
+ fogFactor = clamp(fogFactor, 0.0, 1.0);
9
9
10
- vec4 getFogExp(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
10
+ return mix(fogColor, diffuseColor, fogFactor);
11
+ }
11
12
12
- float fogFactor = 1.0 / exp(distance * fogDensity);
13
- fogFactor = clamp( fogFactor, 0.0, 1.0 );
13
+ vec4 getFogExp(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
14
14
15
- return mix(fogColor, diffuseColor, fogFactor);
16
- }
15
+ float fogFactor = 1.0 / exp(distance * fogDensity );
16
+ fogFactor = clamp( fogFactor, 0.0, 1.0 );
17
17
18
- vec4 getFogExpSquare(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
18
+ return mix(fogColor, diffuseColor, fogFactor);
19
+ }
19
20
20
- float fogFactor = 1.0 / exp( (distance * fogDensity) * (distance * fogDensity));
21
- fogFactor = clamp( fogFactor, 0.0, 1.0 );
21
+ vec4 getFogExpSquare(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
22
22
23
- vec4 finalColor = mix(fogColor, diffuseColor, fogFactor);
24
- return finalColor;
25
- }
23
+ float fogFactor = 1.0 / exp( (distance * fogDensity) * (distance * fogDensity));
24
+ fogFactor = clamp( fogFactor, 0.0, 1.0 );
25
+
26
+ vec4 finalColor = mix(fogColor, diffuseColor, fogFactor);
27
+ return finalColor;
28
+ }
29
+
30
+ #if defined(USE_FOG)
31
+ uniform vec4 m_FogColor;
32
+ varying float fogDistance;
33
+
34
+ uniform vec2 m_LinearFog;
35
+
36
+ #ifdef FOG_EXP
37
+ uniform float m_ExpFog;
38
+ #endif
39
+
40
+ #ifdef FOG_EXPSQ
41
+ uniform float m_ExpSqFog;
42
+ #endif
43
+
44
+
45
+ vec4 MaterialFog_calculateFogColor(in vec4 fragColor){
46
+ #ifdef FOG_LINEAR
47
+ fragColor = getFogLinear(fragColor, m_FogColor, m_LinearFog.x, m_LinearFog.y, fogDistance);
48
+ #endif
49
+ #ifdef FOG_EXP
50
+ fragColor = getFogExp(fragColor, m_FogColor, m_ExpFog, fogDistance);
51
+ #endif
52
+ #ifdef FOG_EXPSQ
53
+ fragColor = getFogExpSquare(fragColor, m_FogColor, m_ExpSqFog, fogDistance);
54
+ #endif
55
+
56
+ return fragColor;
57
+ }
58
+
59
+ #endif
60
+ #endif
0 commit comments