master
Ansariel 2022-08-03 19:45:45 +02:00
commit 8ecf3fd9e4
23 changed files with 431 additions and 780 deletions

View File

@ -20,27 +20,22 @@
<string>RenderAttachedParticles</string>
<string>RenderAutoMaskAlphaDeferred</string>
<string>RenderAutoMaskAlphaNonDeferred</string>
<string>RenderAvatarCloth</string>
<string>RenderAvatarLODFactor</string>
<string>RenderAvatarMaxComplexity</string>
<string>RenderAvatarMaxNonImpostors</string>
<string>RenderAvatarPhysicsLODFactor</string>
<string>RenderCompressTextures</string>
<string>RenderDeferred</string>
<string>RenderDeferredSSAO</string>
<string>RenderDepthOfField</string>
<string>RenderDepthOfFieldInEditMode</string>
<string>RenderFarClip</string>
<string>RenderFlexTimeFactor</string>
<string>RenderFogRatio</string>
<string>RenderFSAASamples</string>
<string>RenderGamma</string>
<string>RenderGlow</string>
<string>RenderGlowIterations</string>
<string>RenderGlowResolutionPow</string>
<string>RenderLocalLights</string>
<string>RenderMaxPartCount</string>
<string>RenderObjectBump</string>
<string>RenderPBR</string>
<string>RenderQualityPerformance</string>
<string>RenderReflectionDetail</string>
@ -60,7 +55,6 @@
<string>RenderWaterRefResolution</string>
<string>TextureDiscardLevel</string>
<string>TextureMemory</string>
<string>WindLightUseAtmosShaders</string>
<string>WLSkyDetail</string>
</array>
</llsd>

View File

@ -11717,13 +11717,13 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>RenderAvatarCloth</key>
<map>
<key>Comment</key>
<string>Controls if avatars use wavy cloth</string>
<string>DEPRECATED - only false supported - Controls if avatars use wavy cloth</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
<integer>0</integer>
</map>
<key>RenderComplexityColorMin</key>
<map>
@ -12689,19 +12689,19 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
<integer>1</integer>
</map>
<key>RenderDeferred</key>
<map>
<key>Comment</key>
<string>Use deferred rendering pipeline (Advanced Lighting Model).</string>
<string>DEPRECATED (only true supported) - Use deferred rendering pipeline (Advanced Lighting Model).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
<integer>1</integer>
</map>
<key>RenderDeferredSun</key>
@ -12942,7 +12942,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>RenderFogRatio</key>
<map>
<key>Comment</key>
<string>Distance from camera where fog reaches maximum density (fraction or multiple of far clip distance)</string>
<string>DEPRECATED - Distance from camera where fog reaches maximum density (fraction or multiple of far clip distance)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -12953,7 +12953,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>RenderGamma</key>
<map>
<key>Comment</key>
<string>Sets gamma exponent for renderer</string>
<string>DEPRECATED - Sets gamma exponent for renderer</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -13358,7 +13358,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>RenderObjectBump</key>
<map>
<key>Comment</key>
<string>Show bumpmapping on primitives</string>
<string>DEPRECATED (only TRUE supported) Show bumpmapping on primitives</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@ -18723,7 +18723,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>WindLightUseAtmosShaders</key>
<map>
<key>Comment</key>
<string>Whether to enable or disable WindLight atmospheric shaders.</string>
<string>DEPRECATED (only true supported) - Whether to enable or disable WindLight atmospheric shaders.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>

View File

