diff --git a/doc/contributions.txt b/doc/contributions.txt index af8b259c7492a1796e2fa263ae632f9f81a0383f..2fbe8ab7cc49d1cd2451219f9c3375c292c0d8b1 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -596,6 +596,7 @@ Henri Beauchamp SL-15175 SL-19110 SL-19159 + [NO JIRA] (fullbright HUD alpha fix) herina Bode Hikkoshi Sakai VWR-429 diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 8b2a69b92492c520326753b6c54d7855e25abc36..a6fab107914468eee27c9b035a239634d3e0aedc 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -76,9 +76,9 @@ void main() vec3 pos = vary_position; + color.a = final_alpha; #ifndef IS_HUD color.rgb = srgb_to_linear(color.rgb); - color.a = final_alpha; #ifdef IS_ALPHA vec3 sunlit; diff --git a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl index e8f7d73f1fead655cdfd875149c83458ee81f891..229f332b36ef081c66829064129656d9f1569211 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl @@ -102,6 +102,6 @@ void main() alpha = 1.0; } - frag_color.rgb = max(color.rgb, vec3(0)); //output linear since local lights will be added to this shader's results - frag_color.a = alpha; + frag_color = max(vec4(color.rgb, alpha), vec4(0)); //output linear since local lights will be added to this shader's results + } diff --git a/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl index 13619a82d30bcdff504e9f7aba30e7e707f9096a..f6b8299f91454efa42ae0e13c62b1cc18fe82334 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl @@ -60,6 +60,6 @@ void main() vec4 fogged = getWaterFogView(pos.xyz); - frag_color.rgb = max(fogged.rgb, vec3(0)); //output linear since local lights will be added to this shader's results - frag_color.a = fogged.a; + frag_color = max(fogged, vec4(0)); //output linear since local lights will be added to this shader's results + } diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 871a0d8e8875e0466b10080722dfe3d569037bc2..3579883c9ee246d13c274a305ebb95f19e57202e 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -4197,6 +4197,7 @@ void LLPanelFace::onCopyTexture() te_data["te"]["bumpmap"] = tep->getBumpmap(); te_data["te"]["bumpshiny"] = tep->getBumpShiny(); te_data["te"]["bumpfullbright"] = tep->getBumpShinyFullbright(); + te_data["te"]["texgen"] = tep->getTexGen(); te_data["te"]["pbr"] = objectp->getRenderMaterialID(te); if (tep->getGLTFMaterialOverride() != nullptr) { @@ -4592,6 +4593,11 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te) { objectp->setTEBumpShinyFullbright(te, (U8)te_data["te"]["bumpfullbright"].asInteger()); } + if (te_data["te"].has("texgen")) + { + objectp->setTETexGen(te, (U8)te_data["te"]["texgen"].asInteger()); + } + // PBR/GLTF if (te_data["te"].has("pbr")) { @@ -4703,11 +4709,11 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te) LLSelectedTEMaterial::setSpecularOffsetX(this, (F32)te_data["material"]["SpecOffX"].asReal(), te, object_id); LLSelectedTEMaterial::setSpecularOffsetY(this, (F32)te_data["material"]["SpecOffY"].asReal(), te, object_id); LLSelectedTEMaterial::setSpecularRotation(this, (F32)te_data["material"]["SpecRot"].asReal(), te, object_id); - LLColor4 spec_color(te_data["material"]["SpecColor"]); + LLColor4U spec_color(te_data["material"]["SpecColor"]); LLSelectedTEMaterial::setSpecularLightColor(this, spec_color, te); LLSelectedTEMaterial::setSpecularLightExponent(this, (U8)te_data["material"]["SpecExp"].asInteger(), te, object_id); LLSelectedTEMaterial::setEnvironmentIntensity(this, (U8)te_data["material"]["EnvIntensity"].asInteger(), te, object_id); - LLSelectedTEMaterial::setDiffuseAlphaMode(this, (U8)te_data["material"]["SpecRot"].asInteger(), te, object_id); + LLSelectedTEMaterial::setDiffuseAlphaMode(this, (U8)te_data["material"]["DiffuseAlphaMode"].asInteger(), te, object_id); if (te_data.has("te") && te_data["te"].has("shiny")) { objectp->setTEShiny(te, (U8)te_data["te"]["shiny"].asInteger()); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 318fcb721577e15748ded2d054545e048ddd73af..720840ac24fef9a7428ed1f5b6637459cb3f0a38 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8314,6 +8314,11 @@ void LLPipeline::doAtmospherics() { LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; + if (sImpostorRender) + { // do not attempt atmospherics on impostors + return; + } + if (RenderDeferredAtmospheric) { { @@ -8373,6 +8378,10 @@ void LLPipeline::doAtmospherics() void LLPipeline::doWaterHaze() { LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; + if (sImpostorRender) + { // do not attempt water haze on impostors + return; + } if (RenderDeferredAtmospheric) {