summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/settings.xml2
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/skyF.glsl49
-rw-r--r--indra/newview/app_settings/shaders/class3/deferred/skyV.glsl14
-rw-r--r--indra/newview/lldrawpoolwlsky.cpp20
-rw-r--r--indra/newview/llenvironment.cpp3
-rw-r--r--indra/newview/llfloatereditextdaycycle.cpp13
-rw-r--r--indra/newview/llfloaterfixedenvironment.cpp16
-rw-r--r--indra/newview/llpaneleditsky.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml9
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>