@ -25,12 +25,27 @@
uniform sampler2DRect normalMap;
uniform sampler2DRect depthMap;
uniform sampler2D projectionMap; // rgba
// projected lighted params
uniform mat4 proj_mat; //screen space to light space projector
uniform vec3 proj_n; // projector normal
uniform vec3 proj_p; //plane projection is emitting from (in screen space)
uniform float proj_focus; // distance from plane to begin blurring
uniform float proj_lod ; // (number of mips in proj map)
uniform float proj_range; // range between near clip and far clip plane of projection
// light params
uniform vec3 color; // light_color
uniform float size; // light_size
uniform mat4 inv_proj;
uniform vec2 screen_res;
const float M_PI = 3.14159265;
vec3 srgb_to_linear(vec3 cs);
// In:
// lv unnormalized surface to light vector
// n normal of the surface
@ -52,6 +67,33 @@ void calcHalfVectors(vec3 lv, vec3 n, vec3 v,
lightDist = length(lv);
}
// In:
// light_center
// pos
// Out:
// dist
// l_dist
// lv
// proj_tc Projector Textue Coordinates
bool clipProjectedLightVars(vec3 light_center, vec3 pos, out float dist, out float l_dist, out vec3 lv, out vec4 proj_tc )
{
lv = light_center - pos.xyz;
dist = length(lv);
bool clipped = (dist >= size);
if ( !clipped )
{
dist /= size;
l_dist = -dot(lv, proj_n);
vec4 projected_point = (proj_mat * vec4(pos.xyz, 1.0));
clipped = (projected_point.z < 0.0);
projected_point.xyz /= projected_point.w;
proj_tc = projected_point;
}
return clipped;
}
vec2 getScreenCoordinate(vec2 screenpos)
{
vec2 sc = screenpos.xy * 2.0;
@ -104,6 +146,80 @@ float getDepth(vec2 pos_screen)
return depth;
}
vec4 getTexture2DLodDiffuse(vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
// Returns projected light in Linear
// Uses:
// color
// NOTE: projected.a will be pre-multiplied with projected.rgb
vec3 getProjectedLightDiffuseColor(float light_distance, vec2 projected_uv)
{
float diff = clamp((light_distance - proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
vec4 plcol = getTexture2DLodDiffuse(projected_uv.xy, lod);
return color.rgb * plcol.rgb * plcol.a;
}
vec4 texture2DLodSpecular(vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
d *= min(1, d * (proj_lod - lod)); // BUG? extra factor compared to diffuse causes N repeats
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
// See: clipProjectedLightVars()
vec3 getProjectedLightSpecularColor(vec3 pos, vec3 n )
{
vec3 slit = vec3(0);
vec3 ref = reflect(normalize(pos), n);
//project from point pos in direction ref to plane proj_p, proj_n
vec3 pdelta = proj_p-pos;
float l_dist = length(pdelta);
float ds = dot(ref, proj_n);
if (ds < 0.0)
{
vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
if (stc.z > 0.0)
{
stc /= stc.w;
slit = getProjectedLightDiffuseColor( l_dist, stc.xy ); // NOTE: Using diffuse due to texture2DLodSpecular() has extra: d *= min(1, d * (proj_lod - lod));
}
}
return slit; // specular light
}
vec3 getProjectedLightSpecularColor(float light_distance, vec2 projected_uv)
{
float diff = clamp((light_distance - proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
vec4 plcol = getTexture2DLodDiffuse(projected_uv.xy, lod); // NOTE: Using diffuse due to texture2DLodSpecular() has extra: d *= min(1, d * (proj_lod - lod));
return color.rgb * plcol.rgb * plcol.a;
}
vec4 getPosition(vec2 pos_screen)
{
float depth = getDepth(pos_screen);
@ -174,7 +290,7 @@ vec2 getGGX( vec2 brdfPoint )
float getLightAttenuationPointSpot(float range, float distance)
{
#if 1
return range;
return distance;
#else
float range2 = pow(range, 2.0);

View File

@ -25,6 +25,8 @@
/*[EXTRA_CODE_HERE]*/
#define DEBUG_PBR_LIGHT_TYPE 0 // Output Diffuse=0.75, Emissive=0, ORM=0,0,0
#define DEBUG_BASIC 0
#define DEBUG_VERTEX 0
#define DEBUG_NORMAL_MAP 0 // Output packed normal map "as is" to diffuse
@ -120,7 +122,11 @@ void main()
emissive *= texture2D(emissiveMap, vary_texcoord0.xy).rgb;
#endif
#if DEBUG_PBR_LIGHT_TYPE
col.rgb = vec3(0.75);
emissive = vec3(0);
spec.rgb = vec3(0);
#endif
#if DEBUG_BASIC
col.rgb = vec3( 1, 0, 1 );
#endif

View File

@ -27,6 +27,8 @@
/*[EXTRA_CODE_HERE]*/
#define DEBUG_PBR_LIGHT_TYPE 0
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
@ -95,17 +97,24 @@ void main()
for (int light_idx = 0; light_idx < LIGHT_COUNT; ++light_idx)
{
vec3 lightColor = light_col[ light_idx ].rgb;
float falloff = light_col[ light_idx ].a;
float lightSize = light [ light_idx ].w;
vec3 lv =(light [ light_idx ].xyz - pos);
calcHalfVectors(lv, n, v, h, l, nh, nl, nv, vh, lightDist);
if (nl > 0.0 || nv > 0.0)
{
vec3 intensity = getLightIntensityPoint(lightColor, lightSize, lightDist);
float dist = lightDist / lightSize;
float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff);
vec3 intensity = dist_atten * getLightIntensityPoint(lightColor, lightSize, lightDist);
colorDiffuse += intensity * nl * BRDFLambertian (reflect0, reflect90, c_diff , specWeight, vh);
colorSpec += intensity * nl * BRDFSpecularGGX(reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh);
}
}
#if DEBUG_PBR_LIGHT_TYPE
colorDiffuse = vec3(0,0.5,0); colorSpec = vec3(0);
#endif
final_color = colorDiffuse + colorSpec;
}
else

View File

@ -28,6 +28,16 @@
/*[EXTRA_CODE_HERE]*/
#define DEBUG_PBR_LIGHT_TYPE 0 // Ouput gray if PBR multiSpot lights object
#define DEBUG_PBR_SPOT 0
#define DEBUG_PBR_SPOT_DIFFUSE 0 // PBR diffuse lit
#define DEBUG_PBR_SPOT_SPECULAR 0 // PBR spec lit
#define DEBUG_SPOT_DIFFUSE 0
#define DEBUG_SPOT_NL 0 // monochome area effected by light
#define DEBUG_SPOT_SPEC_POS 0
#define DEBUG_SPOT_REFLECTION 0
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
@ -42,7 +52,7 @@ uniform sampler2DRect emissiveRect; // PBR linear packed Occlusion, Roughness, M
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
uniform sampler2D projectionMap;
uniform sampler2D projectionMap; // rgba
uniform sampler2D lightFunc;
uniform mat4 proj_mat; //screen space to light space
@ -76,48 +86,15 @@ uniform mat4 inv_proj;
vec3 BRDFLambertian( vec3 reflect0, vec3 reflect90, vec3 c_diff, float specWeight, float vh );
vec3 BRDFSpecularGGX( vec3 reflect0, vec3 reflect90, float alphaRoughness, float specWeight, float vh, float nl, float nv, float nh );
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);
bool clipProjectedLightVars(vec3 center, vec3 pos, out float dist, out float l_dist, out vec3 lv, out vec4 proj_tc );
vec3 getLightIntensitySpot(vec3 lightColor, float lightRange, float lightDistance, vec3 v);
vec4 getNormalEnvIntensityFlags(vec2 screenpos, out vec3 n, out float envIntensity);
vec3 getProjectedLightDiffuseColor(float light_distance, vec2 projected_uv );
vec3 getProjectedLightSpecularColor(vec3 pos, vec3 n);
vec2 getScreenXY(vec4 clip);
void initMaterial( vec3 diffuse, vec3 packedORM, out float alphaRough, out vec3 c_diff, out vec3 reflect0, out vec3 reflect90, out float specWeight );
vec3 srgb_to_linear(vec3 cs);
vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
d *= min(1, d * (proj_lod - lod));
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
vec4 texture2DLodSpecular(vec2 tc, float lod);
vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
@ -144,14 +121,13 @@ void main()
vec2 tc = getScreenXY(vary_fragcoord);
vec3 pos = getPosition(tc).xyz;
vec3 lv = center.xyz-pos.xyz;
float dist = length(lv);
if (dist >= size)
vec3 lv;
vec4 proj_tc;
float dist, l_dist;
if (clipProjectedLightVars(center, pos, dist, l_dist, lv, proj_tc))
{
discard;
}
dist /= size;
float shadow = 1.0;
@ -167,24 +143,7 @@ void main()
vec3 n;
vec4 norm = getNormalEnvIntensityFlags(tc, n, envIntensity);
float l_dist = -dot(lv, proj_n);
vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
if (proj_tc.z < 0.0)
{
discard;
}
proj_tc.xyz /= proj_tc.w;
float fa = falloff+1.0;
float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
dist_atten *= dist_atten;
dist_atten *= 2.0;
if (dist_atten <= 0.0)
{
discard;
}
float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff);
lv = proj_origin-pos.xyz;
vec3 h, l, v = -normalize(pos);
@ -194,6 +153,7 @@ void main()
vec3 diffuse = texture2DRect(diffuseRect, tc).rgb;
vec4 spec = texture2DRect(specularRect, tc);
vec3 dlit = vec3(0, 0, 0);
vec3 slit = vec3(0, 0, 0);
if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR))
{
@ -201,11 +161,68 @@ void main()
vec3 colorSpec = vec3(0);
vec3 colorEmissive = spec.rgb; // PBR sRGB Emissive. See: pbropaqueF.glsl
vec3 packedORM = texture2DRect(emissiveRect, tc).rgb; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl
float metal = packedORM.b;
// if (proj_tc.x > 0.0 && proj_tc.x < 1.0
// && proj_tc.y > 0.0 && proj_tc.y < 1.0)
if (nl > 0.0)
{
vec3 c_diff, reflect0, reflect90;
float alphaRough, specWeight;
initMaterial( diffuse, packedORM, alphaRough, c_diff, reflect0, reflect90, specWeight );
dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy );
slit = getProjectedLightSpecularColor( pos, n );
// vec3 intensity = getLightIntensitySpot( color, size, lightDist, v );
colorDiffuse = shadow * dlit * nl * dist_atten;
colorSpec = shadow * slit * nl * dist_atten;
// colorDiffuse *= BRDFLambertian ( reflect0, reflect90, c_diff , specWeight, vh );
// colorSpec *= BRDFSpecularGGX( reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh );
#if DEBUG_PBR_SPOT_DIFFUSE
colorDiffuse = dlit.rgb; colorSpec = vec3(0);
#endif
#if DEBUG_PBR_SPOT_SPECULAR
colorDiffuse = vec3(0); colorSpec = slit.rgb;
#endif
#if DEBUG_PBR_SPOT
colorDiffuse = dlit; colorSpec = vec3(0);
colorDiffuse *= nl;
colorDiffuse *= shadow;
#endif
#if DEBUG_SPOT_SPEC_POS
colorDiffuse = pos + ref * dot(pdelta, proj_n)/ds; colorSpec = vec3(0);
#endif
#if DEBUG_SPOT_REFLECTION
colorDiffuse = ref; colorSpec = vec3(0);
#endif
}
#if DEBUG_SPOT_DIFFUSE
colorDiffuse = vec3(nl * dist_atten);
#endif
#if DEBUG_SPOT_NL
colorDiffuse = vec3(nl); colorSpec = vec3(0);
#endif
#if DEBUG_PBR_LIGHT_TYPE
colorDiffuse = vec3(0.5); colorSpec = vec3(0);
#endif
final_color = colorDiffuse + colorSpec;
}
else
{
dist_atten *= dist_atten;
dist_atten *= 2.0;
if (dist_atten <= 0.0)
{
discard;
}
float noise = texture2D(noiseMap, tc/128.0).b;
if (proj_tc.z > 0.0 &&
proj_tc.x < 1.0 &&
@ -220,13 +237,8 @@ void main()
{
lit = nl * dist_atten * noise;
float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
dlit = color.rgb * plcol.rgb * plcol.a;
dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy );
final_color = dlit*lit*diffuse*shadow;
// unshadowed for consistency between forward and deferred?
@ -244,7 +256,6 @@ void main()
final_color += amb_da*color.rgb*diffuse.rgb*amb_plcol.rgb*amb_plcol.a;
}
if (spec.a > 0.0)
{
dlit *= min(nl*6.0, 1.0) * dist_atten;
@ -286,11 +297,25 @@ void main()
stc.x > 0.0 &&
stc.y > 0.0)
{
final_color += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
final_color += color.rgb * texture2DLodSpecular(stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
}
}
}
#if DEBUG_SPOT_SPEC_POS
final_color = pos + ref * dot(pdelta, proj_n)/ds;
#endif
#if DEBUG_SPOT_REFLECTION
final_color = ref;
#endif
}
#if DEBUG_SPOT_NL
final_color =vec3(nl);
#endif
#if DEBUG_SPOT_DIFFUSE
final_color = vec3(nl * dist_atten * noise);
#endif
}
//not sure why, but this line prevents MATBUG-194

