Optional second landing light and light offset control for ALS
This commit is contained in:
parent
ac92428ff3
commit
f3cc0ac539
8 changed files with 89 additions and 16 deletions
|
@ -235,6 +235,16 @@
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
<value><use>view_fov</use></value>
|
<value><use>view_fov</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light1_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light1_offset</use></value>
|
||||||
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light2_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light2_offset</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>cloudpos1_x</name>
|
<name>cloudpos1_x</name>
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
|
@ -465,6 +475,11 @@
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<value> <use>use_landing_light</use></value>
|
<value> <use>use_landing_light</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>use_alt_landing_light</name>
|
||||||
|
<type>int</type>
|
||||||
|
<value> <use>use_alt_landing_light</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>display_xsize</name>
|
<name>display_xsize</name>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
|
|
@ -276,6 +276,16 @@
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
<value><use>view_fov</use></value>
|
<value><use>view_fov</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light1_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light1_offset</use></value>
|
||||||
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light2_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light2_offset</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>cloudpos1_x</name>
|
<name>cloudpos1_x</name>
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
|
@ -501,6 +511,11 @@
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<value> <use>use_landing_light</use></value>
|
<value> <use>use_landing_light</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>use_alt_landing_light</name>
|
||||||
|
<type>int</type>
|
||||||
|
<value> <use>use_alt_landing_light</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>display_xsize</name>
|
<name>display_xsize</name>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
|
|
@ -123,6 +123,9 @@
|
||||||
<view_fov><use>/sim/current-view/field-of-view</use></view_fov>
|
<view_fov><use>/sim/current-view/field-of-view</use></view_fov>
|
||||||
<use_searchlight><use>/sim/rendering/als-secondary-lights/use-searchlight</use></use_searchlight>
|
<use_searchlight><use>/sim/rendering/als-secondary-lights/use-searchlight</use></use_searchlight>
|
||||||
<use_landing_light><use>/sim/rendering/als-secondary-lights/use-landing-light</use></use_landing_light>
|
<use_landing_light><use>/sim/rendering/als-secondary-lights/use-landing-light</use></use_landing_light>
|
||||||
|
<use_alt_landing_light><use>/sim/rendering/als-secondary-lights/use-alt-landing-light</use></use_alt_landing_light>
|
||||||
|
<landing_light1_offset><use>/sim/rendering/als-secondary-lights/landing-light1-offset-deg</use></landing_light1_offset>
|
||||||
|
<landing_light2_offset><use>/sim/rendering/als-secondary-lights/landing-light2-offset-deg</use></landing_light2_offset>
|
||||||
<quality_level><use>/sim/rendering/shaders/landmass</use></quality_level>
|
<quality_level><use>/sim/rendering/shaders/landmass</use></quality_level>
|
||||||
<tquality_level><use>/sim/rendering/shaders/transition</use></tquality_level>
|
<tquality_level><use>/sim/rendering/shaders/transition</use></tquality_level>
|
||||||
<cloudpos1_x><use>/local-weather/cloud-shadows/cloudpos-x[0]</use></cloudpos1_x>
|
<cloudpos1_x><use>/local-weather/cloud-shadows/cloudpos-x[0]</use></cloudpos1_x>
|
||||||
|
@ -298,7 +301,7 @@
|
||||||
</texture-unit>
|
</texture-unit>
|
||||||
<program>
|
<program>
|
||||||
<vertex-shader>Shaders/terrain-haze-ultra.vert</vertex-shader>
|
<vertex-shader>Shaders/terrain-haze-ultra.vert</vertex-shader>
|
||||||
<fragment-shader>Shaders/terrain-haze-ultra.frag</fragment-shader>
|
<fragment-shader>Shaders/terrain-ALS-ultra.frag</fragment-shader>
|
||||||
<fragment-shader>Shaders/noise.frag</fragment-shader>
|
<fragment-shader>Shaders/noise.frag</fragment-shader>
|
||||||
<fragment-shader>Shaders/cloud-shadowfunc.frag</fragment-shader>
|
<fragment-shader>Shaders/cloud-shadowfunc.frag</fragment-shader>
|
||||||
<fragment-shader>Shaders/hazes.frag</fragment-shader>
|
<fragment-shader>Shaders/hazes.frag</fragment-shader>
|
||||||
|
@ -459,6 +462,16 @@
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
<value><use>view_fov</use></value>
|
<value><use>view_fov</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light1_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light1_offset</use></value>
|
||||||
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>landing_light2_offset</name>
|
||||||
|
<type>float</type>
|
||||||
|
<value><use>landing_light2_offset</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>cloudpos1_x</name>
|
<name>cloudpos1_x</name>
|
||||||
<type>float</type>
|
<type>float</type>
|
||||||
|
@ -679,6 +692,11 @@
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<value> <use>use_landing_light</use></value>
|
<value> <use>use_landing_light</use></value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>use_alt_landing_light</name>
|
||||||
|
<type>int</type>
|
||||||
|
<value> <use>use_alt_landing_light</use></value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>display_xsize</name>
|
<name>display_xsize</name>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
|
|
@ -34,12 +34,16 @@ uniform float overlay_bias;
|
||||||
uniform float overlay_alpha;
|
uniform float overlay_alpha;
|
||||||
uniform float wetness;
|
uniform float wetness;
|
||||||
uniform float air_pollution;
|
uniform float air_pollution;
|
||||||
|
uniform float landing_light1_offset;
|
||||||
|
uniform float landing_light2_offset;
|
||||||
|
|
||||||
uniform int quality_level;
|
uniform int quality_level;
|
||||||
uniform int tquality_level;
|
uniform int tquality_level;
|
||||||
uniform int cloud_shadow_flag;
|
uniform int cloud_shadow_flag;
|
||||||
uniform int use_overlay;
|
uniform int use_overlay;
|
||||||
uniform int use_searchlight;
|
uniform int use_searchlight;
|
||||||
uniform int use_landing_light;
|
uniform int use_landing_light;
|
||||||
|
uniform int use_alt_landing_light;
|
||||||
|
|
||||||
const float EarthRadius = 5800000.0;
|
const float EarthRadius = 5800000.0;
|
||||||
const float terminator_width = 200000.0;
|
const float terminator_width = 200000.0;
|
||||||
|
@ -56,7 +60,7 @@ float rayleigh_in_func(in float dist, in float air_pollution, in float avisibili
|
||||||
float alt_factor(in float eye_alt, in float vertex_alt);
|
float alt_factor(in float eye_alt, in float vertex_alt);
|
||||||
vec3 rayleigh_out_shift(in vec3 color, in float outscatter);
|
vec3 rayleigh_out_shift(in vec3 color, in float outscatter);
|
||||||
vec3 searchlight(in float dist);
|
vec3 searchlight(in float dist);
|
||||||
vec3 landing_light(in float dist);
|
vec3 landing_light(in float dist, in float offset);
|
||||||
|
|
||||||
float light_func (in float x, in float a, in float b, in float c, in float d, in float e)
|
float light_func (in float x, in float a, in float b, in float c, in float d, in float e)
|
||||||
{
|
{
|
||||||
|
@ -274,7 +278,11 @@ if (quality_level > 3)
|
||||||
}
|
}
|
||||||
if (use_landing_light == 1)
|
if (use_landing_light == 1)
|
||||||
{
|
{
|
||||||
color.rgb += landing_light(dist);
|
color.rgb += landing_light(dist, landing_light1_offset);
|
||||||
|
}
|
||||||
|
if (use_alt_landing_light == 1)
|
||||||
|
{
|
||||||
|
color.rgb += landing_light(dist, landing_light2_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
fragColor = color * texel + specular;
|
fragColor = color * texel + specular;
|
||||||
|
|
|
@ -31,12 +31,15 @@ uniform float fogstructure;
|
||||||
uniform float snow_thickness_factor;
|
uniform float snow_thickness_factor;
|
||||||
uniform float cloud_self_shading;
|
uniform float cloud_self_shading;
|
||||||
uniform float uvstretch;
|
uniform float uvstretch;
|
||||||
|
uniform float landing_light1_offset;
|
||||||
|
uniform float landing_light2_offset;
|
||||||
|
|
||||||
uniform int quality_level;
|
uniform int quality_level;
|
||||||
uniform int tquality_level;
|
uniform int tquality_level;
|
||||||
uniform int cloud_shadow_flag;
|
uniform int cloud_shadow_flag;
|
||||||
uniform int use_searchlight;
|
uniform int use_searchlight;
|
||||||
uniform int use_landing_light;
|
uniform int use_landing_light;
|
||||||
|
uniform int use_alt_landing_light;
|
||||||
|
|
||||||
const float EarthRadius = 5800000.0;
|
const float EarthRadius = 5800000.0;
|
||||||
const float terminator_width = 200000.0;
|
const float terminator_width = 200000.0;
|
||||||
|
@ -50,7 +53,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 Noise2D(in vec2 coord, in float wavelength);
|
||||||
float fog_func (in float targ, in float alt);
|
float fog_func (in float targ, in float alt);
|
||||||
vec3 searchlight(in float dist);
|
vec3 searchlight(in float dist);
|
||||||
vec3 landing_light(in float dist);
|
vec3 landing_light(in float dist, in float offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -252,7 +255,11 @@ if ((dist < 5000.0)&& (quality_level > 3) && (wetness>0.0))
|
||||||
}
|
}
|
||||||
if (use_landing_light == 1)
|
if (use_landing_light == 1)
|
||||||
{
|
{
|
||||||
color.rgb += landing_light(dist);
|
color.rgb += landing_light(dist, landing_light1_offset);
|
||||||
|
}
|
||||||
|
if (use_alt_landing_light == 1)
|
||||||
|
{
|
||||||
|
color.rgb += landing_light(dist, landing_light2_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
fragColor = color * texel + specular;
|
fragColor = color * texel + specular;
|
||||||
|
|
|
@ -12,12 +12,12 @@ vec3 searchlight(in float dist)
|
||||||
vec2 center = vec2 (float(display_xsize) * 0.5, float(display_ysize) * 0.4);
|
vec2 center = vec2 (float(display_xsize) * 0.5, float(display_ysize) * 0.4);
|
||||||
|
|
||||||
float headlightIntensity;
|
float headlightIntensity;
|
||||||
float lightRadius = (200.0 * 55.0/field_of_view);
|
float lightRadius = (float(display_xsize) *9.16 /field_of_view);
|
||||||
float angularDist = length(gl_FragCoord.xy -center);
|
float angularDist = length(gl_FragCoord.xy -center);
|
||||||
|
|
||||||
if (angularDist < lightRadius)
|
if (angularDist < lightRadius)
|
||||||
{
|
{
|
||||||
headlightIntensity = pow(cos(angularDist/lightRadius * 3.1415/2.0),2.0);
|
headlightIntensity = pow(cos(angularDist/lightRadius * 1.57075),2.0);
|
||||||
headlightIntensity = headlightIntensity * min(1.0, 10000.0/(dist*dist));
|
headlightIntensity = headlightIntensity * min(1.0, 10000.0/(dist*dist));
|
||||||
//headlightIntensity*= clamp(1.0 + 0.15 * log(1000.0/(dist*dist)),0.0,1.0);
|
//headlightIntensity*= clamp(1.0 + 0.15 * log(1000.0/(dist*dist)),0.0,1.0);
|
||||||
return headlightIntensity * vec3 (0.5,0.5, 0.5);
|
return headlightIntensity * vec3 (0.5,0.5, 0.5);
|
||||||
|
@ -25,7 +25,7 @@ if (angularDist < lightRadius)
|
||||||
else return vec3 (0.0,0.0,0.0);
|
else return vec3 (0.0,0.0,0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 landing_light(in float dist)
|
vec3 landing_light(in float dist, in float offset)
|
||||||
{
|
{
|
||||||
|
|
||||||
float fov_h = field_of_view;
|
float fov_h = field_of_view;
|
||||||
|
@ -38,22 +38,22 @@ if (view_heading_offset > 180.0)
|
||||||
else
|
else
|
||||||
{yaw_offset = view_heading_offset;}
|
{yaw_offset = view_heading_offset;}
|
||||||
|
|
||||||
float x_offset = (float(display_xsize) / fov_h * yaw_offset);
|
float x_offset = (float(display_xsize) / fov_h * (yaw_offset + offset));
|
||||||
float y_offset = -(float(display_ysize) / fov_v * view_pitch_offset);
|
float y_offset = -(float(display_ysize) / fov_v * view_pitch_offset);
|
||||||
|
|
||||||
vec2 center = vec2 (float(display_xsize) * 0.5 + x_offset, float(display_ysize) * 0.4 + y_offset);
|
vec2 center = vec2 (float(display_xsize) * 0.5 + x_offset, float(display_ysize) * 0.4 + y_offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float headlightIntensity;
|
float landingLightIntensity;
|
||||||
float lightRadius = (200.0 * 55.0/field_of_view);
|
float lightRadius = (float(display_xsize) *9.16 /field_of_view);
|
||||||
float angularDist = length(gl_FragCoord.xy -center);
|
float angularDist = length(gl_FragCoord.xy -center);
|
||||||
|
|
||||||
if (angularDist < lightRadius)
|
if (angularDist < lightRadius)
|
||||||
{
|
{
|
||||||
headlightIntensity = pow(cos(angularDist/lightRadius * 3.1415/2.0),2.0);
|
landingLightIntensity = pow(cos(angularDist/lightRadius * 1.57075),2.0);
|
||||||
headlightIntensity = headlightIntensity * min(1.0, 10000.0/(dist*dist));
|
landingLightIntensity *= min(1.0, 10000.0/(dist*dist));
|
||||||
return headlightIntensity * vec3 (0.5,0.5, 0.5);
|
return landingLightIntensity * vec3 (0.5,0.5, 0.5);
|
||||||
}
|
}
|
||||||
else return vec3 (0.0,0.0,0.0);
|
else return vec3 (0.0,0.0,0.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,8 @@ uniform float dot_size;
|
||||||
uniform float dust_resistance;
|
uniform float dust_resistance;
|
||||||
uniform float WindE;
|
uniform float WindE;
|
||||||
uniform float WindN;
|
uniform float WindN;
|
||||||
|
uniform float landing_light1_offset;
|
||||||
|
uniform float landing_light2_offset;
|
||||||
uniform float osg_SimulationTime;
|
uniform float osg_SimulationTime;
|
||||||
|
|
||||||
uniform int quality_level;
|
uniform int quality_level;
|
||||||
|
@ -61,6 +63,7 @@ uniform int cloud_shadow_flag;
|
||||||
uniform int rock_strata;
|
uniform int rock_strata;
|
||||||
uniform int use_searchlight;
|
uniform int use_searchlight;
|
||||||
uniform int use_landing_light;
|
uniform int use_landing_light;
|
||||||
|
uniform int use_alt_landing_light;
|
||||||
|
|
||||||
const float EarthRadius = 5800000.0;
|
const float EarthRadius = 5800000.0;
|
||||||
const float terminator_width = 200000.0;
|
const float terminator_width = 200000.0;
|
||||||
|
@ -81,7 +84,7 @@ float rayleigh_in_func(in float dist, in float air_pollution, in float avisibili
|
||||||
float alt_factor(in float eye_alt, in float vertex_alt);
|
float alt_factor(in float eye_alt, in float vertex_alt);
|
||||||
vec3 rayleigh_out_shift(in vec3 color, in float outscatter);
|
vec3 rayleigh_out_shift(in vec3 color, in float outscatter);
|
||||||
vec3 searchlight(in float dist);
|
vec3 searchlight(in float dist);
|
||||||
vec3 landing_light(in float dist);
|
vec3 landing_light(in float dist, in float offset);
|
||||||
|
|
||||||
float light_func (in float x, in float a, in float b, in float c, in float d, in float e)
|
float light_func (in float x, in float a, in float b, in float c, in float d, in float e)
|
||||||
{
|
{
|
||||||
|
@ -466,7 +469,11 @@ if ((dist < 5000.0)&& (quality_level > 3) && (combined_wetness>0.0))
|
||||||
}
|
}
|
||||||
if (use_landing_light == 1)
|
if (use_landing_light == 1)
|
||||||
{
|
{
|
||||||
color.rgb += landing_light(dist);
|
color.rgb += landing_light(dist, landing_light1_offset);
|
||||||
|
}
|
||||||
|
if (use_alt_landing_light == 1)
|
||||||
|
{
|
||||||
|
color.rgb += landing_light(dist, landing_light2_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -290,6 +290,9 @@ Started September 2000 by David Megginson, david@megginson.com
|
||||||
<als-secondary-lights>
|
<als-secondary-lights>
|
||||||
<use-searchlight type="bool">false</use-searchlight>
|
<use-searchlight type="bool">false</use-searchlight>
|
||||||
<use-landing-light type="bool">false</use-landing-light>
|
<use-landing-light type="bool">false</use-landing-light>
|
||||||
|
<use-alt-landing-light type="bool">false</use-alt-landing-light>
|
||||||
|
<landing-light1-offset-deg type="float">0.0</landing-light1-offset-deg>
|
||||||
|
<landing-light2-offset-deg type="float">0.0</landing-light2-offset-deg>
|
||||||
</als-secondary-lights>
|
</als-secondary-lights>
|
||||||
</rendering>
|
</rendering>
|
||||||
<model-hz type="int">120</model-hz>
|
<model-hz type="int">120</model-hz>
|
||||||
|
|
Loading…
Add table
Reference in a new issue