diff options
Diffstat (limited to 'indra/newview/app_settings/shaders')
| -rw-r--r-- | indra/newview/app_settings/shaders/class3/deferred/skyF.glsl | 49 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class3/deferred/skyV.glsl | 14 | 
2 files changed, 24 insertions, 39 deletions
| diff --git a/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl index 01c873584f..ef94190d45 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl @@ -24,17 +24,19 @@   */  #ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; +out vec4 frag_data[4];  #else -#define frag_color gl_FragColor +#define frag_data gl_FragData  #endif -in vec3 view_pos; -in vec3 view_dir; +VARYING vec2 vary_frag; -uniform vec3 cameraPosLocal; +uniform vec3 camPosLocal;  uniform vec3 sun_dir;  uniform float sun_size; +uniform float far_z; +uniform mat4 inv_proj; +uniform mat4 inv_modelview;  uniform sampler2D transmittance_texture;  uniform sampler3D scattering_texture; @@ -44,42 +46,33 @@ uniform sampler2D irradiance_texture;  vec3 GetSolarLuminance();  vec3 GetSkyLuminance(vec3 camPos, vec3 view_dir, float shadow_length, vec3 dir, out vec3 transmittance);  vec3 GetSkyLuminanceToPoint(vec3 camPos, vec3 pos, float shadow_length, vec3 dir, out vec3 transmittance); -vec3 GetSunAndSkyIlluminance(vec3 pos, vec3 norm, vec3 dir, out vec3 sky_irradiance);  void main()  { -    vec3 view_direction = normalize(view_dir); +    vec3 pos      = vec3((vary_frag * 2.0) - vec2(1.0, 1.0), 0.0); +    vec4 view_pos = (inv_proj * vec4(pos, 1.0f)); +    view_pos /= view_pos.w; +    vec3 view_ray = (inv_modelview * vec4(view_pos.xyz, 0.0f)).xyz; -    vec3 sun_direction = sun_dir; +    vec3 view_direction = normalize(view_ray); +    vec3 sun_direction = normalize(sun_dir); -    vec3 camPos = cameraPosLocal + vec3(0, 0, 6360.0f); +    vec3 camPos = (camPosLocal / 1000.0f) + vec3(0, 0, 6360.0f);      vec3 transmittance; -    vec3 sky_illum; - -    vec3 radiance_sun = GetSkyLuminance(camPos, view_direction, 0.0f, sun_direction, transmittance); -    vec3 radiance2_sun = GetSunAndSkyIlluminance(camPos, view_direction, sun_direction, sky_illum); - -    radiance_sun *= transmittance; - +    vec3 radiance_sun  = GetSkyLuminance(camPos, view_direction, 0.0f, sun_direction, transmittance);      vec3 solar_luminance = transmittance * GetSolarLuminance();      // If the view ray intersects the Sun, add the Sun radiance.      if (dot(view_direction, sun_direction) >= sun_size)      { -        radiance_sun = radiance_sun + solar_luminance; +        radiance_sun += solar_luminance;      } -    vec3 color = radiance_sun; -     -    color = vec3(1.0) - exp(-color * 0.0001); - -    //float d = dot(view_direction, sun_direction); -    //frag_color.rgb = vec3(d, d >= sun_size ? 1.0f : 0.0f, 0.0f); - -    frag_color.rgb = color; -    //frag_color.rgb = vec3(dot(view_direction, sun_direction) > 0.95f ? 1.0 : 0.0, 0,0); -    //frag_color.rgb = normalize(view_pos); +    vec3 color = vec3(1.0) - exp(-radiance_sun * 0.0001); +    color = pow(color, vec3(1.0 / 2.2)); -    frag_color.a = 1.0; +    frag_data[0] = vec4(color, 1.0); +    frag_data[1] = vec4(0.0); +    frag_data[2] = vec4(0.0, 1.0, 0.0, 1.0);  } diff --git a/indra/newview/app_settings/shaders/class3/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class3/deferred/skyV.glsl index cf3eb658fc..90217aed02 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/skyV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/skyV.glsl @@ -30,22 +30,14 @@ uniform mat4 inv_proj;  uniform mat4 inv_modelview;  ATTRIBUTE vec3 position; +ATTRIBUTE vec2 texcoord0; -// Inputs -uniform vec3 camPosLocal; - -out vec3 view_pos; -out vec3 view_dir; +VARYING vec2 vary_frag;  void main()  {      // pass through untransformed fullscreen pos (clipspace)  	gl_Position = vec4(position.xyz, 1.0); - -    view_pos = (inv_proj * vec4(position, 1.0f)).xyz; - -	// this will be normalized in the frag shader... -	//view_dir = (inv_modelview * view_pos).xyz; -    view_dir = view_pos - camPosLocal; +    vary_frag = texcoord0;  } | 