View File

@ -27,6 +27,8 @@
/*[EXTRA_CODE_HERE]*/
#define DEBUG_PBR_LIGHT_TYPE 0
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
@ -86,6 +88,9 @@ void main()
float nh, nl, nv, vh, lightDist;
calcHalfVectors(lv, n, v, h, l, nh, nl, nv, vh, lightDist);
float dist = lightDist / size;
float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff);
if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR))
{
vec3 colorDiffuse = vec3(0);
@ -99,11 +104,15 @@ void main()
if (nl > 0.0 || nv > 0.0)
{
vec3 intensity = getLightIntensityPoint(color, size, lightDist);
vec3 intensity = dist_atten * getLightIntensityPoint(color, size, lightDist);
colorDiffuse += intensity * nl * BRDFLambertian (reflect0, reflect90, c_diff , specWeight, vh);
colorSpec += intensity * nl * BRDFSpecularGGX(reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh);
}
#if DEBUG_PBR_LIGHT_TYPE
colorDiffuse = vec3(0,0,0.5); colorSpec = vec3(0);
#endif
final_color = colorDiffuse + colorSpec;
}
else
@ -120,8 +129,6 @@ void main()
discard;
}
float fa = falloff+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 *= 2.0;

View File

@ -27,6 +27,7 @@
#define PBR_USE_GGX_EMS_HACK 0
#define PBR_USE_IRRADIANCE_HACK 1
#define DEBUG_PBR_LIGHT_TYPE 0 // Output no global light to make it easier to see pointLight and spotLight
#define DEBUG_PBR_PACKORM0 0 // Rough=0, Metal=0
#define DEBUG_PBR_PACKORM1 0 // Rough=1, Metal=1
#define DEBUG_PBR_TANGENT1 1 // Tangent = 1,0,0
@ -54,6 +55,8 @@
#define DEBUG_PBR_DOT_NV 0 // Output: grayscale dot(Normal ,Vertex2Camera)
#define DEBUG_PBR_BRDF_UV 0 // Output: red green BRDF UV (GGX input)
#define DEBUG_PBR_BRDF_SCALE_BIAS 0 // Output: red green BRDF Scale Bias (GGX output)
#define DEBUG_PBR_BRDF_SCALE_ONLY 0 // Output: grayscale BRDF Scale
#define DEBUG_PBR_BRDF_BIAS_ONLY 0 // Output: grayscale BRDER Bias
#define DEBUG_PBR_FRESNEL 0 // Output: roughness dependent fresnel
#define DEBUG_PBR_KSPEC 0 // Output: K spec
#define DEBUG_PBR_REFLECTION_DIR 0 // Output: reflection dir
@ -66,7 +69,7 @@
#define DEBUG_PBR_IRRADIANCE_RAW 0 // Output: Diffuse Irradiance pre-mix
#define DEBUG_PBR_IRRADIANCE 0 // Output: Diffuse Irradiance
#define DEBUG_PBR_FSS_ESS_LAMBERT 0 // Output: FssEssLambert
#define DEBUG_PBR_EMS 0 // Output: Ems
#define DEBUG_PBR_EMS 0 // Output: Ems = (1 - BRDF Scale + BRDF Bias)
#define DEBUG_PBR_AVG 0 // Output: Avg
#define DEBUG_PBR_FMS_EMS 0 // Output: FmsEms
#define DEBUG_PBR_DIFFUSE_K 0 // Output: diffuse FssEssLambert + FmsEms
@ -178,8 +181,7 @@ void main()
da = pow(da, light_gamma);
vec4 diffuse = texture2DRect(diffuseRect, tc);
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); // NOTE: PBR sRGB Emissive
#if defined(HAS_SUN_SHADOW) || defined(HAS_SSAO)
vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
@ -306,10 +308,7 @@ void main()
// Reference: getIBLRadianceLambertian
vec3 FssEssLambert = specWeight * kSpec * vScaleBias.x + vScaleBias.y; // NOTE: Very similar to FssEssRadiance but with extra specWeight term
float Ems = (1.0 - vScaleBias.x + vScaleBias.y);
#if PBR_USE_GGX_EMS_HACK
Ems = alphaRough; // With GGX approximation Ems = 0 so use substitute
#endif
float Ems = 1.0 - (vScaleBias.x + vScaleBias.y);
vec3 avg = specWeight * (reflect0 + (1.0 - reflect0) / 21.0);
vec3 AvgEms = avg * Ems;
vec3 FmsEms = AvgEms * FssEssLambert / (1.0 - AvgEms);
@ -390,6 +389,12 @@ void main()
#if DEBUG_PBR_DIFFUSE_C
color.rgb = c_diff;
#endif
#if DEBUG_PBR_BRDF_SCALE_ONLY
color.rgb = vec3(vScaleBias.x);
#endif
#if DEBUG_PBR_BRDF_BIAS_ONLY
color.rgb = vec3(vScaleBias.y);
#endif
#if DEBUG_PBR_DIFFUSE_K
color.rgb = kDiffuse;
#endif
@ -477,6 +482,9 @@ void main()
#endif
#if DEBUG_PBR_SUN_CONTRIB
color.rgb = sun_contrib;
#endif
#if DEBUG_PBR_LIGHT_TYPE
color.rgb = vec3(0);
#endif
frag_color.rgb = color.rgb; // PBR is done in linear
}

View File

@ -28,6 +28,12 @@
/*[EXTRA_CODE_HERE]*/
#define DEBUG_PBR_LIGHT_TYPE 0
#define DEBUG_PBR_SPOT 0
#define DEBUG_PBR_NL 0 // monochome area effected by light
#define DEBUG_PBR_SPOT_DIFFUSE 0
#define DEBUG_PBR_SPOT_SPECULAR 0
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
@ -42,7 +48,7 @@ uniform sampler2DRect emissiveRect; // PBR linear packed Occlusion, Roughness, M
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
uniform sampler2D projectionMap;
uniform sampler2D projectionMap; // rgba
uniform sampler2D lightFunc;
uniform mat4 proj_mat; //screen space to light space
@ -75,40 +81,15 @@ uniform mat4 inv_proj;
vec3 BRDFLambertian( vec3 reflect0, vec3 reflect90, vec3 c_diff, float specWeight, float vh );
vec3 BRDFSpecularGGX( vec3 reflect0, vec3 reflect90, float alphaRoughness, float specWeight, float vh, float nl, float nv, float nh );
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);
bool clipProjectedLightVars(vec3 center, vec3 pos, out float dist, out float l_dist, out vec3 lv, out vec4 proj_tc );
vec3 getLightIntensitySpot(vec3 lightColor, float lightRange, float lightDistance, vec3 v);
vec4 getNormalEnvIntensityFlags(vec2 screenpos, out vec3 n, out float envIntensity);
vec3 getProjectedLightDiffuseColor(float light_distance, vec2 projected_uv );
vec3 getProjectedLightSpecularColor(vec3 pos, vec3 n);
vec2 getScreenXY(vec4 clip_point);
void initMaterial( vec3 diffuse, vec3 packedORM, out float alphaRough, out vec3 c_diff, out vec3 reflect0, out vec3 reflect90, out float specWeight );
vec3 srgb_to_linear(vec3 c);
vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
d *= min(1, d * (proj_lod - lod));
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
ret.rgb = srgb_to_linear(ret.rgb);
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
return ret;
}
vec4 texture2DLodSpecular(vec2 tc, float lod);
vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
@ -133,13 +114,13 @@ void main()
vec2 tc = getScreenXY(vary_fragcoord);
vec3 pos = getPosition(tc).xyz;
vec3 lv = trans_center.xyz-pos.xyz;
float dist = length(lv);
if (dist >= size)
vec3 lv;
vec4 proj_tc;
float dist, l_dist;
if (clipProjectedLightVars(trans_center, pos, dist, l_dist, lv, proj_tc))
{
discard;
}
dist /= size;
float shadow = 1.0;
@ -155,27 +136,9 @@ void main()
vec3 n;
vec4 norm = getNormalEnvIntensityFlags(tc, n, envIntensity); // need `norm.w` for GET_GBUFFER_FLAG()
float l_dist = -dot(lv, proj_n);
float dist_atten = 1.0 - (dist + falloff)/(1.0 + falloff);
vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
if (proj_tc.z < 0.0)
{
discard;
}
proj_tc.xyz /= proj_tc.w;
float fa = falloff+1.0;
float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);
dist_atten *= dist_atten;
dist_atten *= 2.0;
if (dist_atten <= 0.0)
{
discard;
}
lv = proj_origin-pos.xyz;
lv = proj_origin-pos.xyz; // NOTE: Re-using lv
vec3 h, l, v = -normalize(pos);
float nh, nl, nv, vh, lightDist;
calcHalfVectors(lv, n, v, h, l, nh, nl, nv, vh, lightDist);
@ -183,6 +146,7 @@ void main()
vec3 diffuse = texture2DRect(diffuseRect, tc).rgb;
vec4 spec = texture2DRect(specularRect, tc);
vec3 dlit = vec3(0, 0, 0);
vec3 slit = vec3(0, 0, 0);
if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR))
{
@ -190,11 +154,65 @@ void main()
vec3 colorSpec = vec3(0);
vec3 colorEmissive = spec.rgb; // PBR sRGB Emissive. See: pbropaqueF.glsl
vec3 packedORM = texture2DRect(emissiveRect, tc).rgb; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl
float metal = packedORM.b;
// if (proj_tc.x > 0.0 && proj_tc.x < 1.0
// && proj_tc.y > 0.0 && proj_tc.y < 1.0)
if (nl > 0.0)
{
vec3 c_diff, reflect0, reflect90;
float alphaRough, specWeight;
initMaterial( diffuse, packedORM, alphaRough, c_diff, reflect0, reflect90, specWeight );
dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy );
slit = getProjectedLightSpecularColor( pos, n );
// vec3 intensity = getLightIntensitySpot( color, size, lightDist, v );
// colorDiffuse = shadow * dlit * nl;
// colorSpec = shadow * slit * nl;
// colorDiffuse *= BRDFLambertian ( reflect0, reflect90, c_diff , specWeight, vh );
// colorSpec *= BRDFSpecularGGX( reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh );
colorDiffuse = shadow * dlit * nl * dist_atten;
colorSpec = shadow * slit * nl * dist_atten;
#if DEBUG_PBR_SPOT_DIFFUSE
colorDiffuse = dlit.rgb; colorSpec = vec3(0);
#endif
#if DEBUG_PBR_SPOT_SPECULAR
colorDiffuse = vec3(0); colorSpec = slit.rgb;
#endif
#if DEBUG_PBR_SPOT
colorDiffuse = dlit; colorSpec = vec3(0);
colorDiffuse *= nl;
colorDiffuse *= shadow;
#endif
}
#if DEBUG_SPOT_DIFFUSE
colorDiffuse = vec3(nl * dist_atten);
#endif
#if DEBUG_PBR_NL
colorDiffuse = vec3(nl); colorSpec = vec3(0);
#endif
#if DEBUG_PBR_LIGHT_TYPE
colorDiffuse = vec3(0.5,0,0); colorSpec = vec3(0.0);
#endif
final_color = colorDiffuse + colorSpec;
}
else
{
dist_atten *= dist_atten;
dist_atten *= 2.0;
if (dist_atten <= 0.0)
{
discard;
}
float noise = texture2D(noiseMap, tc/128.0).b;
if (proj_tc.z > 0.0 &&
proj_tc.x < 1.0 &&
@ -209,12 +227,7 @@ void main()
{
lit = nl * dist_atten * noise;
float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
float lod = diff * proj_lod;
vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
dlit = color.rgb * plcol.rgb * plcol.a;
dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy );
final_color = dlit*lit*diffuse*shadow;
@ -271,7 +284,7 @@ void main()
stc.x > 0.0 &&
stc.y > 0.0)
{
final_color += color.rgb * texture2DLodSpecular(projectionMap, stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
final_color += color.rgb * texture2DLodSpecular(stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;
}
}
}

View File

@ -1,4 +1,4 @@
version 34
version 35
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@ -28,7 +28,7 @@ version 34
//
list all
RenderAnisotropic 1 1
RenderAvatarCloth 1 1
RenderAvatarCloth 0 0
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@ -43,7 +43,6 @@ RenderGamma 1 0
RenderGlowResolutionPow 1 9
RenderGround 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
@ -62,6 +61,7 @@ Disregard96DefaultDrawDistance 1 1
RenderTextureMemoryMultiple 1 1.0
RenderCompressTextures 1 1
RenderShaderLightingMaxLevel 1 3
RenderPBR 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
@ -78,7 +78,6 @@ RenderGLMultiThreaded 1 1
//
list Low
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@ -88,15 +87,13 @@ RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
RenderLocalLights 1 0
RenderMaxPartCount 1 256
RenderObjectBump 1 0
RenderReflectionDetail 1 0
RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
RenderTransparentWater 1 0
RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.5
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -108,7 +105,6 @@ RenderFSAASamples 1 0
//
list LowMid
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
@ -116,7 +112,6 @@ RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
RenderMaxPartCount 1 2048
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -124,8 +119,7 @@ RenderTerrainLODFactor 1 1.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -137,7 +131,6 @@ RenderFSAASamples 1 0
//
list Mid
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
@ -145,7 +138,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -153,8 +145,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -166,7 +156,6 @@ RenderFSAASamples 1 2
//
list MidHigh
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
@ -174,7 +163,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -182,8 +170,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -195,7 +181,6 @@ RenderFSAASamples 1 2
//
list High
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
@ -203,7 +188,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -211,8 +195,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -224,7 +206,6 @@ RenderFSAASamples 1 2
//
list HighUltra
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 350000
RenderAvatarPhysicsLODFactor 1 1.0
@ -232,7 +213,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -240,8 +220,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -253,7 +231,6 @@ RenderFSAASamples 1 2
//
list Ultra
RenderAnisotropic 1 1
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderFarClip 1 256
@ -261,7 +238,6 @@ RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderLocalLights 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
@ -270,7 +246,6 @@ RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 3.0
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
@ -281,8 +256,8 @@ RenderFSAASamples 1 2
//
list Unknown
RenderShadowDetail 1 0
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderPBR 1 0
RenderUseAdvancedAtmospherics 1 0
//
@ -296,18 +271,15 @@ RenderCompressTextures 1 0
//
list safe
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderObjectBump 0 0
RenderLocalLights 1 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
RenderReflectionDetail 0 0
WindLightUseAtmosShaders 0 0
RenderDeferred 0 0
RenderDeferredSSAO 0 0
RenderShadowDetail 0 0
RenderPBR 1 0
list Intel
RenderAnisotropic 1 0

View File

@ -1,10 +1,10 @@
version 29
version 30
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
// defaults. This should be as rare an event as we can manage.
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
//
@ -28,7 +28,7 @@ version 29
//
list all
RenderAnisotropic 1 1
RenderAvatarCloth 1 1
RenderAvatarCloth 0 0
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@ -43,7 +43,6 @@ RenderGamma 1 0
RenderGlowResolutionPow 1 9
RenderGround 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
@ -62,6 +61,7 @@ Disregard96DefaultDrawDistance 1 1
RenderTextureMemoryMultiple 1 1.0
RenderCompressTextures 1 1
RenderShaderLightingMaxLevel 1 3
RenderPBR 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
@ -69,7 +69,7 @@ RenderShadowDetail 1 2
RenderUseStreamVBO 1 1
RenderFSAASamples 1 16
RenderMaxTextureIndex 1 16
RenderGLContextCoreProfile 1 1
RenderGLContextCoreProfile 1 1
RenderGLMultiThreaded 1 1
@ -78,7 +78,6 @@ RenderGLMultiThreaded 1 1
//
list Low
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@ -88,15 +87,13 @@ RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
RenderLocalLights 1 0
RenderMaxPartCount 1 256
RenderObjectBump 1 0
RenderReflectionDetail 1 0
RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
RenderTransparentWater 1 0
RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.5
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -108,7 +105,6 @@ RenderFSAASamples 1 0
//
list LowMid
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
@ -116,7 +112,6 @@ RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
RenderMaxPartCount 1 2048
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -124,8 +119,7 @@ RenderTerrainLODFactor 1 1.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -137,7 +131,6 @@ RenderFSAASamples 1 0
//
list Mid
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
@ -145,7 +138,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -153,8 +145,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -166,7 +156,6 @@ RenderFSAASamples 1 2
//
list MidHigh
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
@ -174,7 +163,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -182,8 +170,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -195,7 +181,6 @@ RenderFSAASamples 1 2
//
list High
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
@ -203,7 +188,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -211,8 +195,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -224,7 +206,6 @@ RenderFSAASamples 1 2
//
list HighUltra
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 350000
RenderAvatarPhysicsLODFactor 1 1.0
@ -232,7 +213,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -240,8 +220,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -253,7 +231,6 @@ RenderFSAASamples 1 2
//
list Ultra
RenderAnisotropic 1 1
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderFarClip 1 256
@ -261,7 +238,6 @@ RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderLocalLights 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
@ -270,7 +246,6 @@ RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 3.0
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
@ -281,8 +256,8 @@ RenderFSAASamples 1 2
//
list Unknown
RenderShadowDetail 1 0
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderPBR 1 0
RenderUseAdvancedAtmospherics 1 0
//
@ -296,18 +271,15 @@ RenderCompressTextures 1 0
//
list safe
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderObjectBump 0 0
RenderLocalLights 1 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
RenderReflectionDetail 0 0
WindLightUseAtmosShaders 0 0
RenderDeferred 0 0
RenderDeferredSSAO 0 0
RenderShadowDetail 0 0
RenderPBR 1 0
list Intel
RenderAnisotropic 1 0
@ -315,12 +287,12 @@ RenderAnisotropic 1 0
RenderCubeMap 0 0
RenderFSAASamples 1 0
RenderGLMultiThreaded 1 0
RenderGLContextCoreProfile 1 0
RenderGLContextCoreProfile 1 0
// AMD cards generally perform better when not using VBOs for streaming data
// AMD cards also prefer an OpenGL Compatibility Profile Context
list AMD
RenderUseStreamVBO 1 0
RenderGLContextCoreProfile 1 0
RenderGLContextCoreProfile 1 0

View File

@ -1,4 +1,4 @@
version 38
version 39
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@ -28,7 +28,7 @@ version 38
//
list all
RenderAnisotropic 1 0
RenderAvatarCloth 1 1
RenderAvatarCloth 0 0
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderAvatarMaxNonImpostors 1 16
@ -63,6 +63,7 @@ RenderTextureMemoryMultiple 1 1.0
RenderCompressTextures 1 1
RenderShaderLightingMaxLevel 1 3
RenderDeferred 1 1
RenderPBR 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
@ -77,7 +78,6 @@ RenderGLMultiThreaded 1 0
//
list Low
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0
RenderAvatarPhysicsLODFactor 1 0
RenderAvatarMaxNonImpostors 1 3
@ -87,15 +87,13 @@ RenderFlexTimeFactor 1 0
RenderGlowResolutionPow 1 8
RenderLocalLights 1 0
RenderMaxPartCount 1 256
RenderObjectBump 1 0
RenderReflectionDetail 1 0
RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
RenderTransparentWater 1 0
RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.5
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -107,7 +105,6 @@ RenderFSAASamples 1 0
//
list LowMid
RenderAnisotropic 1 0
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 0.5
RenderAvatarMaxComplexity 1 100000
RenderAvatarPhysicsLODFactor 1 0.75
@ -115,7 +112,6 @@ RenderFarClip 1 96
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
RenderMaxPartCount 1 2048
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -123,8 +119,7 @@ RenderTerrainLODFactor 1 1.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.5
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -136,7 +131,6 @@ RenderFSAASamples 1 0
//
list Mid
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 200000
RenderAvatarPhysicsLODFactor 1 1.0
@ -144,7 +138,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -152,8 +145,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.5
WindLightUseAtmosShaders 1 1
RenderDeferred 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -165,7 +156,6 @@ RenderFSAASamples 1 2
//
list MidHigh
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 250000
RenderAvatarPhysicsLODFactor 1 1.0
@ -173,7 +163,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -181,8 +170,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -194,7 +181,6 @@ RenderFSAASamples 1 2
//
list High
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 300000
RenderAvatarPhysicsLODFactor 1 1.0
@ -202,7 +188,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -210,8 +195,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 0
@ -223,7 +206,6 @@ RenderFSAASamples 1 2
//
list HighUltra
RenderAnisotropic 1 1
RenderAvatarCloth 1 0
RenderAvatarLODFactor 1 1.0
RenderAvatarMaxComplexity 1 350000
RenderAvatarPhysicsLODFactor 1 1.0
@ -231,7 +213,6 @@ RenderFarClip 1 128
RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderMaxPartCount 1 4096
RenderObjectBump 1 1
RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
@ -239,8 +220,6 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 2.0
WindLightUseAtmosShaders 1 1
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderShadowDetail 1 0
RenderUseAdvancedAtmospherics 1 0
@ -252,7 +231,6 @@ RenderFSAASamples 1 2
//
list Ultra
RenderAnisotropic 1 1
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
RenderAvatarPhysicsLODFactor 1 1.0
RenderFarClip 1 256
@ -260,7 +238,6 @@ RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 9
RenderLocalLights 1 1
RenderMaxPartCount 1 8192
RenderObjectBump 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
@ -269,7 +246,6 @@ RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 3.0
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
RenderDeferred 1 1
RenderDeferredSSAO 1 1
RenderUseAdvancedAtmospherics 1 0
RenderShadowDetail 1 2
@ -280,7 +256,7 @@ RenderFSAASamples 1 2
//
list Unknown
RenderShadowDetail 1 0
RenderDeferred 1 0
RenderPBR 1 0
RenderDeferredSSAO 1 0
RenderUseAdvancedAtmospherics 1 0
@ -296,16 +272,13 @@ RenderCompressTextures 1 0
//
list safe
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarMaxNonImpostors 1 16
RenderAvatarMaxComplexity 1 80000
RenderObjectBump 0 0
RenderLocalLights 1 0
RenderMaxPartCount 1 1024
RenderTerrainDetail 1 0
RenderReflectionDetail 0 0
WindLightUseAtmosShaders 0 0
RenderDeferred 0 0
RenderPBR 1 0
RenderDeferredSSAO 0 0
RenderUseAdvancedAtmospherics 0 0
RenderShadowDetail 0 0

View File

@ -2087,32 +2087,8 @@ void LLFloaterPreference::onUpdatePopupFilter()
void LLFloaterPreference::refreshEnabledState()
{
// <FS:Ansariel> Improved graphics preferences
//LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
//LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
LLCheckBoxCtrl* ctrl_pbr = getChild<LLCheckBoxCtrl>("UsePBRShaders");
//// if vertex shaders off, disable all shader related products
//if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
//{
// ctrl_wind_light->setEnabled(FALSE);
// ctrl_wind_light->setValue(FALSE);
//}
//else
//{
// ctrl_wind_light->setEnabled(TRUE);
//}
////Deferred/SSAO/Shadows
//BOOL bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump") && gSavedSettings.getBOOL("RenderObjectBump");
//BOOL shaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
//BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
// bumpshiny &&
// shaders &&
// gGLManager.mHasFramebufferObject &&
// (ctrl_wind_light->get()) ? TRUE : FALSE;
//ctrl_deferred->setEnabled(enabled);
F32 mem_multiplier = gSavedSettings.getF32("RenderTextureMemoryMultiple");
S32Megabytes min_tex_mem = LLViewerTextureList::getMinVideoRamSetting();
@ -2147,99 +2123,41 @@ void LLFloaterPreference::refreshEnabledState()
getChildView("texture compression")->setEnabled(FALSE);
}
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
LLSpinCtrl* gamma_ctrl = getChild<LLSpinCtrl>("gamma");
gamma_ctrl->setEnabled(!gPipeline.canUseWindLightShaders());
getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
// anti-aliasing
{
LLUICtrl* fsaa_ctrl = getChild<LLUICtrl>("fsaa");
// Enable or disable the control, the "Antialiasing:" label and the restart warning
// based on code support for the feature on the current hardware.
LLUICtrl* fsaa_ctrl = getChild<LLUICtrl>("fsaa");
if (gPipeline.canUseAntiAliasing())
{
fsaa_ctrl->setEnabled(TRUE);
}
else
{
fsaa_ctrl->setEnabled(FALSE);
fsaa_ctrl->setValue((LLSD::Integer) 0);
}
// Enable or disable the control, the "Antialiasing:" label and the restart warning
// based on code support for the feature on the current hardware.
if (gPipeline.canUseAntiAliasing())
{
fsaa_ctrl->setEnabled(TRUE);
}
else
{
fsaa_ctrl->setEnabled(FALSE);
fsaa_ctrl->setValue((LLSD::Integer) 0);
}
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
// [RLVa:KB] - Checked: 2013-05-11 (RLVa-1.4.9)
if (RlvActions::isRlvEnabled())
{
getChild<LLUICtrl>("do_not_disturb_response")->setEnabled(!RlvActions::hasBehaviour(RLV_BHVR_SENDIM));
}
// [/RLVa:KB]
// Reflections
BOOL reflections = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps;
ctrl_reflections->setEnabled(reflections);
// Bump & Shiny
LLCheckBoxCtrl* bumpshiny_ctrl = getChild<LLCheckBoxCtrl>("BumpShiny");
bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
bumpshiny_ctrl->setEnabled(bumpshiny ? TRUE : FALSE);
// <FS:Ansariel> Does not exist
//LLCheckBoxCtrl* ctrl_enhanced_skel = getChild<LLCheckBoxCtrl>("AvatarEnhancedSkeleton");
//bool enhanced_skel_enabled = gSavedSettings.getBOOL("IncludeEnhancedSkeleton");
//ctrl_enhanced_skel->setValue(enhanced_skel_enabled);
// </FS:Ansariel>
// Avatar Mode
// Avatar Render Mode
getChild<LLCheckBoxCtrl>("AvatarCloth")->setEnabled(TRUE);
/* <FS:LO> remove orphaned code left over from EEP
// Vertex Shaders, Global Shader Enable
LLRadioGroup* terrain_detail = getChild<LLRadioGroup>("TerrainDetailRadio"); // can be linked with control var
terrain_detail->setEnabled(FALSE);
*/
// WindLight
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
// [RLVa:KB] - Checked: 2010-03-18 (RLVa-1.2.0a) | Modified: RLVa-0.2.0a
// "Atmospheric Shaders" can't be disabled - but can be enabled - under @setenv=n
ctrl_wind_light->setEnabled( ((RlvActions::canChangeEnvironment()) && (!RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE))) || (!gSavedSettings.getBOOL("WindLightUseAtmosShaders")));
// [/RLVa:KB]
// ctrl_wind_light->setEnabled(TRUE);
sky->setEnabled(TRUE);
//Deferred/SSAO/Shadows
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
((bumpshiny_ctrl && bumpshiny_ctrl->get()) ? TRUE : FALSE) &&
gGLManager.mHasFramebufferObject &&
(ctrl_wind_light->get()) ? TRUE : FALSE;
ctrl_deferred->setEnabled(enabled);
//PBR
BOOL deferred = gSavedSettings.getBOOL("RenderDeferred");
// TODO: add "RenderPBR" to LLFeatureManager
ctrl_pbr->setEnabled(deferred);
ctrl_pbr->setEnabled(deferred && LLFeatureManager::getInstance()->isFeatureAvailable("RenderPBR"));
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
LLComboBox* ctrl_shadow = getChild<LLComboBox>("ShadowDetail");
// note, okay here to get from ctrl_deferred as it's twin, ctrl_deferred2 will alway match it
enabled = enabled && LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO") && (ctrl_deferred->get() ? TRUE : FALSE);
ctrl_deferred->set(gSavedSettings.getBOOL("RenderDeferred"));
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO");
ctrl_ssao->setEnabled(enabled);
ctrl_dof->setEnabled(enabled);
@ -2256,6 +2174,13 @@ void LLFloaterPreference::refreshEnabledState()
getChild<LLButton>("fs_default_creation_permissions")->setEnabled(LLStartUp::getStartupState() < STATE_STARTED ? false : true);
getChildView("block_list")->setEnabled(LLLoginInstance::getInstance()->authSuccess());
// [RLVa:KB] - Checked: 2013-05-11 (RLVa-1.4.9)
if (RlvActions::isRlvEnabled())
{
getChild<LLUICtrl>("do_not_disturb_response")->setEnabled(!RlvActions::hasBehaviour(RLV_BHVR_SENDIM));
}
// [/RLVa:KB]
}
// <FS:Ansariel> Dynamic texture memory calculation
@ -2335,9 +2260,10 @@ void LLAvatarComplexityControls::setIndirectMaxArc()
void LLFloaterPreference::disableUnavailableSettings()
{
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
// <FS:Ansariel> Doesn't exist anymore
//LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
//LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
//LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
@ -2346,8 +2272,9 @@ void LLFloaterPreference::disableUnavailableSettings()
// disabled windlight
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
{
ctrl_wind_light->setEnabled(FALSE);
ctrl_wind_light->setValue(FALSE);
// <FS:Ansariel> Doesn't exist anymore
//ctrl_wind_light->setEnabled(FALSE);
//ctrl_wind_light->setValue(FALSE);
sky->setEnabled(FALSE);
@ -2361,8 +2288,9 @@ void LLFloaterPreference::disableUnavailableSettings()
ctrl_dof->setEnabled(FALSE);
ctrl_dof->setValue(FALSE);
ctrl_deferred->setEnabled(FALSE);
ctrl_deferred->setValue(FALSE);
// <FS:Ansariel> Doesn't exist anymore
//ctrl_deferred->setEnabled(FALSE);
//ctrl_deferred->setValue(FALSE);
}
// disabled deferred
@ -2378,8 +2306,9 @@ void LLFloaterPreference::disableUnavailableSettings()
ctrl_dof->setEnabled(FALSE);
ctrl_dof->setValue(FALSE);
ctrl_deferred->setEnabled(FALSE);
ctrl_deferred->setValue(FALSE);
// <FS:Ansariel> Doesn't exist anymore
//ctrl_deferred->setEnabled(FALSE);
//ctrl_deferred->setValue(FALSE);
}
// disabled deferred SSAO
@ -2402,13 +2331,6 @@ void LLFloaterPreference::disableUnavailableSettings()
ctrl_reflections->setEnabled(FALSE);
ctrl_reflections->setValue(FALSE);
}
// disabled cloth
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth"))
{
ctrl_avatar_cloth->setEnabled(FALSE);
ctrl_avatar_cloth->setValue(FALSE);
}
}
void LLFloaterPreference::refresh()

View File

@ -1343,18 +1343,26 @@ void LLMaterialEditor::importMaterial()
void LLMaterialEditor::applyToSelection()
{
// Todo: associate with a specific 'selection' instead
// of modifying something that is selected
// This should be disabled when working from agent's
// inventory and for initial upload
// Todo: fix this, this is a hack, not a proper live preview
LLViewerObject* objectp = LLSelectMgr::instance().getSelection()->getFirstObject();
if (objectp && objectp->getVolume())
if (objectp && objectp->getVolume() && objectp->permModify())
{
LLGLTFMaterial* mat = new LLGLTFMaterial();
getGLTFMaterial(mat);
LLVOVolume* vobjp = (LLVOVolume*)objectp;
for (int i = 0; i < vobjp->getNumTEs(); ++i)
{
// this is here just to prevent material from immediately resetting
if (mAssetID.notNull())
{
vobjp->setRenderMaterialID(i, mAssetID);
}
else
{
const LLUUID placeholder("984e183e-7811-4b05-a502-d79c6f978a98");
vobjp->setRenderMaterialID(i, placeholder);
}
vobjp->getTE(i)->setGLTFMaterial(mat);
vobjp->updateTEMaterialTextures(i);
}

View File

@ -1166,7 +1166,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderGlowResolutionPow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderAvatarCloth")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderGammaFull")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderVolumeLODFactor")->getSignal()->connect(boost::bind(&handleVolumeLODChanged, _2));

View File

@ -937,7 +937,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
gCubeSnapshot = TRUE;
mRT = &mAuxillaryRT;
U32 res = LL_REFLECTION_PROBE_RESOLUTION * 2;
allocateScreenBuffer(res, res, 0);
allocateScreenBuffer(res, res, samples);
mRT = &mMainRT;
gCubeSnapshot = FALSE;
}

