Skip to content

Commit

Permalink
Clean up different fog equations and remove uniform fog color.
Browse files Browse the repository at this point in the history
  • Loading branch information
bagnell committed Oct 23, 2015
1 parent 7655844 commit 7e59d39
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 56 deletions.
48 changes: 0 additions & 48 deletions Apps/Sandcastle/gallery/development/Fog.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,6 @@
<td>enabled</td>
<td><input type="checkbox" data-bind="checked: enabled"/></td>
</tr>
<tr>
<td>red</td>
<td><input type="text" size="5" data-bind="value: red"></td>
</tr>
<tr>
<td>green</td>
<td><input type="text" size="5" data-bind="value: green"></td>
</tr>
<tr>
<td>blue</td>
<td><input type="text" size="5" data-bind="value: blue"></td>
</tr>
<tr>
<td>type</td>
<td><input type="text" size="5" data-bind="value: type"></td>
</tr>
<tr>
<td>density</td>
<td><input type="text" size="5" data-bind="value: density"></td>
Expand Down Expand Up @@ -76,10 +60,6 @@
//The viewModel tracks the state of our mini application.
var viewModel = {
enabled : true,
red : 0,
green : 0,
blue : 0,
type : 0,
density : 0
};
// Convert the viewModel members into knockout observables.
Expand All @@ -95,41 +75,13 @@
}
);

Cesium.knockout.getObservable(viewModel, 'red').subscribe(
function(newValue) {
viewer.scene.fogColor.red = newValue;
}
);

Cesium.knockout.getObservable(viewModel, 'green').subscribe(
function(newValue) {
viewer.scene.fogColor.green = newValue;
}
);

Cesium.knockout.getObservable(viewModel, 'blue').subscribe(
function(newValue) {
viewer.scene.fogColor.blue = newValue;
}
);

Cesium.knockout.getObservable(viewModel, 'type').subscribe(
function(newValue) {
viewer.scene.fogType = newValue;
}
);

Cesium.knockout.getObservable(viewModel, 'density').subscribe(
function(newValue) {
viewer.scene.fogDensity = newValue;
}
);

viewModel.enabled = viewer.scene.fogEnabled;
viewModel.red = viewer.scene.fogColor.red;
viewModel.green = viewer.scene.fogColor.green;
viewModel.blue = viewer.scene.fogColor.blue;
viewModel.type = viewer.scene.fogType;
viewModel.density = viewer.scene.fogDensity;

/*
Expand Down
10 changes: 2 additions & 8 deletions Source/Shaders/GlobeFS.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ void main()


if (czm_fogEnabled) {
vec3 fogColor = czm_fogColor;
vec3 fogColor = vec3(0.88, 0.92, 0.999);
//vec3 fogColor = getAtmosphereColor();
//vec3 fogColor = v_rayleighColor;
//vec3 fogColor = v_mieColor;
Expand All @@ -208,17 +208,11 @@ void main()
float fog = 0.0;

float maxDistance = 10000.0;
if (czm_fogType == 1 && d > maxDistance) {
if (d > maxDistance) {
float scalar = (d - 2.0 * maxDistance) * czm_fogDensity;
fog = 1.0 - exp(-(scalar * scalar));
} else if (czm_fogType == 2) {
fog = 1.0 - exp(-d * czm_fogDensity);
} else {
float scalar = d * czm_fogDensity;
fog = 1.0 - exp(-(scalar * scalar));
}

fog = clamp(fog, 0.0, 1.0);

This comment has been minimized.

Copy link
@pjcozzi

pjcozzi Oct 28, 2015

Contributor

Have you tried something like:

if (fog > 0.0) {
    gl_FragColor = vec4(mix(finalColor.rgb, fogColor, fog), finalColor.a);
} else {
    gl_FragColor = finalColor;
}

Or using your own lerp or clamp? Have you visualized the value of fog?

gl_FragColor = vec4(mix(finalColor.rgb, fogColor, fog), finalColor.a);
} else {
gl_FragColor = finalColor;
Expand Down

0 comments on commit 7e59d39

Please sign in to comment.