diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
4 files changed, 45 insertions, 39 deletions
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index e6bdaf265e..210ecce8db 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -68,7 +68,6 @@ void waterClip(vec3 pos);  vec3 srgb_to_linear(vec3 c);  vec3 linear_to_srgb(vec3 c); -vec2 encode_normal (vec3 n);  vec4 applySkyAndWaterFog(vec3 pos, vec3 additive, vec3 atten, vec4 color);  void calcAtmosphericVarsLinear(vec3 inPositionEye, vec3 norm, vec3 light_dir, out vec3 sunlit, out vec3 amblit, out vec3 atten, out vec3 additive); @@ -78,6 +77,8 @@ float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);  float getAmbientClamp(); +void mirrorClip(vec3 pos); +  void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear); @@ -167,6 +168,8 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec  void main()  { +    mirrorClip(vary_position); +      vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;      vec4 pos = vec4(vary_position, 1.0); diff --git a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl index 34d86b6147..059c2a64ce 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl @@ -1,24 +1,24 @@ -/** +/**    * @file class1\deferred\pbralphaF.glsl   *   * $LicenseInfo:firstyear=2022&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2022, Linden Research, Inc. - * + *    * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - * + *    * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - * + *    * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * + *    * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ @@ -87,9 +87,10 @@ vec4 applySkyAndWaterFog(vec3 pos, vec3 additive, vec3 atten, vec4 color);  void calcHalfVectors(vec3 lv, vec3 n, vec3 v, out vec3 h, out vec3 l, out float nh, out float nl, out float nv, out float vh, out float lightDist);  float calcLegacyDistanceAttenuation(float distance, float falloff);  float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen); -void sampleReflectionProbes(inout vec3 ambenv, inout vec3 glossenv, +void sampleReflectionProbes(inout vec3 ambenv, inout vec3 glossenv,           vec2 tc, vec3 pos, vec3 norm, float glossiness, bool transparent, vec3 amblit_linear); +void mirrorClip(vec3 pos);  void waterClip(vec3 pos);  void calcDiffuseSpecular(vec3 baseColor, float metallic, inout vec3 diffuseColor, inout vec3 specularColor); @@ -110,15 +111,15 @@ vec3 pbrBaseLight(vec3 diffuseColor,                    vec3 additive,                    vec3 atten); -vec3 pbrPunctual(vec3 diffuseColor, vec3 specularColor, -                    float perceptualRoughness, +vec3 pbrPunctual(vec3 diffuseColor, vec3 specularColor,  +                    float perceptualRoughness,                       float metallic,                      vec3 n, // normal                      vec3 v, // surface point to camera                      vec3 l); //surface point to light -vec3 calcPointLightOrSpotLight(vec3 diffuseColor, vec3 specularColor, -                    float perceptualRoughness, +vec3 calcPointLightOrSpotLight(vec3 diffuseColor, vec3 specularColor,  +                    float perceptualRoughness,                       float metallic,                      vec3 n, // normal                      vec3 p, // pixel position @@ -156,6 +157,8 @@ vec3 calcPointLightOrSpotLight(vec3 diffuseColor, vec3 specularColor,  void main()  { +    mirrorClip(vary_position); +      vec3 color = vec3(0,0,0);      vec3  light_dir   = (sun_up_factor == 1) ? sun_dir : moon_dir; @@ -178,7 +181,7 @@ void main()      float sign = vary_sign;      vec3 vN = vary_normal;      vec3 vT = vary_tangent.xyz; - +          vec3 vB = sign * cross(vN, vT);      vec3 norm = normalize( vNt.x * vT + vNt.y * vB + vNt.z * vN ); @@ -215,7 +218,7 @@ void main()      vec3  irradiance = vec3(0);      vec3  radiance  = vec3(0);      sampleReflectionProbes(irradiance, radiance, vary_position.xy*0.5+0.5, pos.xyz, norm.xyz, gloss, true, amblit); - +          vec3 diffuseColor;      vec3 specularColor;      calcDiffuseSpecular(col.rgb, metallic, diffuseColor, specularColor); @@ -242,7 +245,7 @@ void main()      color.rgb = applySkyAndWaterFog(pos.xyz, additive, atten, vec4(color, 1.0)).rgb;      float a = basecolor.a*vertex_color.a; - +          frag_color = max(vec4(color.rgb,a), vec4(0));  } @@ -292,7 +295,7 @@ void main()      // emissiveMap here is a vanilla RGB texture encoded as sRGB, manually convert to linear      colorEmissive *= srgb_to_linear(texture(emissiveMap, emissive_texcoord.xy).rgb); - +          float a = basecolor.a*vertex_color.a;      color += colorEmissive; diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 10bfe2c5d5..1bd5f5a718 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -1,24 +1,24 @@ -/** +/**    * @file sunLightF.glsl   *   * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc. - * + *    * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - * + *    * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - * + *    * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * + *    * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ @@ -35,23 +35,23 @@ in vec2 vary_fragcoord;  uniform vec3 sun_dir;  uniform float shadow_bias; -vec3 getNorm(vec2 pos_screen); +vec4 getNorm(vec2 pos_screen);  vec4 getPosition(vec2 pos_screen);  float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);  float sampleSpotShadow(vec3 pos, vec3 norm, int index, vec2 pos_screen); -void main() +void main()   {      vec2 pos_screen = vary_fragcoord.xy;      vec4 pos        = getPosition(pos_screen); -    vec3 norm       = getNorm(pos_screen); +    vec4 norm       = getNorm(pos_screen);      vec4 col; -    col.r = sampleDirectionalShadow(pos.xyz, norm, pos_screen); +    col.r = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen);      col.g = 1.0f; -    col.b = sampleSpotShadow(pos.xyz, norm, 0, pos_screen); -    col.a = sampleSpotShadow(pos.xyz, norm, 1, pos_screen); +    col.b = sampleSpotShadow(pos.xyz, norm.xyz, 0, pos_screen);  +    col.a = sampleSpotShadow(pos.xyz, norm.xyz, 1, pos_screen);      frag_color = clamp(col, vec4(0), vec4(1));  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 2f1819bff7..e0333b6044 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -1,27 +1,27 @@ -/** +/**    * @file class2/deferred/sunLightSSAOF.glsl   * $LicenseInfo:firstyear=2007&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2007, Linden Research, Inc. - * + *    * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - * + *    * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - * + *    * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - * + *    * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ - +   /*[EXTRA_CODE_HERE]*/  out vec4 frag_color; @@ -32,23 +32,23 @@ out vec4 frag_color;  in vec2 vary_fragcoord;  vec4 getPosition(vec2 pos_screen); -vec3 getNorm(vec2 pos_screen); +vec4 getNorm(vec2 pos_screen);  float sampleDirectionalShadow(vec3 shadow_pos, vec3 norm, vec2 pos_screen);  float sampleSpotShadow(vec3 shadow_pos, vec3 norm, int index, vec2 pos_screen);  float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen); -void main() +void main()   {      vec2 pos_screen = vary_fragcoord.xy;      vec4 pos  = getPosition(pos_screen); -    vec3 norm = getNorm(pos_screen); +    vec4 norm = getNorm(pos_screen);      vec4 col; -    col.r = sampleDirectionalShadow(pos.xyz, norm, pos_screen); -    col.g = calcAmbientOcclusion(pos, norm, pos_screen); -    col.b = sampleSpotShadow(pos.xyz, norm, 0, pos_screen); -    col.a = sampleSpotShadow(pos.xyz, norm, 1, pos_screen); +    col.r = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen); +    col.g = calcAmbientOcclusion(pos, norm.xyz, pos_screen); +    col.b = sampleSpotShadow(pos.xyz, norm.xyz, 0, pos_screen); +    col.a = sampleSpotShadow(pos.xyz, norm.xyz, 1, pos_screen);      frag_color = clamp(col, vec4(0), vec4(1));  }  | 