View File

@ -592,8 +592,6 @@ BOOL FloaterQuickPrefs::postBuild()
// Phototools additions
if (getIsPhototools())
{
mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
mCtrlDeferred = getChild<LLCheckBoxCtrl>("RenderDeferred");
mCtrlUseSSAO = getChild<LLCheckBoxCtrl>("UseSSAO");
mCtrlUseDoF = getChild<LLCheckBoxCtrl>("UseDepthofField");
mCtrlShadowDetail = getChild<LLComboBox>("ShadowDetail");
@ -1049,8 +1047,6 @@ void FloaterQuickPrefs::refreshSettings()
BOOL reflections = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps;
mCtrlReflectionDetail->setEnabled(reflections);
mCtrlWindLight->setEnabled((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV) && !gRlvHandler.hasBehaviour(RLV_BHVR_SETSPHERE)) || (!gSavedSettings.getBOOL("WindLightUseAtmosShaders")) );
LLTextBox* sky_label = getChild<LLTextBox>("T_Sky_Detail");
LLSlider* sky_slider = getChild<LLSlider>("SB_Sky_Detail");
LLSpinCtrl* sky_spinner = getChild<LLSpinCtrl>("S_Sky_Detail");
@ -1061,17 +1057,7 @@ void FloaterQuickPrefs::refreshSettings()
sky_spinner->setEnabled(TRUE);
sky_default_button->setEnabled(TRUE);
BOOL bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump") && gSavedSettings.getBOOL("RenderObjectBump");
BOOL shaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
bumpshiny &&
shaders &&
gGLManager.mHasFramebufferObject &&
(mCtrlWindLight->get()) ? TRUE : FALSE;
mCtrlDeferred->setEnabled(enabled);
enabled = enabled && LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO") && (mCtrlDeferred->get() ? TRUE : FALSE);
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO");
mCtrlUseSSAO->setEnabled(enabled);
mCtrlUseDoF->setEnabled(enabled);
@ -1083,15 +1069,11 @@ void FloaterQuickPrefs::refreshSettings()
// disabled windlight
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
{
mCtrlWindLight->setEnabled(FALSE);
mCtrlWindLight->setValue(FALSE);
sky_label->setEnabled(FALSE);
sky_slider->setEnabled(FALSE);
sky_spinner->setEnabled(FALSE);
sky_default_button->setEnabled(FALSE);
//deferred needs windlight, disable deferred
mCtrlShadowDetail->setEnabled(FALSE);
mCtrlShadowDetail->setValue(0);
@ -1100,9 +1082,6 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlUseDoF->setEnabled(FALSE);
mCtrlUseDoF->setValue(FALSE);
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
}
// disabled deferred
@ -1117,9 +1096,6 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlUseDoF->setEnabled(FALSE);
mCtrlUseDoF->setValue(FALSE);
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
}
// disabled deferred SSAO

