Improvements and bugfixes for orbital rendering
This commit is contained in:
parent
164aefa2c8
commit
59e01f4edc
9 changed files with 99 additions and 17 deletions
|
@ -6,12 +6,21 @@
|
||||||
<texture n ="0">
|
<texture n ="0">
|
||||||
<type>white</type>
|
<type>white</type>
|
||||||
</texture>
|
</texture>
|
||||||
|
<texture n="1">
|
||||||
|
<image>Models/Astro/cloud_structure.png</image>
|
||||||
|
<type>2d</type>
|
||||||
|
<filter>linear-mipmap-linear</filter>
|
||||||
|
<wrap-s>repeat</wrap-s>
|
||||||
|
<wrap-t>repeat</wrap-t>
|
||||||
|
<internal-format>normalized</internal-format>
|
||||||
|
</texture>
|
||||||
<vertex-program-two-side type="bool">false</vertex-program-two-side>
|
<vertex-program-two-side type="bool">false</vertex-program-two-side>
|
||||||
<material>
|
<material>
|
||||||
<color-mode-uniform>1</color-mode-uniform>
|
<color-mode-uniform>1</color-mode-uniform>
|
||||||
<!-- DIFFUSE -->
|
<!-- DIFFUSE -->
|
||||||
</material>
|
</material>
|
||||||
<visibility><use>/environment/visibility-m</use></visibility>
|
<visibility><use>/environment/visibility-m</use></visibility>
|
||||||
|
<use-overlay-textures><use>/earthview/overlay-texture-flag</use></use-overlay-textures>
|
||||||
</parameters>
|
</parameters>
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,8 +81,6 @@
|
||||||
<!-- The texture unit is always active because the shaders expect
|
<!-- The texture unit is always active because the shaders expect
|
||||||
that. -->
|
that. -->
|
||||||
<unit>0</unit>
|
<unit>0</unit>
|
||||||
<!-- If there is a texture, the type in the derived effect
|
|
||||||
will be "2d". -->
|
|
||||||
<type>
|
<type>
|
||||||
<use>texture[0]/type</use>
|
<use>texture[0]/type</use>
|
||||||
</type>
|
</type>
|
||||||
|
@ -89,11 +96,15 @@
|
||||||
<wrap-t>
|
<wrap-t>
|
||||||
<use>texture[0]/wrap-t</use>
|
<use>texture[0]/wrap-t</use>
|
||||||
</wrap-t>
|
</wrap-t>
|
||||||
<!--
|
</texture-unit>
|
||||||
<internal-format>
|
<texture-unit>
|
||||||
<use>texture[0]/internal-format</use>
|
<unit>1</unit>
|
||||||
</internal-format>
|
<image><use>texture[1]/image</use></image>
|
||||||
-->
|
<type><use>texture[1]/type</use></type>
|
||||||
|
<filter><use>texture[1]/filter</use></filter>
|
||||||
|
<wrap-s><use>texture[1]/wrap-s</use></wrap-s>
|
||||||
|
<wrap-t><use>texture[1]/wrap-t</use></wrap-t>
|
||||||
|
<internal-format><use>texture[1]/internal-format</use></internal-format>
|
||||||
</texture-unit>
|
</texture-unit>
|
||||||
<!--<vertex-program-two-side>
|
<!--<vertex-program-two-side>
|
||||||
<use>vertex-program-two-side</use>
|
<use>vertex-program-two-side</use>
|
||||||
|
@ -108,6 +119,18 @@
|
||||||
<type>sampler-2d</type>
|
<type>sampler-2d</type>
|
||||||
<value type="int">0</value>
|
<value type="int">0</value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>structure_texture</name>
|
||||||
|
<type>sampler-2d</type>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>use_overlay</name>
|
||||||
|
<type>bool</type>
|
||||||
|
<value>
|
||||||
|
<use>use-overlay-textures</use>
|
||||||
|
</value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>colorMode</name>
|
<name>colorMode</name>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
|
|
@ -14,6 +14,14 @@
|
||||||
<wrap-t>repeat</wrap-t>
|
<wrap-t>repeat</wrap-t>
|
||||||
<internal-format>normalized</internal-format>
|
<internal-format>normalized</internal-format>
|
||||||
</texture>
|
</texture>
|
||||||
|
<texture n="2">
|
||||||
|
<image>Textures/Terrain/grain_texture.png</image>
|
||||||
|
<type>2d</type>
|
||||||
|
<filter>linear-mipmap-linear</filter>
|
||||||
|
<wrap-s>repeat</wrap-s>
|
||||||
|
<wrap-t>repeat</wrap-t>
|
||||||
|
<internal-format>normalized</internal-format>
|
||||||
|
</texture>
|
||||||
<vertex-program-two-side type="bool">false</vertex-program-two-side>
|
<vertex-program-two-side type="bool">false</vertex-program-two-side>
|
||||||
<material>
|
<material>
|
||||||
<color-mode-uniform>1</color-mode-uniform>
|
<color-mode-uniform>1</color-mode-uniform>
|
||||||
|
@ -22,6 +30,7 @@
|
||||||
<visibility><use>/environment/visibility-m</use></visibility>
|
<visibility><use>/environment/visibility-m</use></visibility>
|
||||||
<use-clouds><use>/earthview/cloudsphere-flag</use></use-clouds>
|
<use-clouds><use>/earthview/cloudsphere-flag</use></use-clouds>
|
||||||
<use-cloud-shadows><use>/earthview/cloud-shadow-flag</use></use-cloud-shadows>
|
<use-cloud-shadows><use>/earthview/cloud-shadow-flag</use></use-cloud-shadows>
|
||||||
|
<use-overlay-textures><use>/earthview/overlay-texture-flag</use></use-overlay-textures>
|
||||||
</parameters>
|
</parameters>
|
||||||
<generate>
|
<generate>
|
||||||
<tangent type="int">6</tangent>
|
<tangent type="int">6</tangent>
|
||||||
|
@ -96,6 +105,15 @@
|
||||||
<wrap-t><use>texture[1]/wrap-t</use></wrap-t>
|
<wrap-t><use>texture[1]/wrap-t</use></wrap-t>
|
||||||
<internal-format><use>texture[1]/internal-format</use></internal-format>
|
<internal-format><use>texture[1]/internal-format</use></internal-format>
|
||||||
</texture-unit>
|
</texture-unit>
|
||||||
|
<texture-unit>
|
||||||
|
<unit>2</unit>
|
||||||
|
<image><use>texture[2]/image</use></image>
|
||||||
|
<type><use>texture[2]/type</use></type>
|
||||||
|
<filter><use>texture[2]/filter</use></filter>
|
||||||
|
<wrap-s><use>texture[2]/wrap-s</use></wrap-s>
|
||||||
|
<wrap-t><use>texture[2]/wrap-t</use></wrap-t>
|
||||||
|
<internal-format><use>texture[2]/internal-format</use></internal-format>
|
||||||
|
</texture-unit>
|
||||||
|
|
||||||
<program>
|
<program>
|
||||||
<vertex-shader>Shaders/planet.vert</vertex-shader>
|
<vertex-shader>Shaders/planet.vert</vertex-shader>
|
||||||
|
@ -118,6 +136,11 @@
|
||||||
<type>sampler-2d</type>
|
<type>sampler-2d</type>
|
||||||
<value type="int">1</value>
|
<value type="int">1</value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>grain_texture</name>
|
||||||
|
<type>sampler-2d</type>
|
||||||
|
<value type="int">2</value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>colorMode</name>
|
<name>colorMode</name>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
|
@ -139,6 +162,13 @@
|
||||||
<use>use-clouds</use>
|
<use>use-clouds</use>
|
||||||
</value>
|
</value>
|
||||||
</uniform>
|
</uniform>
|
||||||
|
<uniform>
|
||||||
|
<name>use_overlay</name>
|
||||||
|
<type>bool</type>
|
||||||
|
<value>
|
||||||
|
<use>use-overlay-textures</use>
|
||||||
|
</value>
|
||||||
|
</uniform>
|
||||||
<uniform>
|
<uniform>
|
||||||
<name>use_cloud_shadows</name>
|
<name>use_cloud_shadows</name>
|
||||||
<type>bool</type>
|
<type>bool</type>
|
||||||
|
|
BIN
Models/Astro/cloud_structure.png
Normal file
BIN
Models/Astro/cloud_structure.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 1,013 KiB |
|
@ -8,9 +8,10 @@ varying vec3 normal;
|
||||||
varying vec3 ecViewDir;
|
varying vec3 ecViewDir;
|
||||||
varying vec3 VTangent;
|
varying vec3 VTangent;
|
||||||
|
|
||||||
|
uniform bool use_overlay;
|
||||||
|
|
||||||
uniform sampler2D texture;
|
uniform sampler2D texture;
|
||||||
|
uniform sampler2D structure_texture;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +29,7 @@ void main()
|
||||||
|
|
||||||
vec3 halfVector = normalize(normalize(lightDir) + normalize(ecViewDir));
|
vec3 halfVector = normalize(normalize(lightDir) + normalize(ecViewDir));
|
||||||
vec4 texel;
|
vec4 texel;
|
||||||
|
vec4 structureTexel;
|
||||||
|
|
||||||
vec4 fragColor;
|
vec4 fragColor;
|
||||||
vec4 specular = vec4(0.0);
|
vec4 specular = vec4(0.0);
|
||||||
|
@ -40,6 +42,7 @@ void main()
|
||||||
|
|
||||||
vec3 light_specular = vec3 (1.0, 1.0, 1.0);
|
vec3 light_specular = vec3 (1.0, 1.0, 1.0);
|
||||||
NdotL = dot(n, lightDir);
|
NdotL = dot(n, lightDir);
|
||||||
|
NdotL = smoothstep(-0.2,0.2,NdotL);
|
||||||
|
|
||||||
float intensity = length(diffuse_term);
|
float intensity = length(diffuse_term);
|
||||||
vec4 dawn = intensity * normalize (vec4 (1.0,0.4,0.4,1.0));
|
vec4 dawn = intensity * normalize (vec4 (1.0,0.4,0.4,1.0));
|
||||||
|
@ -60,6 +63,9 @@ void main()
|
||||||
// is closer to what the OpenGL fixed function pipeline does.
|
// is closer to what the OpenGL fixed function pipeline does.
|
||||||
color = clamp(color, 0.0, 1.0);
|
color = clamp(color, 0.0, 1.0);
|
||||||
texel = texture2D(texture, gl_TexCoord[0].st);
|
texel = texture2D(texture, gl_TexCoord[0].st);
|
||||||
|
structureTexel = texture2D(structure_texture, 20.0 * gl_TexCoord[0].st);
|
||||||
|
if (use_overlay) {texel = vec4(structureTexel.rgb, texel.a * structureTexel.a);}
|
||||||
|
|
||||||
fragColor = color * texel + specular;
|
fragColor = color * texel + specular;
|
||||||
|
|
||||||
gl_FragColor = fragColor;
|
gl_FragColor = fragColor;
|
||||||
|
|
|
@ -11,8 +11,10 @@ varying vec3 VTangent;
|
||||||
uniform float visibility;
|
uniform float visibility;
|
||||||
uniform bool use_clouds;
|
uniform bool use_clouds;
|
||||||
uniform bool use_cloud_shadows;
|
uniform bool use_cloud_shadows;
|
||||||
|
uniform bool use_overlay;
|
||||||
uniform sampler2D texture;
|
uniform sampler2D texture;
|
||||||
uniform sampler2D shadowtex;
|
uniform sampler2D shadowtex;
|
||||||
|
uniform sampler2D grain_texture;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,10 +29,11 @@ void main()
|
||||||
float NdotL, NdotHV;
|
float NdotL, NdotHV;
|
||||||
vec4 color = gl_Color;
|
vec4 color = gl_Color;
|
||||||
vec3 lightDir = gl_LightSource[0].position.xyz;
|
vec3 lightDir = gl_LightSource[0].position.xyz;
|
||||||
//vec3 halfVector = gl_LightSource[0].halfVector.xyz;
|
|
||||||
vec3 halfVector = normalize(normalize(lightDir) + normalize(ecViewDir));
|
vec3 halfVector = normalize(normalize(lightDir) + normalize(ecViewDir));
|
||||||
vec4 texel;
|
vec4 texel;
|
||||||
vec4 shadowTexel;
|
vec4 shadowTexel;
|
||||||
|
vec4 grainTexel;
|
||||||
vec4 fragColor;
|
vec4 fragColor;
|
||||||
vec4 specular = vec4(0.0);
|
vec4 specular = vec4(0.0);
|
||||||
|
|
||||||
|
@ -51,9 +54,15 @@ void main()
|
||||||
{shadowTexel = vec4 (0.0,0.0,0.0,0.0);}
|
{shadowTexel = vec4 (0.0,0.0,0.0,0.0);}
|
||||||
|
|
||||||
texel = texture2D(texture, gl_TexCoord[0].st);
|
texel = texture2D(texture, gl_TexCoord[0].st);
|
||||||
|
grainTexel = texture2D(grain_texture, gl_TexCoord[0].st * 40.0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vec3 light_specular = vec3 (1.0, 1.0, 1.0);
|
vec3 light_specular = vec3 (1.0, 1.0, 1.0);
|
||||||
NdotL = dot(n, lightDir);
|
NdotL = dot(n, lightDir);
|
||||||
|
// due to atmosphere scattering, we should make this harder
|
||||||
|
NdotL = smoothstep(-0.2,0.2,NdotL);
|
||||||
|
|
||||||
float intensity = length(diffuse_term);
|
float intensity = length(diffuse_term);
|
||||||
vec4 dawn = intensity * normalize (vec4 (1.0,0.4,0.4,1.0));
|
vec4 dawn = intensity * normalize (vec4 (1.0,0.4,0.4,1.0));
|
||||||
|
@ -62,7 +71,10 @@ void main()
|
||||||
intensity = length(light_specular);
|
intensity = length(light_specular);
|
||||||
light_specular = mix(dawn.rgb, light_specular, smoothstep(0.0, 0.2, NdotL));
|
light_specular = mix(dawn.rgb, light_specular, smoothstep(0.0, 0.2, NdotL));
|
||||||
|
|
||||||
float specular_enhancement = 4.0 * (1.0 -smoothstep(0.0, 0.1,length(texel.rgb - vec3 (0.007,0.019, 0.078))));
|
float oceanness = smoothstep(0.0, 0.1,length(texel.rgb - vec3 (0.007,0.019, 0.078)));
|
||||||
|
float specular_enhancement = 4.0 * (1.0 - oceanness);
|
||||||
|
|
||||||
|
if (use_overlay) {texel.rgb = mix(texel.rgb, grainTexel.rgb, 0.4* grainTexel.a * oceanness);}
|
||||||
|
|
||||||
if (NdotL > 0.0) {
|
if (NdotL > 0.0) {
|
||||||
color += diffuse_term * NdotL * (1.0-shadowTexel.a);
|
color += diffuse_term * NdotL * (1.0-shadowTexel.a);
|
||||||
|
@ -85,7 +97,7 @@ void main()
|
||||||
float angle = dot(normalize(ecViewDir), normalize(normal));
|
float angle = dot(normalize(ecViewDir), normalize(normal));
|
||||||
float distance_through_atmosphere = 10.0 / ((angle)+0.001);
|
float distance_through_atmosphere = 10.0 / ((angle)+0.001);
|
||||||
|
|
||||||
vec4 fogColor = vec4 (0.83,0.9,1.0,1.0) * clamp(length(diffuse_term.rgb * clamp(NdotL,0.01, 0.99)),0.0,1.0);
|
vec4 fogColor = vec4 (0.83,0.9,1.0,1.0) * clamp(length(diffuse_term.rgb/1.73 * clamp(NdotL,0.01, 0.99)),0.0,1.0);
|
||||||
//float visibility = 80.0;
|
//float visibility = 80.0;
|
||||||
float fogFactor = exp(-distance_through_atmosphere/(visibility/1000.0));
|
float fogFactor = exp(-distance_through_atmosphere/(visibility/1000.0));
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ void main()
|
||||||
ambient_color = gl_FrontMaterial.ambient;
|
ambient_color = gl_FrontMaterial.ambient;
|
||||||
}
|
}
|
||||||
vec4 light_diffuse = vec4 (1.0,1.0,1.0,1.0);
|
vec4 light_diffuse = vec4 (1.0,1.0,1.0,1.0);
|
||||||
vec4 light_ambient = vec4 (0.05, 0.05, 0.05, 1.0);
|
vec4 light_ambient = vec4 (0.03, 0.03, 0.03, 1.0);
|
||||||
|
|
||||||
diffuse_term = diffuse_color * light_diffuse;//gl_LightSource[0].diffuse;
|
diffuse_term = diffuse_color * light_diffuse;//gl_LightSource[0].diffuse;
|
||||||
vec4 constant_term = gl_FrontMaterial.emission + ambient_color *
|
vec4 constant_term = gl_FrontMaterial.emission + ambient_color *
|
||||||
|
|
|
@ -224,7 +224,7 @@ float minLightIntensity = min(0.2,0.16 * lightArg + 0.5);
|
||||||
vec3 minLight = minLightIntensity * vec3 (0.2, 0.3, 0.4);
|
vec3 minLight = minLightIntensity * vec3 (0.2, 0.3, 0.4);
|
||||||
|
|
||||||
// this is for the bare Rayleigh and Mie sky, highly altitude dependent
|
// this is for the bare Rayleigh and Mie sky, highly altitude dependent
|
||||||
color.rgb = max(color.rgb, minLight.rgb * (1.0- alt/100000.0) * (1.0 - costheta));
|
color.rgb = max(color.rgb, minLight.rgb * (1.0- min(alt/100000.0,1.0)) * (1.0 - costheta));
|
||||||
|
|
||||||
// this is for the terrain drawn
|
// this is for the terrain drawn
|
||||||
terrainHazeColor = max(terrainHazeColor.rgb, minLight.rgb);
|
terrainHazeColor = max(terrainHazeColor.rgb, minLight.rgb);
|
||||||
|
|
|
@ -85,6 +85,16 @@
|
||||||
<command>dialog-apply</command>
|
<command>dialog-apply</command>
|
||||||
</binding>
|
</binding>
|
||||||
</checkbox>
|
</checkbox>
|
||||||
|
<checkbox>
|
||||||
|
<row>3</row>
|
||||||
|
<col>1</col>
|
||||||
|
<label> Overlay textures</label>
|
||||||
|
<halign>left</halign>
|
||||||
|
<property>/earthview/overlay-texture-flag</property>
|
||||||
|
<binding>
|
||||||
|
<command>dialog-apply</command>
|
||||||
|
</binding>
|
||||||
|
</checkbox>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -1259,8 +1259,9 @@ Started September 2000 by David Megginson, david@megginson.com
|
||||||
</scenery>
|
</scenery>
|
||||||
<earthview>
|
<earthview>
|
||||||
<cloudsphere-flag type="bool" userarchive="y">true</cloudsphere-flag>
|
<cloudsphere-flag type="bool" userarchive="y">true</cloudsphere-flag>
|
||||||
<cloud-shadow-flag type="bool" userarchive="y"/>
|
<cloud-shadow-flag type="bool" userarchive="y"/>true</cloud-shadow-flag>
|
||||||
<mrd-flag type="bool" userarchive="y"/>
|
<overlay-texture-flag type="bool" userarchive="y">true</overlay-texture-flag>
|
||||||
|
<mrd-flag type="bool" userarchive="y"/>true</mrd-flag>
|
||||||
<cloudsphere-angle type="double" userarchive="y">0.0</cloudsphere-angle>
|
<cloudsphere-angle type="double" userarchive="y">0.0</cloudsphere-angle>
|
||||||
</earthview>
|
</earthview>
|
||||||
</PropertyList>
|
</PropertyList>
|
||||||
|
|
Loading…
Add table
Reference in a new issue