diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 2 | ||||
| -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 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolwlsky.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llenvironment.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llpaneleditsky.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml | 9 | 
9 files changed, 68 insertions, 60 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e32eeb4779..8f4faf51da 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10165,7 +10165,7 @@      <key>Type</key>      <string>Boolean</string>      <key>Value</key> -    <integer>1</integer> +    <integer>0</integer>    </map>    <key>RenderUseTriStrips</key>    <map> 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;  } diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 8a2941e20a..3b3d67243a 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -93,6 +93,10 @@ void LLDrawPoolWLSky::beginRenderPass( S32 pass )  void LLDrawPoolWLSky::endRenderPass( S32 pass )  { +    sky_shader   = nullptr; +    cloud_shader = nullptr; +    sun_shader   = nullptr; +    moon_shader  = nullptr;  }  void LLDrawPoolWLSky::beginDeferredPass(S32 pass) @@ -113,7 +117,10 @@ void LLDrawPoolWLSky::beginDeferredPass(S32 pass)  void LLDrawPoolWLSky::endDeferredPass(S32 pass)  { - +    sky_shader   = nullptr; +    cloud_shader = nullptr; +    sun_shader   = nullptr; +    moon_shader  = nullptr;  }  void LLDrawPoolWLSky::renderFsSky(const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader * shader) const @@ -167,8 +174,8 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca          sky_shader->bindTexture(LLShaderMgr::ILLUMINANCE_TEX, gAtmosphere->getIlluminance());          LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky(); -        LLVector4 sun_dir = LLEnvironment::instance().getClampedSunNorm(); -        LLVector4 moon_dir = LLEnvironment::instance().getClampedMoonNorm(); +        LLVector3 sun_dir  = LLEnvironment::instance().getSunDirection(); +        LLVector3 moon_dir = LLEnvironment::instance().getMoonDirection();          F32 sunSize = (float)cosf(psky->getSunArcRadians());          sky_shader->uniform1f(LLShaderMgr::SUN_SIZE, sunSize); @@ -182,13 +189,6 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca  	    sky_shader->uniformMatrix4fv(LLShaderMgr::INVERSE_PROJECTION_MATRIX, 1, FALSE, inv_proj.m); -        /* clouds are rendered along with sky in adv atmo -        if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS) && gSky.mVOSkyp->getCloudNoiseTex()) -        { -            sky_shader->bindTexture(LLShaderMgr::CLOUD_NOISE_MAP, gSky.mVOSkyp->getCloudNoiseTex()); -            sky_shader->bindTexture(LLShaderMgr::CLOUD_NOISE_MAP_NEXT, gSky.mVOSkyp->getCloudNoiseTexNext()); -        }*/ -          sky_shader->uniform3f(sCamPosLocal, camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]);          renderFsSky(camPosLocal, camHeightLocal, sky_shader); diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 3a1aec6319..e437003520 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -1633,12 +1633,15 @@ void LLEnvironment::DayInstance::setSky(const LLSettingsSky::ptr_t &psky)      mSky->update();      mBlenderSky.reset(); +#if 0      if (gAtmosphere)      {          AtmosphericModelSettings settings;          LLEnvironment::getAtmosphericModelSettings(settings, psky);          gAtmosphere->configureAtmosphericModel(settings);      } +#endif +  }  void LLEnvironment::DayInstance::setWater(const LLSettingsWater::ptr_t &pwater) diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index ed60dd4303..7d20a27813 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -62,6 +62,8 @@  #include "llenvironment.h"  #include "lltrans.h" +extern LLControlGroup gSavedSettings; +  //=========================================================================  namespace {      const std::string track_tabs[] = { @@ -821,10 +823,17 @@ void LLFloaterEditExtDayCycle::updateSkyTabs(const LLSettingsSkyPtr_t &p_sky)      {          panel->setSky(p_sky);      } -    panel = dynamic_cast<LLPanelSettingsSkyDensityTab*>(tab_container->getChildView("advanced_atmo_panel")); +    panel = dynamic_cast<LLPanelSettingsSkyDensityTab*>(tab_container->getChildView("density_panel"));      if (panel)      { -        panel->setSky(p_sky); +        if (gSavedSettings.getBOOL("RenderUseAdvancedAtmospherics")) +        { +            panel->setSky(p_sky); +        } +        else +        { +            panel->setVisible(false); +        }      }  } diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index d38098c0a6..1104717dc1 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -55,6 +55,8 @@  #include "llsettingsvo.h"  #include "llinventorymodel.h" +extern LLControlGroup gSavedSettings; +  namespace  {      const std::string FIELD_SETTINGS_NAME("settings_name"); @@ -599,12 +601,14 @@ BOOL LLFloaterFixedEnvironmentSky::postBuild()      panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });      mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false)); -    panel = new LLPanelSettingsSkyDensityTab; -    panel->buildFromFile("panel_settings_sky_density.xml"); -    panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings)); -    panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); }); -    mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false)); - +    if (gSavedSettings.getBOOL("RenderUseAdvancedAtmospherics")) +    { +        panel = new LLPanelSettingsSkyDensityTab; +        panel->buildFromFile("panel_settings_sky_density.xml"); +        panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings)); +        panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); }); +        mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false)); +    }      return TRUE;  } diff --git a/indra/newview/llpaneleditsky.cpp b/indra/newview/llpaneleditsky.cpp index 451e15c73d..a13efbc54b 100644 --- a/indra/newview/llpaneleditsky.cpp +++ b/indra/newview/llpaneleditsky.cpp @@ -37,8 +37,6 @@  #include "llenvironment.h"  #include "llatmosphere.h" -#pragma optimize("", off) -  namespace  {         // Atmosphere Tab diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml index c8843db28b..7a5c9cb63f 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml @@ -520,6 +520,15 @@ Select a key frame from the timeline above to edit settings.                                  left_delta="0"                                  top_pad="5"                                  name="moon_panel" /> +                        <panel +                                border="true" +                                class="panel_settings_density" +                                filename="panel_settings_sky_density.xml" +                                label="Density" +                                layout="topleft" +                                left_delta="0" +                                top_pad="5" +                                name="density_panel" />                      </tab_container>                  </layout_panel>                      </layout_stack> | 