View File

@ -119,8 +119,6 @@ private:
LLComboBox* mDayCyclePresetsCombo;
// Phototools additions
LLCheckBoxCtrl* mCtrlWindLight;
LLCheckBoxCtrl* mCtrlDeferred;
LLCheckBoxCtrl* mCtrlUseSSAO;
LLCheckBoxCtrl* mCtrlUseDoF;
LLComboBox* mCtrlShadowDetail;

View File

@ -245,7 +245,7 @@
layout="topleft"
left_delta="0"
top_pad="5"
max_val="100"
max_val="1"
name="metalness factor"
width="64"
/>
@ -270,7 +270,8 @@
layout="topleft"
left_delta="0"
top_pad="5"
max_val="100"
max_val="1"
name="roughness factor"
width="64"
/>

View File

@ -61,30 +61,6 @@
</text>
</panel>
<panel
name="P_WL_Settings"
follows="top|left"
layout="topleft"
top_pad="5"
left="4"
width="275"
height="27"
border_visible="true"
background_visible="true">
<check_box
control_name="WindLightUseAtmosShaders"
height="16"
initial_value="true"
label="Enable Atmospheric Shaders"
layout="topleft"
left="5"
name="WindLightUseAtmosShaders"
top_pad="8"
tool_tip="This will enable full EEP functionality (atmospheric shaders)."
width="240">
</check_box>
</panel>
<panel
name="P_WL_Sky_Water"
follows="top|left"
@ -661,21 +637,9 @@
top_pad="5"
left="4"
width="275"
height="65"
height="45"
border_visible="true"
background_visible="true">
<check_box
control_name="RenderDeferred"
height="16"
initial_value="true"
label="Enable Advanced Lighting Model"
layout="topleft"
left="5"
name="RenderDeferred"
top_pad="8"
tool_tip="This will enable shadows from the Sun and Moon and in-world light sources. It will also allow you to turn on Depth of Field and other graphic features. Basically you need to turn this on to see most of the 'eye candy' in-world. If you cannot enable this feature or see its effect, first ensure Atmospheric Shaders is enabled in tab 'Env'."
width="240">
</check_box>
<check_box
control_name="RenderLocalLights"
height="16"
@ -684,7 +648,7 @@
left="5"
name="LocalLights"
tool_tip="This will turn on all in-world lights. If you disable this feature, light from Sun and Moon will still appear. Useful when you wish to eliminate SIM lighting and use only the Sun and Moon light."
top_pad="2"
top_pad="7"
width="240"/>
<check_box
follows="top|left"

View File

