Skip to content
Snippets Groups Projects
Commit 23855d1d authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

dos2unix

parent 2f1124cc
No related branches found
No related tags found
No related merge requests found
Showing
with 457 additions and 457 deletions
/** /**
* @file materialF.glsl * @file materialF.glsl
* *
* $LicenseInfo:firstyear=2007&license=viewerlgpl$ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code * Second Life Viewer Source Code
* Copyright (C) 2007, Linden Research, Inc. * Copyright (C) 2007, Linden Research, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; * License as published by the Free Software Foundation;
* version 2.1 of the License only. * version 2.1 of the License only.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$ * $/LicenseInfo$
*/ */
/*[EXTRA_CODE_HERE]*/ /*[EXTRA_CODE_HERE]*/
//class1/deferred/materialF.glsl //class1/deferred/materialF.glsl
// This shader is used for both writing opaque/masked content to the gbuffer and writing blended content to the framebuffer during the alpha pass. // This shader is used for both writing opaque/masked content to the gbuffer and writing blended content to the framebuffer during the alpha pass.
#define DIFFUSE_ALPHA_MODE_NONE 0 #define DIFFUSE_ALPHA_MODE_NONE 0
#define DIFFUSE_ALPHA_MODE_BLEND 1 #define DIFFUSE_ALPHA_MODE_BLEND 1
#define DIFFUSE_ALPHA_MODE_MASK 2 #define DIFFUSE_ALPHA_MODE_MASK 2
#define DIFFUSE_ALPHA_MODE_EMISSIVE 3 #define DIFFUSE_ALPHA_MODE_EMISSIVE 3
uniform float emissive_brightness; // fullbright flag, 1.0 == fullbright, 0.0 otherwise uniform float emissive_brightness; // fullbright flag, 1.0 == fullbright, 0.0 otherwise
uniform int sun_up_factor; uniform int sun_up_factor;
#ifdef WATER_FOG #ifdef WATER_FOG
vec4 applyWaterFogView(vec3 pos, vec4 color); vec4 applyWaterFogView(vec3 pos, vec4 color);
#endif #endif
vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten); vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten);
vec3 scaleSoftClipFrag(vec3 l); vec3 scaleSoftClipFrag(vec3 l);
vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten); vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten);
vec3 fullbrightScaleSoftClip(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light);
void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao); void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao);
vec3 srgb_to_linear(vec3 cs); vec3 srgb_to_linear(vec3 cs);
vec3 linear_to_srgb(vec3 cs); vec3 linear_to_srgb(vec3 cs);
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)
#ifdef DEFINE_GL_FRAGCOLOR #ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color; out vec4 frag_color;
#else #else
#define frag_color gl_FragColor #define frag_color gl_FragColor
#endif #endif
#ifdef HAS_SUN_SHADOW #ifdef HAS_SUN_SHADOW
float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen); float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);
#endif #endif
uniform samplerCube environmentMap; uniform samplerCube environmentMap;
uniform sampler2D lightFunc; uniform sampler2D lightFunc;
// Inputs // Inputs
uniform vec4 morphFactor; uniform vec4 morphFactor;
uniform vec3 camPosLocal; uniform vec3 camPosLocal;
uniform mat3 env_mat; uniform mat3 env_mat;
uniform vec3 sun_dir; uniform vec3 sun_dir;
uniform vec3 moon_dir; uniform vec3 moon_dir;
VARYING vec2 vary_fragcoord; VARYING vec2 vary_fragcoord;
VARYING vec3 vary_position; VARYING vec3 vary_position;
uniform mat4 proj_mat; uniform mat4 proj_mat;
uniform mat4 inv_proj; uniform mat4 inv_proj;
uniform vec2 screen_res; uniform vec2 screen_res;
uniform vec4 light_position[8]; uniform vec4 light_position[8];
uniform vec3 light_direction[8]; uniform vec3 light_direction[8];
uniform vec4 light_attenuation[8]; uniform vec4 light_attenuation[8];
uniform vec3 light_diffuse[8]; uniform vec3 light_diffuse[8];
float getAmbientClamp(); float getAmbientClamp();
vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare, float ambiance) vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare, float ambiance)
{ {
vec3 col = vec3(0); vec3 col = vec3(0);
//get light vector //get light vector
vec3 lv = lp.xyz - v; vec3 lv = lp.xyz - v;
//get distance //get distance
float dist = length(lv); float dist = length(lv);
float da = 1.0; float da = 1.0;
dist /= la; dist /= la;
if (dist > 0.0 && la > 0.0) if (dist > 0.0 && la > 0.0)
{ {
//normalize light vector //normalize light vector
lv = normalize(lv); lv = normalize(lv);
//distance attenuation //distance attenuation
float dist_atten = clamp(1.0 - (dist - 1.0*(1.0 - fa)) / fa, 0.0, 1.0); float dist_atten = clamp(1.0 - (dist - 1.0*(1.0 - fa)) / fa, 0.0, 1.0);
dist_atten *= dist_atten; dist_atten *= dist_atten;
dist_atten *= 2.0f; dist_atten *= 2.0f;
if (dist_atten <= 0.0) if (dist_atten <= 0.0)
{ {
return col; return col;
} }
// spotlight coefficient. // spotlight coefficient.
float spot = max(dot(-ln, lv), is_pointlight); float spot = max(dot(-ln, lv), is_pointlight);
da *= spot*spot; // GL_SPOT_EXPONENT=2 da *= spot*spot; // GL_SPOT_EXPONENT=2
//angular attenuation //angular attenuation
da *= dot(n, lv); da *= dot(n, lv);
float lit = 0.0f; float lit = 0.0f;
float amb_da = ambiance; float amb_da = ambiance;
if (da >= 0) if (da >= 0)
{ {
lit = max(da * dist_atten, 0.0); lit = max(da * dist_atten, 0.0);
col = lit * light_col * diffuse; col = lit * light_col * diffuse;
amb_da += (da*0.5 + 0.5) * ambiance; amb_da += (da*0.5 + 0.5) * ambiance;
} }
amb_da += (da*da*0.5 + 0.5) * ambiance; amb_da += (da*da*0.5 + 0.5) * ambiance;
amb_da *= dist_atten; amb_da *= dist_atten;
amb_da = min(amb_da, 1.0f - lit); amb_da = min(amb_da, 1.0f - lit);
// SL-10969 need to see why these are blown out // SL-10969 need to see why these are blown out
//col.rgb += amb_da * light_col * diffuse; //col.rgb += amb_da * light_col * diffuse;
if (spec.a > 0.0) if (spec.a > 0.0)
{ {
//vec3 ref = dot(pos+lv, norm); //vec3 ref = dot(pos+lv, norm);
vec3 h = normalize(lv + npos); vec3 h = normalize(lv + npos);
float nh = dot(n, h); float nh = dot(n, h);
float nv = dot(n, npos); float nv = dot(n, npos);
float vh = dot(npos, h); float vh = dot(npos, h);
float sa = nh; float sa = nh;
float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5;
float gtdenom = 2 * nh; float gtdenom = 2 * nh;
float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
if (nh > 0.0) if (nh > 0.0)
{ {
float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da);
vec3 speccol = lit*scol*light_col.rgb*spec.rgb; vec3 speccol = lit*scol*light_col.rgb*spec.rgb;
speccol = clamp(speccol, vec3(0), vec3(1)); speccol = clamp(speccol, vec3(0), vec3(1));
col += speccol; col += speccol;
float cur_glare = max(speccol.r, speccol.g); float cur_glare = max(speccol.r, speccol.g);
cur_glare = max(cur_glare, speccol.b); cur_glare = max(cur_glare, speccol.b);
glare = max(glare, speccol.r); glare = max(glare, speccol.r);
glare += max(cur_glare, 0.0); glare += max(cur_glare, 0.0);
} }
} }
} }
return max(col, vec3(0.0, 0.0, 0.0)); return max(col, vec3(0.0, 0.0, 0.0));
} }
#else #else
#ifdef DEFINE_GL_FRAGCOLOR #ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_data[3]; out vec4 frag_data[3];
#else #else
#define frag_data gl_FragData #define frag_data gl_FragData
#endif #endif
#endif #endif
uniform sampler2D diffuseMap; //always in sRGB space uniform sampler2D diffuseMap; //always in sRGB space
#ifdef HAS_NORMAL_MAP #ifdef HAS_NORMAL_MAP
uniform sampler2D bumpMap; uniform sampler2D bumpMap;
#endif #endif
#ifdef HAS_SPECULAR_MAP #ifdef HAS_SPECULAR_MAP
uniform sampler2D specularMap; uniform sampler2D specularMap;
VARYING vec2 vary_texcoord2; VARYING vec2 vary_texcoord2;
#endif #endif
uniform float env_intensity; uniform float env_intensity;
uniform vec4 specular_color; // specular color RGB and specular exponent (glossiness) in alpha uniform vec4 specular_color; // specular color RGB and specular exponent (glossiness) in alpha
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK)
uniform float minimum_alpha; uniform float minimum_alpha;
#endif #endif
#ifdef HAS_NORMAL_MAP #ifdef HAS_NORMAL_MAP
VARYING vec3 vary_mat0; VARYING vec3 vary_mat0;
VARYING vec3 vary_mat1; VARYING vec3 vary_mat1;
VARYING vec3 vary_mat2; VARYING vec3 vary_mat2;
VARYING vec2 vary_texcoord1; VARYING vec2 vary_texcoord1;
#else #else
VARYING vec3 vary_normal; VARYING vec3 vary_normal;
#endif #endif
VARYING vec4 vertex_color; VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0; VARYING vec2 vary_texcoord0;
vec2 encode_normal(vec3 n); vec2 encode_normal(vec3 n);
void main() void main()
{ {
vec2 pos_screen = vary_texcoord0.xy; vec2 pos_screen = vary_texcoord0.xy;
vec4 diffcol = texture2D(diffuseMap, vary_texcoord0.xy); vec4 diffcol = texture2D(diffuseMap, vary_texcoord0.xy);
diffcol.rgb *= vertex_color.rgb; diffcol.rgb *= vertex_color.rgb;
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK)
// Comparing floats cast from 8-bit values, produces acne right at the 8-bit transition points // Comparing floats cast from 8-bit values, produces acne right at the 8-bit transition points
float bias = 0.001953125; // 1/512, or half an 8-bit quantization float bias = 0.001953125; // 1/512, or half an 8-bit quantization
if (diffcol.a < minimum_alpha-bias) if (diffcol.a < minimum_alpha-bias)
{ {
discard; discard;
} }
#endif #endif
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)
vec3 gamma_diff = diffcol.rgb; vec3 gamma_diff = diffcol.rgb;
diffcol.rgb = srgb_to_linear(diffcol.rgb); diffcol.rgb = srgb_to_linear(diffcol.rgb);
#endif #endif
#if HAS_SPECULAR_MAP != 0 #if HAS_SPECULAR_MAP != 0
vec4 spec = texture2D(specularMap, vary_texcoord2.xy); vec4 spec = texture2D(specularMap, vary_texcoord2.xy);
spec.rgb *= specular_color.rgb; spec.rgb *= specular_color.rgb;
#else #else
vec4 spec = vec4(specular_color.rgb, 1.0); vec4 spec = vec4(specular_color.rgb, 1.0);
#endif #endif
#if HAS_NORMAL_MAP #if HAS_NORMAL_MAP
vec4 norm = texture2D(bumpMap, vary_texcoord1.xy); vec4 norm = texture2D(bumpMap, vary_texcoord1.xy);
norm.xyz = norm.xyz * 2 - 1; norm.xyz = norm.xyz * 2 - 1;
vec3 tnorm = vec3(dot(norm.xyz,vary_mat0), vec3 tnorm = vec3(dot(norm.xyz,vary_mat0),
dot(norm.xyz,vary_mat1), dot(norm.xyz,vary_mat1),
dot(norm.xyz,vary_mat2)); dot(norm.xyz,vary_mat2));
#else #else
vec4 norm = vec4(0,0,0,1.0); vec4 norm = vec4(0,0,0,1.0);
vec3 tnorm = vary_normal; vec3 tnorm = vary_normal;
#endif #endif
norm.xyz = normalize(tnorm.xyz); norm.xyz = normalize(tnorm.xyz);
vec2 abnormal = encode_normal(norm.xyz); vec2 abnormal = encode_normal(norm.xyz);
vec4 final_color = diffcol; vec4 final_color = diffcol;
#if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE) #if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE)
final_color.a = emissive_brightness; final_color.a = emissive_brightness;
#else #else
final_color.a = max(final_color.a, emissive_brightness); final_color.a = max(final_color.a, emissive_brightness);
#endif #endif
vec4 final_specular = spec; vec4 final_specular = spec;
#if HAS_SPECULAR_MAP != 0 #if HAS_SPECULAR_MAP != 0
vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity * spec.a, 0.0); vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity * spec.a, 0.0);
final_specular.a = specular_color.a * norm.a; final_specular.a = specular_color.a * norm.a;
#else #else
vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity, 0.0); vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity, 0.0);
final_specular.a = specular_color.a; final_specular.a = specular_color.a;
#endif #endif
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)
//forward rendering, output just lit sRGBA //forward rendering, output just lit sRGBA
vec3 pos = vary_position; vec3 pos = vary_position;
float shadow = 1.0f; float shadow = 1.0f;
#ifdef HAS_SUN_SHADOW #ifdef HAS_SUN_SHADOW
shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen); shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen);
#endif #endif
spec = final_specular; spec = final_specular;
vec4 diffuse = final_color; vec4 diffuse = final_color;
float envIntensity = final_normal.z; float envIntensity = final_normal.z;
vec3 color = vec3(0,0,0); vec3 color = vec3(0,0,0);
vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir; vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir;
float bloom = 0.0; float bloom = 0.0;
vec3 sunlit; vec3 sunlit;
vec3 amblit; vec3 amblit;
vec3 additive; vec3 additive;
vec3 atten; vec3 atten;
calcAtmosphericVars(pos.xyz, light_dir, 1.0, sunlit, amblit, additive, atten, false); calcAtmosphericVars(pos.xyz, light_dir, 1.0, sunlit, amblit, additive, atten, false);
// This call breaks the Mac GLSL compiler/linker for unknown reasons (17Mar2020) // This call breaks the Mac GLSL compiler/linker for unknown reasons (17Mar2020)
// The call is either a no-op or a pure (pow) gamma adjustment, depending on GPU level // The call is either a no-op or a pure (pow) gamma adjustment, depending on GPU level
// TODO: determine if we want to re-apply the gamma adjustment, and if so understand & fix Mac breakage // TODO: determine if we want to re-apply the gamma adjustment, and if so understand & fix Mac breakage
//color = fullbrightScaleSoftClip(color); //color = fullbrightScaleSoftClip(color);
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
//we're in sRGB space, so gamma correct this dot product so //we're in sRGB space, so gamma correct this dot product so
// lighting from the sun stays sharp // lighting from the sun stays sharp
float da = clamp(dot(normalize(norm.xyz), light_dir.xyz), 0.0, 1.0); float da = clamp(dot(normalize(norm.xyz), light_dir.xyz), 0.0, 1.0);
da = pow(da, 1.0 / 1.3); da = pow(da, 1.0 / 1.3);
color = amblit; color = amblit;
//darken ambient for normals perpendicular to light vector so surfaces in shadow //darken ambient for normals perpendicular to light vector so surfaces in shadow
// and facing away from light still have some definition to them. // and facing away from light still have some definition to them.
// do NOT gamma correct this dot product so ambient lighting stays soft // do NOT gamma correct this dot product so ambient lighting stays soft
float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0);
ambient *= 0.5; ambient *= 0.5;
ambient *= ambient; ambient *= ambient;
ambient = (1.0 - ambient); ambient = (1.0 - ambient);
vec3 sun_contrib = min(da, shadow) * sunlit; vec3 sun_contrib = min(da, shadow) * sunlit;
color *= ambient; color *= ambient;
color += sun_contrib; color += sun_contrib;
color *= gamma_diff.rgb; color *= gamma_diff.rgb;
float glare = 0.0; float glare = 0.0;
if (spec.a > 0.0) // specular reflection if (spec.a > 0.0) // specular reflection
{ {
#if 1 //EEP #if 1 //EEP
vec3 npos = -normalize(pos.xyz); vec3 npos = -normalize(pos.xyz);
//vec3 ref = dot(pos+lv, norm); //vec3 ref = dot(pos+lv, norm);
vec3 h = normalize(light_dir.xyz + npos); vec3 h = normalize(light_dir.xyz + npos);
float nh = dot(norm.xyz, h); float nh = dot(norm.xyz, h);
float nv = dot(norm.xyz, npos); float nv = dot(norm.xyz, npos);
float vh = dot(npos, h); float vh = dot(npos, h);
float sa = nh; float sa = nh;
float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5;
float gtdenom = 2 * nh; float gtdenom = 2 * nh;
float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
if (nh > 0.0) if (nh > 0.0)
{ {
float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da);
vec3 sp = sun_contrib*scol / 6.0f; vec3 sp = sun_contrib*scol / 6.0f;
sp = clamp(sp, vec3(0), vec3(1)); sp = clamp(sp, vec3(0), vec3(1));
bloom = dot(sp, sp) / 4.0; bloom = dot(sp, sp) / 4.0;
color += sp * spec.rgb; color += sp * spec.rgb;
} }
#else // PRODUCTION #else // PRODUCTION
float sa = dot(refnormpersp, sun_dir.xyz); float sa = dot(refnormpersp, sun_dir.xyz);
vec3 dumbshiny = sunlit*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r); vec3 dumbshiny = sunlit*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r);
// add the two types of shiny together // add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb; vec3 spec_contrib = dumbshiny * spec.rgb;
bloom = dot(spec_contrib, spec_contrib) / 6; bloom = dot(spec_contrib, spec_contrib) / 6;
glare = max(spec_contrib.r, spec_contrib.g); glare = max(spec_contrib.r, spec_contrib.g);
glare = max(glare, spec_contrib.b); glare = max(glare, spec_contrib.b);
color += spec_contrib; color += spec_contrib;
#endif #endif
} }
color = mix(color.rgb, diffcol.rgb, diffuse.a); color = mix(color.rgb, diffcol.rgb, diffuse.a);
if (envIntensity > 0.0) if (envIntensity > 0.0)
{ {
//add environmentmap //add environmentmap
vec3 env_vec = env_mat * refnormpersp; vec3 env_vec = env_mat * refnormpersp;
vec3 reflected_color = textureCube(environmentMap, env_vec).rgb; vec3 reflected_color = textureCube(environmentMap, env_vec).rgb;
color = mix(color, reflected_color, envIntensity); color = mix(color, reflected_color, envIntensity);
float cur_glare = max(reflected_color.r, reflected_color.g); float cur_glare = max(reflected_color.r, reflected_color.g);
cur_glare = max(cur_glare, reflected_color.b); cur_glare = max(cur_glare, reflected_color.b);
cur_glare *= envIntensity*4.0; cur_glare *= envIntensity*4.0;
glare += cur_glare; glare += cur_glare;
} }
color = atmosFragLighting(color, additive, atten); color = atmosFragLighting(color, additive, atten);
color = scaleSoftClipFrag(color); color = scaleSoftClipFrag(color);
//convert to linear before adding local lights //convert to linear before adding local lights
color = srgb_to_linear(color); color = srgb_to_linear(color);
vec3 npos = normalize(-pos.xyz); vec3 npos = normalize(-pos.xyz);
vec3 light = vec3(0, 0, 0); vec3 light = vec3(0, 0, 0);
#define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w ); #define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w );
LIGHT_LOOP(1) LIGHT_LOOP(1)
LIGHT_LOOP(2) LIGHT_LOOP(2)
LIGHT_LOOP(3) LIGHT_LOOP(3)
LIGHT_LOOP(4) LIGHT_LOOP(4)
LIGHT_LOOP(5) LIGHT_LOOP(5)
LIGHT_LOOP(6) LIGHT_LOOP(6)
LIGHT_LOOP(7) LIGHT_LOOP(7)
color += light; color += light;
glare = min(glare, 1.0); glare = min(glare, 1.0);
float al = max(diffcol.a, glare)*vertex_color.a; float al = max(diffcol.a, glare)*vertex_color.a;
//convert to srgb as this color is being written post gamma correction //convert to srgb as this color is being written post gamma correction
color = linear_to_srgb(color); color = linear_to_srgb(color);
#ifdef WATER_FOG #ifdef WATER_FOG
vec4 temp = applyWaterFogView(pos, vec4(color, al)); vec4 temp = applyWaterFogView(pos, vec4(color, al));
color = temp.rgb; color = temp.rgb;
al = temp.a; al = temp.a;
#endif #endif
frag_color = vec4(color, al); frag_color = vec4(color, al);
#else // mode is not DIFFUSE_ALPHA_MODE_BLEND, encode to gbuffer #else // mode is not DIFFUSE_ALPHA_MODE_BLEND, encode to gbuffer
// deferred path // deferred path
frag_data[0] = final_color; //gbuffer is sRGB frag_data[0] = final_color; //gbuffer is sRGB
frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent. frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent.
frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity. frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity.
#endif #endif
} }
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
can_minimize="false" can_minimize="false"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
can_minimize="false" can_minimize="false"
can_tear_off="false" can_tear_off="false"
......
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<floater <floater
positioning="cascading" positioning="cascading"
......
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<floater <floater
can_close="true" can_close="true"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
bevel_style="none" bevel_style="none"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
can_minimize="false" can_minimize="false"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
can_resize="false" can_resize="false"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
can_resize="true" can_resize="true"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater <floater
legacy_header_height="18" legacy_header_height="18"
can_minimize="false" can_minimize="false"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel <panel
background_visible="true" background_visible="true"
follows="all" follows="all"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!-- Use "disabled color" to make it look like menu separators --> <!-- Use "disabled color" to make it look like menu separators -->
<menu_item_tear_off enabled_color="MenuItemDisabledColor" <menu_item_tear_off enabled_color="MenuItemDisabledColor"
name="tear_off" name="tear_off"
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_folder_gear"> <toggleable_menu name="menu_folder_gear">
<menu_item_call label="ランドマークを追加" name="add_landmark"/> <menu_item_call label="ランドマークを追加" name="add_landmark"/>
<menu_item_call label="フォルダを追加" name="add_folder"/> <menu_item_call label="フォルダを追加" name="add_folder"/>
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="menu_ladmark_gear"> <toggleable_menu name="menu_ladmark_gear">
<menu_item_call label="テレポート" name="teleport"/> <menu_item_call label="テレポート" name="teleport"/>
<menu_item_call label="もっと詳しく" name="more_info"/> <menu_item_call label="もっと詳しく" name="more_info"/>
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup"> <context_menu name="Url Popup">
<menu_item_call label="インベントリアイテムを表示" name="show_item"/> <menu_item_call label="インベントリアイテムを表示" name="show_item"/>
<menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/> <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_im_control_panel"> <panel name="panel_im_control_panel">
<layout_stack name="vertical_stack"> <layout_stack name="vertical_stack">
<layout_panel name="group_info_btn_panel"> <layout_panel name="group_info_btn_panel">
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="通知" name="notices_tab"> <panel label="通知" name="notices_tab">
<panel.string name="help_text"> <panel.string name="help_text">
通知でメッセージを送ることができ、通知にアイテムを添付することができます。 通知でメッセージを送ることができ、通知にアイテムを添付することができます。
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Landmarks"> <panel name="Landmarks">
<accordion name="landmarks_accordion"> <accordion name="landmarks_accordion">
<accordion_tab name="tab_favorites" title="お気に入りバー"/> <accordion_tab name="tab_favorites" title="お気に入りバー"/>
......
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Side tray Outfit Edit panel --> <!-- Side tray Outfit Edit panel -->
<panel label="アウトフットの編集" name="outfit_edit"> <panel label="アウトフットの編集" name="outfit_edit">
<string name="No Outfit" value="アウトフィットなし"/> <string name="No Outfit" value="アウトフィットなし"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment