Skip to content

Commit 16fe8aa

Browse files
authored
Update MaterialFog.glsllib
1 parent c5ba0f1 commit 16fe8aa

File tree

1 file changed

+51
-16
lines changed

1 file changed

+51
-16
lines changed
Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,60 @@
1+
#ifndef __MATERIAL_FOG_UTIL__
2+
#define __MATERIAL_FOG_UTIL__
13

2-
vec4 getFogLinear(in vec4 diffuseColor, in vec4 fogColor, in float start, in float end, in float distance) {
34

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) {
66

7-
return mix(fogColor, diffuseColor, fogFactor);
8-
}
7+
float fogFactor = (end - distance) / (end - start);
8+
fogFactor = clamp(fogFactor, 0.0, 1.0);
99

10-
vec4 getFogExp(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
10+
return mix(fogColor, diffuseColor, fogFactor);
11+
}
1112

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) {
1414

15-
return mix(fogColor, diffuseColor, fogFactor);
16-
}
15+
float fogFactor = 1.0 / exp(distance * fogDensity);
16+
fogFactor = clamp( fogFactor, 0.0, 1.0 );
1717

18-
vec4 getFogExpSquare(in vec4 diffuseColor, in vec4 fogColor, in float fogDensity, in float distance) {
18+
return mix(fogColor, diffuseColor, fogFactor);
19+
}
1920

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) {
2222

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

Comments
 (0)