@ -289,52 +289,6 @@
top_delta="16"
width="335" />
<slider
control_name="RenderFogRatio"
follows="left|top"
height="16"
initial_value="4"
decimal_digits="1"
label="Fog Distance Ratio:"
label_width="185"
layout="topleft"
left="30"
name="fog"
min_val="0.5"
max_val="10"
increment="0.1"
top_delta="16"
width="332" />
<slider
control_name="RenderGamma"
follows="left|top"
height="16"
initial_value="1"
decimal_digits="2"
label="Gamma:"
label_width="185"
layout="topleft"
left="30"
name="gamma"
min_val="0"
max_val="2"
increment="0.01"
top_delta="16"
width="332" />
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
left="30"
name="(brightness, lower is brighter)"
top_delta="16"
width="260">
(0 = default brightness, lower = brighter)
</text>
<check_box
control_name="RenderAnisotropic"
height="16"
@ -601,20 +555,6 @@
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderObjectBump"
height="16"
initial_value="true"
label="Bump mapping and shiny"
layout="topleft"
left="420"
name="BumpShiny"
top_delta="16"
width="300">
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderLocalLights"
height="16"
@ -626,52 +566,6 @@
top_delta="16"
width="300" />
<!-- <FS:LO> remove orphaned code left over from EEP
<slider
control_name="RenderTerrainDetail"
follows="left|top"
height="16"
label="Terrain Detail:"
label_width="165"
layout="topleft"
left="440"
show_text="false"
initial_value="0"
increment="1"
min_val="0"
max_val="1"
name="TerrainDetail"
top_delta="16"
width="280" >
<slider.commit_callback
function="Pref.UpdateSliderText"
parameter="TerrainDetail" />
</slider> -->
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
top_delta="0"
left_delta="284"
name="TerrainDetailText"
text_readonly_color="LabelDisabledColor"
width="65">
Low
</text>
<check_box
control_name="RenderAvatarCloth"
height="16"
initial_value="true"
label="Avatar cloth"
layout="topleft"
left="440"
name="AvatarCloth"
top_delta="16"
width="280" />
<text
type="string"
length="1"
@ -681,7 +575,7 @@
name="ReflectionsText"
text_readonly_color="LabelDisabledColor"
top_delta="16"
left="440"
left="420"
width="128">
Water Reflections:
</text>
@ -723,20 +617,6 @@
value="4"/>
</combo_box>
<check_box
control_name="WindLightUseAtmosShaders"
height="16"
initial_value="true"
label="Atmospheric shaders"
layout="topleft"
left="440"
name="WindLightUseAtmosShaders"
top_delta="16"
width="280">
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<slider
control_name="WLSkyDetail"
decimal_digits="0"
@ -747,7 +627,7 @@
label="Sky:"
label_width="145"
layout="topleft"
left="460"
left="420"
min_val="16"
max_val="128"
name="SkyMeshDetail"
@ -772,27 +652,13 @@
Low
</text>
<check_box
control_name="RenderDeferred"
height="16"
initial_value="true"
label="Advanced Lighting Model"
layout="topleft"
left="460"
name="UseLightShaders"
top_delta="16"
width="260">
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderDeferredSSAO"
height="16"
initial_value="true"
label="Ambient Occlusion"
layout="topleft"
left="480"
left="420"
name="UseSSAO"
top_delta="16"
width="240">
@ -806,7 +672,7 @@
initial_value="true"
label="Depth of Field"
layout="topleft"
left="480"
left="420"
name="UseDoF"
top_delta="16"
width="240">
@ -814,29 +680,13 @@
function="Pref.RenderOptionUpdate" />
</check_box>
<!--
<check_box
control_name="RenderUseAdvancedAtmospherics"
height="16"
initial_value="true"
label="Advanced Atmospherics"
layout="topleft"
left="480"
name="UseAdvancedAtmo"
top_delta="16"
width="240">
<check_box.commit_callback
function="Pref.AdvancedAtmosphericsEnable" />
</check_box>
-->
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
left="480"
left="420"
name="RenderShadowDetailText"
text_readonly_color="LabelDisabledColor"
top_delta="16"
@ -870,7 +720,7 @@
follows="left|top"
height="16"
layout="topleft"
left="480"
left="420"
name="RenderReflectionDetailText"
text_readonly_color="LabelDisabledColor"
top_delta="16"
@ -906,7 +756,7 @@
layout="topleft"
left="13"
name="horiz_border"
top_pad="21"
top="338"
top_delta="5"
width="774"/>
<button
@ -916,7 +766,7 @@
layout="topleft"
left="20"
name="Defaults"
top_delta="10"
top_delta="20"
width="210">
<button.commit_callback
function="Pref.HardwareDefaults" />

View File

@ -4458,7 +4458,7 @@
parameter="RenderDebugPipeline" />
</menu_item_check>
<menu_item_check
label="Automatic Alpha Masks (deferred)"
label="Automatic Alpha Masks"
name="Automatic Alpha Masks (deferred)">
<menu_item_check.on_check
function="CheckControl"
@ -4467,16 +4467,6 @@
function="ToggleControl"
parameter="RenderAutoMaskAlphaDeferred" />
</menu_item_check>
<menu_item_check
label="Automatic Alpha Masks (non-deferred)"
name="Automatic Alpha Masks (non-deferred)">
<menu_item_check.on_check
function="CheckControl"
parameter="RenderAutoMaskAlphaNonDeferred" />
<menu_item_check.on_click
function="ToggleControl"
parameter="RenderAutoMaskAlphaNonDeferred" />
</menu_item_check>
<menu_item_check
label="Animation Textures"
name="Animation Textures">

View File

@ -257,19 +257,6 @@
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderObjectBump"
height="16"
initial_value="true"
label="Bump mapping and shiny"
layout="topleft"
left_delta="0"
name="BumpShiny"
top_pad="1"
width="256" >
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderLocalLights"
height="16"
@ -280,33 +267,6 @@
name="LocalLights"
top_pad="1"
width="256" />
<check_box
control_name="WindLightUseAtmosShaders"
height="16"
initial_value="true"
label="Atmospheric shaders"
layout="topleft"
left_delta="0"
name="WindLightUseAtmosShaders"
top_pad="1"
width="256">
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderDeferred"
height="16"
initial_value="true"
label="Advanced Lighting Model"
tool_tip="Enables advanced light rendering."
layout="topleft"
left_delta="0"
name="UseLightShaders"
top_pad="1"
width="256">
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
<check_box
control_name="RenderDeferredSSAO"
height="16"
@ -772,65 +732,6 @@
top_delta="0"
width="0">
</text>
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left_delta="0"
name="AvatarRenderingText"
top_pad="12"
width="128">
Avatar Rendering:
</text>
<check_box
control_name="RenderAvatarCloth"
height="16"
initial_value="true"
label="Avatar cloth"
layout="topleft"
left_delta="0"
name="AvatarCloth"
top_pad="5"
width="256" />
<!-- <FS:LO> remove orphaned code left over from EEP
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left_delta="200"
name="TerrainDetailText"
top_pad="-50"
width="155">
Terrain detail:
</text>
<radio_group
control_name="RenderTerrainDetail"
height="38"
layout="topleft"
left_delta="5"
name="TerrainDetailRadio"
top_pad="5"
width="70">
<radio_item
height="16"
label="Low"
layout="topleft"
name="0"
top="3"
width="50" />
<radio_item
height="16"
label="High"
layout="topleft"
name="2"
top_delta="16"
width="50" />
</radio_group>-->
<text
type="string"
@ -840,7 +741,7 @@
layout="topleft"
left="200"
name="Presets_Label"
top_pad="7"
top_pad="20"
width="155">
Presets:
</text>
@ -1009,33 +910,6 @@
value="16" />
</combo_box>
<spinner
control_name="RenderGamma"
decimal_digits="2"
follows="left|top"
height="16"
increment="0.01"
initial_value="1"
label="Gamma:"
label_width="198"
layout="topleft"
left="10"
max_val="2"
name="gamma"
top_pad="10"
width="262" />
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left_pad="5"
name="brightness text"
top_delta="2"
width="385">
(0/1.0 = default brightness, lower = brighter)
</text>
<slider
control_name="TextureMemory"
decimal_digits="0"
@ -1050,7 +924,7 @@
max_val="2048"
name="GraphicsCardTextureMemory"
tool_tip="Amount of memory to allocate for textures. Defaults to video card memory up to 512MB on 32bit systems and up to 2048MB on 64bit systems, depending on the available dedicated video memory of the video card. Reducing this may improve performance but may also make textures blurry."
top_pad="18"
top_pad="10"
width="360" />
<check_box
control_name="FSDynamicTextureMemory"
@ -1111,21 +985,6 @@
tool_tip="The percentage of physical video memory reserved for other usage."
top_pad="5"
width="475" />
<spinner
control_name="RenderFogRatio"
decimal_digits="1"
follows="left|top"
height="22"
initial_value="4"
label="Fog Distance Ratio:"
label_width="198"
layout="topleft"
left="10"
max_val="10"
min_val="0.5"
name="fog"
top_pad="7"
width="262" />
<spinner
control_name="FSImageDecodeThreads"
decimal_digits="0"
@ -1257,27 +1116,16 @@
Alpha Mask Rendering:
</text>
<check_box
control_name="RenderAutoMaskAlphaNonDeferred"
height="16"
initial_value="false"
label="Render alpha masks when 'Advanced Lighting Model' is not enabled"
tool_tip="When ticked this makes the Alpha masks (see-thru bits) render correctly when ALM is not selected"
layout="topleft"
left_delta="10"
name="RenderAutoMaskAlphaNonDeferred"
top_pad="6"
width="256"/>
<check_box
control_name="RenderAutoMaskAlphaDeferred"
height="16"
initial_value="false"
label="Render alpha masks when 'Advanced Lighting Model' is enabled"
tool_tip="When ticked this makes the Alpha masks (see-thru bits) render correctly when ALM is selected"
label="Render alpha masks"
tool_tip="When ticked this makes the Alpha masks (see-thru bits) render correctly"
layout="topleft"
left_delta="0"
left_delta="10"
name="RenderAutoMaskAlphaDeferred"
top_pad="2"
top_pad="6"
width="256"/>
<text