Merge branch 'master' of gitorious.org:fg/fgdata
This commit is contained in:
commit
55f8ba60b0
9 changed files with 249 additions and 330 deletions
|
@ -1,7 +1,7 @@
|
|||
|
||||
|
||||
var GPSmap196 = {
|
||||
new: func(canvas_group) {
|
||||
new: func() {
|
||||
print("Load Garmin GPSmap196 canvas");
|
||||
m = { parents : [GPSmap196] };
|
||||
m.node = props.globals.initNode("/instrumentation/gps196");
|
||||
|
@ -18,32 +18,36 @@ var GPSmap196 = {
|
|||
m.buttonPower = m.node.initNode("inputs/button-power", 0, "BOOL");
|
||||
m.rockerRight = m.node.initNode("inputs/rocker-right", 0, "BOOL");
|
||||
m.buttonEnter = m.node.initNode("inputs/button-enter", 0, "BOOL");
|
||||
m.gmt = props.globals.getNode("sim/time/gmt");
|
||||
m.gpsmap196Screen = canvas.new({
|
||||
"name": "GPSmap196-screen",
|
||||
"size": [512, 512],
|
||||
"view": [320, 240],
|
||||
"mipmapping": 1
|
||||
});
|
||||
m.gpsmap196Screen.addPlacement({"node": "gps196.screen"});
|
||||
var g = m.gpsmap196Screen.createGroup();
|
||||
|
||||
m.text = canvas_group.createChild("text", "optional-id-for element")
|
||||
.setFontSize(14)
|
||||
.setColor(1,0,0)
|
||||
.setTranslation(10, 20)
|
||||
.setAlignment("left-center")
|
||||
.setText("This is a text element")
|
||||
.setFont("LiberationFonts/LiberationSans-Regular.ttf");
|
||||
m.text_title =
|
||||
g.createChild("text", "line-title")
|
||||
.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX)
|
||||
.setColor(0,0,0)
|
||||
.setColorFill(0,1,0)
|
||||
.setAlignment("center-top")
|
||||
.setFont("LiberationFonts/LiberationMono-Bold.ttf")
|
||||
.setFontSize(35, 1.5)
|
||||
.setTranslation(150, 50);
|
||||
|
||||
return m;
|
||||
},
|
||||
update: func() {
|
||||
|
||||
me.text_title.setText(me.gmt.getValue());
|
||||
settimer(func me.update(), 0);
|
||||
}
|
||||
};
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func() {
|
||||
var gpsmap196Screen = canvas.new({
|
||||
"name": "GPSmap196-screen",
|
||||
"size": [512, 512],
|
||||
"view": [320, 240],
|
||||
"mipmapping": 1
|
||||
});
|
||||
gpsmap196Screen.addPlacement({"node": "gps196.screen"});
|
||||
gpsmap196Canvas = GPSmap196.new(gpsmap196Screen.createGroup());
|
||||
gpsmap196Canvas = GPSmap196.new();
|
||||
gpsmap196Canvas.update();
|
||||
});
|
||||
|
||||
|
|
|
@ -292,69 +292,37 @@
|
|||
<command>nasal</command>
|
||||
<script>
|
||||
<![CDATA[
|
||||
var dlg = canvas.Window.new([512, 256], "dialog").set("resize", 1).set("title", "Garmin GPSmap196");
|
||||
var gps196Widget = dlg.createCanvas().setColorBackground(0,0,1,1);
|
||||
var gps196CanvasInstance = canvas.get({name: "GPSmap196-screen"});
|
||||
var dlg = canvas.Window.new([1024, 512], "dialog").set("title", "Garmin GPSmap196");
|
||||
var buttons = [
|
||||
["gps196.widget.button.in", "button-in"], ["gps196.widget.button.out", "button-out"],
|
||||
["gps196.widget.button.dto", "button-dto"], ["gps196.widget.button.page", "button-page"],
|
||||
["gps196.widget.button.quit", "button-quit"], ["gps196.widget.button.nrst", "button-nrst"],
|
||||
["gps196.widget.button.menu", "button-menu"], ["gps196.widget.button.enter", "button-enter"],
|
||||
["gps196.widget.button.power", "button-power"], ["gps196.widget.rocker.up", "rocker-up"],
|
||||
["gps196.widget.rocker.down", "rocker-down"], ["gps196.widget.rocker.left", "rocker-left"],
|
||||
["gps196.widget.rocker.right", "rocker-right"]
|
||||
];
|
||||
|
||||
var gps196Widget = dlg.createCanvas().setColorBackground(1,1,1,1);
|
||||
var root = gps196Widget.createGroup();
|
||||
canvas.parsesvg(root, "Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.svg");
|
||||
|
||||
var display = root.getElementById("gps196.widget.screen");
|
||||
var setButtonListener = func(btn, prop) {
|
||||
root.getElementById(btn).addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 1); });
|
||||
root.getElementById(btn).addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 0); });
|
||||
root.getElementById(btn).set("z-index", 11);
|
||||
}
|
||||
|
||||
var buttonIn = root.getElementById("gps196.widget.button.in");
|
||||
buttonIn.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-in", 1); });
|
||||
buttonIn.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-in", 0); });
|
||||
for( var i=0; i<size(buttons); i=i+1){
|
||||
setButtonListener(buttons[i][0], buttons[i][1]);
|
||||
}
|
||||
|
||||
var buttonOut = root.getElementById("gps196.widget.button.out");
|
||||
buttonOut.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-out", 1); });
|
||||
buttonOut.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-out", 0); });
|
||||
var background = root.createChild("image");
|
||||
background.setFile("Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.png").setSize(1024,512).set("z-index",10);
|
||||
|
||||
var buttonDto = root.getElementById("gps196.widget.button.dto");
|
||||
buttonDto.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-dto", 1); });
|
||||
buttonDto.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-dto", 0); });
|
||||
|
||||
var buttonPage = root.getElementById("gps196.widget.button.page");
|
||||
buttonPage.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-page", 1); });
|
||||
buttonPage.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-page", 0); });
|
||||
|
||||
var buttonQuit = root.getElementById("gps196.widget.button.quit");
|
||||
buttonQuit.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-quit", 1); });
|
||||
buttonQuit.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-quit", 0); });
|
||||
|
||||
var buttonMenu = root.getElementById("gps196.widget.button.menu");
|
||||
buttonMenu.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-menu", 1); });
|
||||
buttonMenu.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-menu", 0); });
|
||||
|
||||
var buttonNrst = root.getElementById("gps196.widget.button.nrst");
|
||||
buttonNrst.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-nrst", 1); });
|
||||
buttonNrst.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-nrst", 0); });
|
||||
|
||||
var buttonEnter = root.getElementById("gps196.widget.button.enter");
|
||||
buttonEnter.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-enter", 1); });
|
||||
buttonEnter.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-enter", 0); });
|
||||
|
||||
var buttonPower = root.getElementById("gps196.widget.button.power");
|
||||
buttonPower.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/button-power", 1); });
|
||||
buttonPower.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/button-power", 0); });
|
||||
|
||||
var rockerUp = root.getElementById("gps196.widget.rocker.up");
|
||||
rockerUp.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/rocker-up", 1); });
|
||||
rockerUp.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/rocker-up", 0); });
|
||||
|
||||
var rockerDown = root.getElementById("gps196.widget.rocker.down");
|
||||
rockerDown.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/rocker-down", 1); });
|
||||
rockerDown.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/rocker-down", 0); });
|
||||
|
||||
var rockerLeft = root.getElementById("gps196.widget.rocker.left");
|
||||
rockerLeft.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/rocker-left", 1); });
|
||||
rockerLeft.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/rocker-left", 0); });
|
||||
|
||||
var rockerRight = root.getElementById("gps196.widget.rocker.right");
|
||||
rockerRight.addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/rocker-right", 1); });
|
||||
rockerRight.addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/rocker-right", 0); });
|
||||
|
||||
var gps196CanvasInstance = canvas.get({name: "GPSmap196-screen"});
|
||||
display.createChild("image").setFile(gps196CanvasInstance);
|
||||
|
||||
#dlg.setCanvas(canvas.get({name: "GPSmap196-screen"}));
|
||||
var canvasScreenWidget = root.createChild("image");
|
||||
canvasScreenWidget.setFile(gps196CanvasInstance.getPath()).setSize(563,359).setTranslation(87,53).set("z-index", 11);
|
||||
]]>
|
||||
</script>
|
||||
</binding>
|
||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -92,6 +92,7 @@
|
|||
<dot_density>1.0</dot_density>
|
||||
<dot_size>1.0</dot_size>
|
||||
<dust_resistance>1.0</dust_resistance>
|
||||
<rock_strata>0</rock_strata>
|
||||
<visibility><use>/environment/ground-visibility-m</use></visibility>
|
||||
<avisibility><use>/environment/visibility-m</use></avisibility>
|
||||
<lthickness><use>/environment/ground-haze-thickness-m</use></lthickness>
|
||||
|
@ -658,6 +659,11 @@
|
|||
<type>int</type>
|
||||
<value><use>cloud_shadow_flag</use></value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>rock_strata</name>
|
||||
<type>int</type>
|
||||
<value><use>rock_strata</use></value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>texture</name>
|
||||
<type>sampler-2d</type>
|
||||
|
|
|
@ -3076,6 +3076,7 @@
|
|||
</texture-set>
|
||||
<parameters>
|
||||
<transition_model>0.5</transition_model>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
|
@ -3100,6 +3101,7 @@
|
|||
</texture-set>
|
||||
<parameters>
|
||||
<transition_model>0.5</transition_model>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
|
@ -3118,12 +3120,13 @@
|
|||
<name>EvergreenBroadCover</name>
|
||||
<name>EvergreenForest</name>
|
||||
<effect>Effects/forest</effect>
|
||||
<texture-set>
|
||||
<texture-set>
|
||||
<texture>Terrain/forest1a.png</texture>
|
||||
<texture n="12">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<texture n="12">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<transition_model>0.5</transition_model>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
|
@ -3141,13 +3144,14 @@
|
|||
<material include="Materials/regions/south_africa.xml">
|
||||
<name>DryCropPastureCover</name>
|
||||
<name>DryCrop</name>
|
||||
<texture-set>
|
||||
<texture-set>
|
||||
<texture>Terrain/dry_pasture4.png</texture>
|
||||
<texture n="12">Terrain/dirtrock.png</texture>
|
||||
<texture n="15">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<texture n="12">Terrain/dirtrock.png</texture>
|
||||
<texture n="15">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<dot_size>10.0</dot_size>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<object-mask>Terrain/drycrop1.mask.png</object-mask>
|
||||
<object-mask>Terrain/drycrop2.mask.png</object-mask>
|
||||
|
@ -3169,6 +3173,78 @@
|
|||
<tree-width-m>12.0</tree-width-m>
|
||||
</material>
|
||||
|
||||
<material include="Materials/regions/south_africa.xml">
|
||||
<name>DryCropPastureCover</name>
|
||||
<name>DryCrop</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/dry_pasture4.png</texture>
|
||||
<texture n="12">Terrain/dirtrock.png</texture>
|
||||
<texture n="15">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<dot_size>10.0</dot_size>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<object-mask>Terrain/drycrop1.mask.png</object-mask>
|
||||
<object-mask>Terrain/drycrop2.mask.png</object-mask>
|
||||
<object-mask>Terrain/drycrop3.mask.png</object-mask>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<solid>1</solid>
|
||||
<friction-factor>0.9</friction-factor>
|
||||
<rolling-friction>0.1</rolling-friction>
|
||||
<bumpiness>0.6</bumpiness>
|
||||
<load-resistance>1e30</load-resistance>
|
||||
<light-coverage>2000000.0</light-coverage>
|
||||
<object-group include="Materials/base/farm-buildings.xml"/>
|
||||
<wood-coverage>10000.0</wood-coverage>
|
||||
<tree-texture>Trees/mixed.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>20.0</tree-height-m>
|
||||
<tree-width-m>12.0</tree-width-m>
|
||||
</material>
|
||||
|
||||
|
||||
<material include="Materials/regions/south_africa.xml">
|
||||
<effect>Effects/cropgrass</effect>
|
||||
<name>Grassland</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/dry_pasture4.png</texture>
|
||||
<texture n="12">Terrain/tundra-hawaii-green.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<rock_strata>1</rock_strata>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<light-coverage>2000000.0</light-coverage>
|
||||
<diffuse>
|
||||
<r>0.93</r>
|
||||
<g>0.95</g>
|
||||
<b>0.93</b>
|
||||
<a>1.0</a>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<r>0.1</r>
|
||||
<g>0.12</g>
|
||||
<b>0.1</b>
|
||||
<a>1.0</a>
|
||||
</specular>
|
||||
<shininess>1.2</shininess>
|
||||
<solid>1</solid>
|
||||
<friction-factor>0.7</friction-factor>
|
||||
<rolling-friction>0.1</rolling-friction>
|
||||
<bumpiness>0.3</bumpiness>
|
||||
<load-resistance>1e30</load-resistance>
|
||||
<wood-coverage>150000.0</wood-coverage>
|
||||
<tree-texture>Trees/mixed.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>20.0</tree-height-m>
|
||||
<tree-width-m>12.0</tree-width-m>
|
||||
</material>
|
||||
|
||||
<!-- REGIONAL DEFINITIONS - ASIA -->
|
||||
|
||||
<!-- Regional Asian irrigated crops -->
|
||||
|
|
|
@ -70,7 +70,7 @@ float shadow_func (in float x, in float y, in float noise, in float dist);
|
|||
float Noise2D(in vec2 coord, in float wavelength);
|
||||
float Noise3D(in vec3 coord, in float wavelength);
|
||||
float VoronoiNoise2D(in vec2 coord, in float wavelength, in float xrand, in float yrand);
|
||||
float slopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness);
|
||||
float SlopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness);
|
||||
|
||||
|
||||
|
||||
|
@ -235,8 +235,8 @@ float vnoise_rotation = VoronoiNoise2D(rawPos.xy, rotation_scale, distortion_fac
|
|||
|
||||
// slope noise
|
||||
|
||||
float slopenoise_50m = slopeLines2D(rawPos, grad_dir, 50.0, steepness);
|
||||
float slopenoise_100m = slopeLines2D(rawPos, grad_dir, 100.0, steepness);
|
||||
float slopenoise_50m = SlopeLines2D(rawPos, grad_dir, 50.0, steepness);
|
||||
float slopenoise_100m = SlopeLines2D(rawPos, grad_dir, 100.0, steepness);
|
||||
|
||||
float snownoise_25m = mix(noise_25m, slopenoise_50m, clamp(3.0*(1.0-steepness),0.0,1.0));
|
||||
float snownoise_50m = mix(noise_50m, slopenoise_100m, clamp(3.0*(1.0-steepness),0.0,1.0));
|
||||
|
|
|
@ -10,9 +10,11 @@
|
|||
// * VoronoiNoise2D(in vec2 coord, in float wavelength, in float xrand, in float yrand)
|
||||
// is a function mapping the terrain into random domains, based on Voronoi tiling of a regular grid
|
||||
// distorted with xrand and yrand
|
||||
// * slopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness)
|
||||
// * SlopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness)
|
||||
// computes a semi-random set of lines along the direction of steepest descent, allowing to
|
||||
// simulate e.g. water erosion patterns
|
||||
// * Strata3D(in vec3 coord, in float wavelength, in float variation)
|
||||
// computers a vertically stratified random pattern, appropriate e.g. for rock textures
|
||||
|
||||
// Thorsten Renk 2014
|
||||
|
||||
|
@ -218,7 +220,35 @@ float slopeLines2D(in float x, in float y, in float sx, in float sy, in float st
|
|||
}
|
||||
|
||||
|
||||
float slopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness)
|
||||
float SlopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness)
|
||||
{
|
||||
return slopeLines2D(coord.x/wavelength, coord.y/wavelength, gradDir.x, gradDir.y, steepness);
|
||||
}
|
||||
|
||||
|
||||
float strata3D(in float x, in float y, in float z, in float variation)
|
||||
{
|
||||
float integer_x = x - fract(x);
|
||||
float fractional_x = x - integer_x;
|
||||
|
||||
float integer_y = y - fract(y);
|
||||
float fractional_y = y - integer_y;
|
||||
|
||||
float integer_z = z - fract(z);
|
||||
float fractional_z = z - integer_z;
|
||||
|
||||
float rand_value_low = rand3D(vec3(0.0, 0.0, integer_z));
|
||||
float rand_value_high = rand3D(vec3(0.0, 0.0, integer_z+1));
|
||||
|
||||
float rand_var = 0.5 - variation + 2.0 * variation * rand3D(vec3(integer_x, integer_y, integer_z));
|
||||
|
||||
|
||||
return (1.0 - smoothstep(rand_var -0.15, rand_var + 0.15, fract(z))) * rand_value_low + smoothstep(rand_var-0.15, rand_var + 0.15, fract(z)) * rand_value_high;
|
||||
|
||||
}
|
||||
|
||||
|
||||
float Strata3D(in vec3 coord, in float wavelength, in float variation)
|
||||
{
|
||||
return strata3D(coord.x/wavelength, coord.y/wavelength, coord.z/wavelength, variation);
|
||||
}
|
||||
|
|
|
@ -214,12 +214,7 @@ float noise_2000m = Noise2D(rawPos.xy, 2000.0);
|
|||
float snow_alpha;
|
||||
|
||||
|
||||
|
||||
|
||||
//float view_angle = abs(dot(normal, normalize(ecViewdir)));
|
||||
|
||||
//if ((quality_level > 3)&&(relPos.z + eye_alt +500.0 > snowlevel))
|
||||
if (quality_level > 3)
|
||||
if (quality_level > 3)
|
||||
{
|
||||
float sfactor;
|
||||
noise_01m = Noise2D(rawPos.xy,0.1);
|
||||
|
@ -280,28 +275,32 @@ if ((dist < 5000.0)&& (quality_level > 3) && (wetness>0.0))
|
|||
// light computations
|
||||
|
||||
|
||||
vec4 light_specular = gl_LightSource[0].specular;
|
||||
eShade = 0.9 * smoothstep(terminator_width+ terminator, -terminator_width + terminator, yprime_alt) + 0.1;
|
||||
vec4 light_specular = gl_LightSource[0].specular * eShade;
|
||||
|
||||
// If gl_Color.a == 0, this is a back-facing polygon and the
|
||||
// normal should be reversed.
|
||||
n = normal;
|
||||
n = normalize(n);
|
||||
|
||||
float fresnel;
|
||||
NdotL = dot(n, lightDir);
|
||||
|
||||
if (quality_level > 4)
|
||||
{
|
||||
NdotL = NdotL + (3.0 * N.r + 0.1 * (noise_01m-0.5))* (1.0 - water_factor) ;
|
||||
}
|
||||
if (NdotL > 0.0) {
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
if (cloud_shadow_flag == 1)
|
||||
{NdotL = NdotL * shadow_func(relPos.x, relPos.y, 1.0, dist);}
|
||||
color += diffuse_term * NdotL;
|
||||
NdotHV = max(dot(n, halfVector), 0.0);
|
||||
specular.rgb = ((gl_FrontMaterial.specular.rgb + (water_factor * vec3 (1.0, 1.0, 1.0)))
|
||||
fresnel = 1.0 + 5.0 * (1.0-smoothstep(0.0,0.2, dot(normalize(ecViewdir),n)));
|
||||
specular.rgb = ((vec3 (0.2,0.2,0.2) * fresnel + (water_factor * vec3 (1.0, 1.0, 1.0)))
|
||||
* light_specular.rgb
|
||||
* pow(NdotHV, gl_FrontMaterial.shininess + (20.0 * water_factor)));
|
||||
}
|
||||
* pow(NdotHV, max(4.0, (20.0 * water_factor))));
|
||||
}
|
||||
color.a = 1.0;//diffuse_term.a;
|
||||
// This shouldn't be necessary, but our lighting becomes very
|
||||
// saturated. Clamping the color before modulating by the texture
|
||||
|
@ -430,9 +429,6 @@ hazeColor.g = light_func(lightArg, 3.931e-06, 0.264, 3.827, 7.93e-06, 1.0);
|
|||
hazeColor.r = light_func(lightArg, 8.305e-06, 0.161, 3.827, 3.04e-05, 1.0);
|
||||
|
||||
|
||||
// now dim the light for haze
|
||||
eShade = 0.9 * smoothstep(terminator_width+ terminator, -terminator_width + terminator, yprime_alt) + 0.1;
|
||||
|
||||
// Mie-like factor
|
||||
|
||||
if (lightArg < 10.0)
|
||||
|
|
|
@ -57,6 +57,7 @@ uniform int quality_level;
|
|||
uniform int tquality_level;
|
||||
uniform int wind_effects;
|
||||
uniform int cloud_shadow_flag;
|
||||
uniform int rock_strata;
|
||||
|
||||
const float EarthRadius = 5800000.0;
|
||||
const float terminator_width = 200000.0;
|
||||
|
@ -70,8 +71,8 @@ float shadow_func (in float x, in float y, in float noise, in float dist);
|
|||
float DotNoise2D(in vec2 coord, in float wavelength, in float fractionalMaxDotSize, in float dot_density);
|
||||
float Noise2D(in vec2 coord, in float wavelength);
|
||||
float Noise3D(in vec3 coord, in float wavelength);
|
||||
float slopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness);
|
||||
|
||||
float SlopeLines2D(in vec2 coord, in vec2 gradDir, in float wavelength, in float steepness);
|
||||
float Strata3D(in vec3 coord, in float wavelength, in float variation);
|
||||
|
||||
|
||||
|
||||
|
@ -237,8 +238,8 @@ float dotnoisegrad_10m;
|
|||
|
||||
// slope noise
|
||||
|
||||
float slopenoise_50m = slopeLines2D(rawPos, grad_dir, 50.0, steepness);
|
||||
float slopenoise_100m = slopeLines2D(rawPos, grad_dir, 100.0, steepness);
|
||||
float slopenoise_50m = SlopeLines2D(rawPos, grad_dir, 50.0, steepness);
|
||||
float slopenoise_100m = SlopeLines2D(rawPos, grad_dir, 100.0, steepness);
|
||||
|
||||
float snownoise_25m = mix(noise_25m, slopenoise_50m, clamp(3.0*(1.0-steepness),0.0,1.0));
|
||||
float snownoise_50m = mix(noise_50m, slopenoise_100m, clamp(3.0*(1.0-steepness),0.0,1.0));
|
||||
|
@ -348,6 +349,21 @@ float mix_factor;
|
|||
texel = mix(texel, gradient_texel, 1.0 - smoothstep(0.75,0.8,abs(steepness)+ 0.00002* msl_altitude + 0.05 * (noise_50m - 0.5)));
|
||||
local_autumn_factor = texel.a;
|
||||
}
|
||||
|
||||
|
||||
// strata noise
|
||||
|
||||
float stratnoise_50m;
|
||||
float stratnoise_10m;
|
||||
|
||||
if (rock_strata==1)
|
||||
{
|
||||
stratnoise_50m = Strata3D(vec3 (rawPos.x, rawPos.y, msl_altitude), 50.0, 0.2);
|
||||
stratnoise_10m = Strata3D(vec3 (rawPos.x, rawPos.y, msl_altitude), 10.0, 0.2);
|
||||
stratnoise_50m = mix(stratnoise_50m, 1.0, smoothstep(0.8,0.9, steepness));
|
||||
stratnoise_10m = mix(stratnoise_10m, 1.0, smoothstep(0.8,0.9, steepness));
|
||||
texel *= (0.4 + 0.4 * stratnoise_50m + 0.2 * stratnoise_10m);
|
||||
}
|
||||
|
||||
// the dot vegetation texture overlay
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue