SL-11545, SL-11543, SL-10625
Fix emissives without normal maps clobbering the alpha output in materialF. Modify glow size calc to get close to pre-EEP sun glow behavior (may require sky vert settings >= mid). Make bake ignore alpha readback for Intel until we can determine why their drivers now go boom.meow-7.2.2
parent
7e5000bb64
commit
48f169423b
|
|
@ -1065,7 +1065,7 @@ LLTexLayer::~LLTexLayer()
|
|||
iter != mAlphaCache.end(); iter++ )
|
||||
{
|
||||
U8* alpha_data = iter->second;
|
||||
delete [] alpha_data;
|
||||
ll_aligned_free_32(alpha_data);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1572,7 +1572,7 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
|
|||
{
|
||||
alpha_cache_t::iterator iter2 = mAlphaCache.begin(); // arbitrarily grab the first entry
|
||||
alpha_data = iter2->second;
|
||||
delete [] alpha_data;
|
||||
ll_aligned_free_32(alpha_data);
|
||||
mAlphaCache.erase(iter2);
|
||||
}
|
||||
|
||||
|
|
@ -1588,7 +1588,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
|
|||
mAlphaCache[cache_index] = alpha_data;
|
||||
|
||||
bool skip_readback = LLRender::sNsightDebugSupport; // nSight doesn't support use of glReadPixels
|
||||
// || gGLManager.mIsIntel; SL-10625?
|
||||
|
||||
// SL-10625 and neither does Intel in many cases
|
||||
skip_readback = skip_readback || gGLManager.mIsIntel;
|
||||
|
||||
if (!skip_readback)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -273,15 +273,11 @@ void main()
|
|||
vec2 abnormal = encode_normal(norm.xyz);
|
||||
|
||||
vec4 final_color = diffuse_linear;
|
||||
|
||||
#if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE)
|
||||
final_color.a = emissive_brightness;
|
||||
#else
|
||||
final_color.a = max(final_color.a, emissive_brightness);
|
||||
#endif
|
||||
|
||||
#if !defined(HAS_NORMAL_MAP)
|
||||
final_color.a = 0.0f;
|
||||
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_EMISSIVE)
|
||||
// nop, use content of alpha emissive mask as is...
|
||||
#else
|
||||
final_color.a = emissive_brightness;
|
||||
#endif
|
||||
|
||||
vec4 final_specular = spec;
|
||||
|
|
@ -459,6 +455,8 @@ vec3 post_atmo = color.rgb;
|
|||
|
||||
#else
|
||||
// deferred path
|
||||
|
||||
final_color = diffuse_linear;
|
||||
frag_data[0] = final_color;
|
||||
frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent.
|
||||
frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity.
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ void main()
|
|||
// temp2.x is 0 at the sun and increases away from sun
|
||||
temp2.x = max(temp2.x, .001);
|
||||
// Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
|
||||
temp2.x *= glow.x;
|
||||
temp2.x *= glow.x * 0.33333;
|
||||
// Higher glow.x gives dimmer glow (because next step is 1 / "angle")
|
||||
temp2.x = pow(temp2.x, glow.z);
|
||||
// glow.z should be negative, so we're doing a sort of (1 / "angle") function
|
||||
|
|
|
|||
|
|
@ -70,10 +70,6 @@ void main()
|
|||
|
||||
vec4 color = calcLighting(pos.xyz, norm, vec4(1.0));
|
||||
|
||||
#if defined(ALM)
|
||||
color.rgb *= 0.5f;
|
||||
#endif
|
||||
|
||||
vertex_color.rgb = color.rgb;
|
||||
|
||||
// Transform and pass tex coords
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, o
|
|||
vec4 light_atten;
|
||||
|
||||
float dens_mul = density_multiplier;
|
||||
float dist_mul = max(0.05, distance_multiplier);
|
||||
float dist_mul = distance_multiplier;
|
||||
|
||||
//sunlight attenuation effect (hue and brightness) due to atmosphere
|
||||
//this is used later for sunlight modulation at various altitudes
|
||||
|
|
@ -107,9 +107,9 @@ void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, o
|
|||
//temp2.x is 0 at the sun and increases away from sun
|
||||
temp2.x = max(temp2.x, .001); //was glow.y
|
||||
//set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
|
||||
temp2.x *= glow.x * 1.8;
|
||||
temp2.x *= glow.x;
|
||||
//higher glow.x gives dimmer glow (because next step is 1 / "angle")
|
||||
temp2.x = pow(temp2.x, glow.z * 0.2);
|
||||
temp2.x = pow(temp2.x, glow.z);
|
||||
//glow.z should be negative, so we're doing a sort of (1 / "angle") function
|
||||
|
||||
//add "minimum anti-solar illumination"
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ void main()
|
|||
// temp2.x is 0 at the sun and increases away from sun
|
||||
temp2.x = max(temp2.x, .001);
|
||||
// Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
|
||||
temp2.x *= glow.x;
|
||||
temp2.x *= glow.x * 0.33333;
|
||||
// Higher glow.x gives dimmer glow (because next step is 1 / "angle")
|
||||
temp2.x = pow(temp2.x, glow.z);
|
||||
// glow.z should be negative, so we're doing a sort of (1 / "angle") function
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ void main()
|
|||
// temp2.x is 0 at the sun and increases away from sun
|
||||
temp2.x = max(temp2.x, .001);
|
||||
// Set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
|
||||
temp2.x *= glow.x;
|
||||
temp2.x *= glow.x * 0.333333;
|
||||
// Higher glow.x gives dimmer glow (because next step is 1 / "angle")
|
||||
temp2.x = pow(temp2.x, glow.z);
|
||||
// glow.z should be negative, so we're doing a sort of (1 / "angle") function
|
||||
|
|
|
|||
Loading…
Reference in New Issue