diff --git a/Effects/bowwave.eff b/Effects/bowwave.eff
index ecd7db865..7af277295 100644
--- a/Effects/bowwave.eff
+++ b/Effects/bowwave.eff
@@ -88,10 +88,14 @@
-
- transparent
smooth
-
+ transparent
+ true
+
+ 6
+ DepthSortedBin
+
+
@@ -527,14 +531,14 @@
smooth
back
-
+
0
noise
diff --git a/Effects/model-combined.eff b/Effects/model-combined.eff
index 1c0f609d4..cc4b069ab 100644
--- a/Effects/model-combined.eff
+++ b/Effects/model-combined.eff
@@ -91,8 +91,13 @@ please see Docs/README.model-combined.eff for documentation
0
- 0.0 0.0 0.0
- 0.0
+ 0
+ 0.0 0.0 0.0
+ 0.0
+ 0.0 0.0 0.0
+ 0.0
+ 0.0 0.0 0.0
+ 0.0
0.05
@@ -602,20 +607,61 @@ please see Docs/README.model-combined.eff for documentation
- dirt_color
- float-vec3
+ dirt_multi
+ int
-
+
- dirt_factor
- float
+ dirt_r_color
+ float-vec3
-
+
+
+
+ dirt_r_factor
+ float
+
+
+
+
+
+
+ dirt_g_color
+ float-vec3
+
+
+
+
+
+
+ dirt_g_factor
+ float
+
+
+
+
+
+
+ dirt_b_color
+ float-vec3
+
+
+
+
+
+
+ dirt_b_factor
+ float
+
+
+
+
+
amb_correction
diff --git a/Shaders/ubershader.frag b/Shaders/ubershader.frag
index fb966290b..31d3b989b 100644
--- a/Shaders/ubershader.frag
+++ b/Shaders/ubershader.frag
@@ -32,6 +32,7 @@ uniform int lightmap_enabled;
uniform int lightmap_multi;
uniform int shader_qual;
uniform int dirt_enabled;
+uniform int dirt_multi;
uniform float lightmap_r_factor;
uniform float lightmap_g_factor;
@@ -42,14 +43,18 @@ uniform float refl_fresnel;
uniform float refl_rainbow;
uniform float refl_noise;
uniform float amb_correction;
-uniform float dirt_factor;
+uniform float dirt_r_factor;
+uniform float dirt_g_factor;
+uniform float dirt_b_factor;
uniform vec3 lightmap_r_color;
uniform vec3 lightmap_g_color;
uniform vec3 lightmap_b_color;
uniform vec3 lightmap_a_color;
-uniform vec3 dirt_color;
+uniform vec3 dirt_r_color;
+uniform vec3 dirt_g_color;
+uniform vec3 dirt_b_color;
///fog include//////////////////////
uniform int fogType;
@@ -151,10 +156,17 @@ void main (void)
//begin DIRT
//////////////////////////////////////////////////////////////////////
if (dirt_enabled > 0.0){
- vec3 dirtColor = dirt_color * noisevec.rgb;
- float dirtFactor = reflmap.r * dirt_factor;
- dirtFactor = smoothstep(0.0, 1.0, dirtFactor);
- fragColor.rgb = mix(fragColor.rgb, dirtColor, dirtFactor);
+ float dirtFactorR = reflmap.r * dirt_r_factor;
+ dirtFactorR = smoothstep(0.0, 1.0, dirtFactorR);
+ fragColor.rgb = mix(fragColor.rgb, dirt_r_color, dirtFactorR);
+ if (dirt_multi > 0) {
+ float dirtFactorG = reflmap.g * dirt_g_factor;
+ float dirtFactorB = reflmap.b * dirt_b_factor;
+ dirtFactorG = smoothstep(0.0, 1.0, dirtFactorG);
+ dirtFactorB = smoothstep(0.0, 1.0, dirtFactorB);
+ fragColor.rgb = mix(fragColor.rgb, dirt_g_color, dirtFactorG);
+ fragColor.rgb = mix(fragColor.rgb, dirt_b_color, dirtFactorB);
+ }
}
//////////////////////////////////////////////////////////////////////
//END Dirt