From 3c023813dcc254b0eb1a061e265ff5e52520a3c1 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 6 May 2024 12:34:41 -0400 Subject: Update to S3-published GHA build of slvoice. --- autobuild.xml | 226 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 120 insertions(+), 106 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 13c9e7ec35..e4802b0c55 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -455,18 +455,6 @@ emoji_shortcodes - canonical_repo - https://github.com/secondlife/3p-emoji-shortcodes - copyright - Copyright 2017-2019 Miles Johnson. - description - Emoji shortcodes - license - MIT - license_file - LICENSES/emojibase-license.txt - name - emoji_shortcodes platforms darwin64 @@ -494,8 +482,20 @@ windows64 + license + MIT + license_file + LICENSES/emojibase-license.txt + copyright + Copyright 2017-2019 Miles Johnson. version 6.1.0.579438 + name + emoji_shortcodes + canonical_repo + https://github.com/secondlife/3p-emoji-shortcodes + description + Emoji shortcodes expat @@ -655,16 +655,6 @@ freetype - copyright - Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. - description - Font rendering library - license - FreeType - license_file - LICENSES/freetype.txt - name - freetype platforms darwin64 @@ -724,8 +714,18 @@ windows64 + license + FreeType + license_file + LICENSES/freetype.txt + copyright + Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. version 2.12.1.557becd + name + freetype + description + Font rendering library glext @@ -957,18 +957,6 @@ icu4c - canonical_repo - https://bitbucket.org/lindenlab/3p-icu4c - copyright - Copyright (c) 1995-2011 International Business Machines Corporation and others <http://source.icu-project.org> - description - ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software. - license - ICU, permissive non-copyleft free software license - license_file - LICENSES/icu.txt - name - icu4c platforms darwin64 @@ -1000,8 +988,20 @@ windows64 + license + ICU, permissive non-copyleft free software license + license_file + LICENSES/icu.txt + copyright + Copyright (c) 1995-2011 International Business Machines Corporation and others <http://source.icu-project.org> version 4.8.1-7d08d82 + name + icu4c + canonical_repo + https://bitbucket.org/lindenlab/3p-icu4c + description + ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software. jpegencoderbasic @@ -1547,15 +1547,6 @@ llca - copyright - Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. - - license - mit - license_file - LICENSES/ca-license.txt - name - llca platforms common @@ -1573,8 +1564,17 @@ common + license + mit + license_file + LICENSES/ca-license.txt + copyright + Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. + version 202402012004.0 + name + llca llphysicsextensions_source @@ -1932,18 +1932,6 @@ nanosvg - canonical_repo - https://bitbucket.org/lindenlab/3p-nanosvg - copyright - Copyright (c) 2013-14 Mikko Mononen - description - NanoSVG is a simple single-header-file SVG parser and rasterizer - license - Zlib - license_file - LICENSES/nanosvg.txt - name - nanosvg platforms darwin64 @@ -1983,8 +1971,20 @@ windows64 + license + Zlib + license_file + LICENSES/nanosvg.txt + copyright + Copyright (c) 2013-14 Mikko Mononen version 2022.09.27 + name + nanosvg + canonical_repo + https://bitbucket.org/lindenlab/3p-nanosvg + description + NanoSVG is a simple single-header-file SVG parser and rasterizer nghttp2 @@ -2403,11 +2403,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors creds github hash - cc7c5bf53f83cff81d874ad66394df0991bd432c + 1e70b06fe6eb9796097010871b32d8e95167e373 hash_algorithm sha1 url - https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299352 + https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-darwin64-5942f08.tar.zst name darwin64 @@ -2431,15 +2431,29 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors creds github hash - 0c205371bb1731a9812b00556037729fdc057cbc + ddfb7c30d9756915e8b26f44e2ee3a69ee87fb9a hash_algorithm sha1 url - https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299356 + https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-windows64-5942f08.tar.zst name windows64 + windows + + archive + + hash + 9d4f47ce6780e041899e12abe6418cc26a2a8594 + hash_algorithm + sha1 + url + https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-windows-5942f08.tar.zst + + name + windows + license Mixed @@ -2448,7 +2462,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright 2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C) version - 4.10.0000.32327.5fc3fe7c.571099 + 4.10.0000.32327.5fc3fe7c.5942f08 name slvoice description @@ -2694,16 +2708,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors viewer-fonts - copyright - Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT - description - Viewer fonts - license - Various open source - license_file - LICENSES/fonts.txt - name - viewer-fonts platforms darwin64 @@ -2731,8 +2735,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + Various open source + license_file + LICENSES/fonts.txt + copyright + Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT version 1.579464 + name + viewer-fonts + description + Viewer fonts viewer-manager @@ -3051,7 +3065,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + build @@ -3071,11 +3085,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name RelWithDebInfoOS @@ -3092,7 +3106,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + build @@ -3112,11 +3126,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name ReleaseOS @@ -3137,11 +3151,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + arguments ../indra - + build @@ -3154,7 +3168,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + default True @@ -3169,7 +3183,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + build @@ -3182,7 +3196,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name RelWithDebInfoOS @@ -3195,11 +3209,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + arguments ../indra - + build @@ -3212,7 +3226,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name Release @@ -3225,7 +3239,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + build @@ -3238,7 +3252,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name ReleaseOS @@ -3262,11 +3276,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja -DLL_TESTS=Off - + arguments ../indra - + build @@ -3287,7 +3301,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja -DLL_TESTS=Off - + build @@ -3325,11 +3339,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments ..\indra - + build @@ -3339,11 +3353,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /build RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments SecondLife.sln - + default True @@ -3363,11 +3377,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - + arguments ..\indra - + build @@ -3381,11 +3395,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - + arguments SecondLife.sln - + name RelWithDebInfoOS @@ -3400,11 +3414,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments ..\indra - + build @@ -3414,11 +3428,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /build Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments SecondLife.sln - + name Release @@ -3437,11 +3451,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - + arguments ..\indra - + build @@ -3455,11 +3469,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - + arguments SecondLife.sln - + name ReleaseOS @@ -3487,4 +3501,4 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Second Life Viewer - + \ No newline at end of file -- cgit v1.2.3 From 442cc12d4db5023c7ec33d10b9ac138916d7d29e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 8 May 2024 09:38:50 -0400 Subject: Build both platforms on GitHub to help diagnose slvoice URL trouble. --- .github/workflows/build.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4785273b78..95e98e5b8c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,6 +16,8 @@ jobs: include: - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" + # DO NOT MERGE THIS LINE! continue-on-error=true is only for diagnosis. + continue-on-error: true runs-on: ${{ matrix.runner }} outputs: viewer_channel: ${{ steps.build.outputs.viewer_channel }} -- cgit v1.2.3 From ca5e89d741b3618ab1dc681ecb6f75e5884988d7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Geenz\" Goodman" Date: Wed, 8 May 2024 11:28:51 -0700 Subject: Even more mirror fixes. (#1429) #1271 Add support for mirrors that do not have avatars in them. It does this based on if the probe is set to dynamic or not. #1370 More optimization work to reduce GPU utilization. #1058 - Removed sim feature flag that was overriding mirrors enabled flags secondlife/viewer-private#128 - Locally cache the mirror probe #679 Add additional options to the build floater for mirror probes, including descriptions. --- indra/newview/featuretable.txt | 7 ++- indra/newview/featuretable_mac.txt | 11 ++-- indra/newview/llheroprobemanager.cpp | 73 +++++++++++++++------- indra/newview/llheroprobemanager.h | 2 +- indra/newview/llpanelvolume.cpp | 26 +++++--- indra/newview/llviewerregion.cpp | 8 --- indra/newview/llvovolume.cpp | 7 +++ .../newview/skins/default/xui/en/floater_tools.xml | 12 ++-- 8 files changed, 91 insertions(+), 55 deletions(-) diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 3e1e235fcd..8950770172 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -75,6 +75,7 @@ RenderGLMultiThreadedTextures 1 0 RenderGLMultiThreadedMedia 1 1 RenderReflectionProbeResolution 1 128 RenderScreenSpaceReflections 1 1 +RenderMirrors 1 1 // @@ -251,8 +252,8 @@ RenderReflectionsEnabled 1 1 RenderReflectionProbeDetail 1 1 RenderScreenSpaceReflections 1 0 RenderReflectionProbeLevel 1 3 -RenderMirrors 1 0 -RenderHeroProbeResolution 1 1024 +RenderMirrors 1 1 +RenderHeroProbeResolution 1 512 RenderHeroProbeDistance 1 8 RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 8 @@ -287,7 +288,7 @@ RenderReflectionsEnabled 1 1 RenderReflectionProbeDetail 1 1 RenderScreenSpaceReflections 1 0 RenderReflectionProbeLevel 1 3 -RenderMirrors 1 0 +RenderMirrors 1 1 RenderHeroProbeResolution 1 1024 RenderHeroProbeDistance 1 16 RenderHeroProbeUpdateRate 1 1 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 2ffefadcc1..8c71235f37 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -74,6 +74,7 @@ RenderReflectionsEnabled 1 1 RenderReflectionProbeDetail 1 2 RenderScreenSpaceReflections 1 1 RenderReflectionProbeLevel 1 3 +RenderMirrors 1 1 // // Low Graphics Settings @@ -249,8 +250,8 @@ RenderReflectionsEnabled 1 1 RenderReflectionProbeDetail 1 1 RenderScreenSpaceReflections 1 0 RenderReflectionProbeLevel 1 1 -RenderMirrors 1 0 -RenderHeroProbeResolution 1 1024 +RenderMirrors 1 1 +RenderHeroProbeResolution 1 512 RenderHeroProbeDistance 1 8 RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 8 @@ -285,8 +286,8 @@ RenderReflectionsEnabled 1 1 RenderReflectionProbeDetail 1 1 RenderScreenSpaceReflections 1 0 RenderReflectionProbeLevel 1 2 -RenderMirrors 1 0 -RenderHeroProbeResolution 1 1024 +RenderMirrors 1 1 +RenderHeroProbeResolution 1 512 RenderHeroProbeDistance 1 16 RenderHeroProbeUpdateRate 1 1 RenderHeroProbeConservativeUpdateMultiplier 1 4 @@ -322,7 +323,7 @@ RenderReflectionProbeDetail 1 1 RenderScreenSpaceReflections 1 0 RenderReflectionProbeLevel 1 3 RenderMirrors 1 1 -RenderHeroProbeResolution 1 2048 +RenderHeroProbeResolution 1 1024 RenderHeroProbeDistance 1 16 RenderHeroProbeUpdateRate 1 1 RenderHeroProbeConservativeUpdateMultiplier 1 4 diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp index dd29b416fb..55539a49d8 100644 --- a/indra/newview/llheroprobemanager.cpp +++ b/indra/newview/llheroprobemanager.cpp @@ -113,22 +113,40 @@ void LLHeroProbeManager::update() LLVector4a probe_pos; LLVector3 camera_pos = LLViewerCamera::instance().mOrigin; F32 near_clip = 0.1f; + bool probe_present = false; + LLQuaternion cameraOrientation = LLViewerCamera::instance().getQuaternion(); + LLVector3 cameraDirection = LLVector3::z_axis * cameraOrientation; + if (mHeroVOList.size() > 0) { // Find our nearest hero candidate. - float last_distance = 99999.f; - + float camera_center_distance = 99999.f; for (auto vo : mHeroVOList) { if (vo && !vo->isDead() && vo->mDrawable.notNull()) { float distance = (LLViewerCamera::instance().getOrigin() - vo->getPositionAgent()).magVec(); - if (distance < last_distance) + float center_distance = cameraDirection * (vo->getPositionAgent() - camera_pos); + + if (distance > LLViewerCamera::instance().getFar()) + continue; + + LLVector4a center; + center.load3(vo->getPositionAgent().mV); + LLVector4a size; + + size.load3(vo->getScale().mV); + + bool visible = LLViewerCamera::instance().AABBInFrustum(center, size); + + if (distance < last_distance && center_distance < camera_center_distance && visible) { - mNearestHero = vo; - last_distance = distance; - } + probe_present = true; + mNearestHero = vo; + last_distance = distance; + camera_center_distance = center_distance; + } } else { @@ -136,6 +154,10 @@ void LLHeroProbeManager::update() } } + // Don't even try to do anything if we didn't find a single mirror present. + if (!probe_present) + return; + if (mNearestHero != nullptr && !mNearestHero->isDead() && mNearestHero->mDrawable.notNull()) { LLVector3 hero_pos = mNearestHero->getPositionAgent(); @@ -152,14 +174,12 @@ void LLHeroProbeManager::update() mCurrentClipPlane.setVec(hero_pos, face_normal); mMirrorPosition = hero_pos; mMirrorNormal = face_normal; - probe_pos.load3(point.mV); - // Collect the list of faces that need updating based upon the camera's rotation. - LLVector3 cam_direction = LLVector3(0, 0, 1) * LLViewerCamera::instance().getQuaternion(); - cam_direction.normalize(); + // Detect visible faces of a cube based on camera direction and distance + // Define the cube faces static LLVector3 cubeFaces[6] = { LLVector3(1, 0, 0), LLVector3(-1, 0, 0), @@ -169,17 +189,21 @@ void LLHeroProbeManager::update() LLVector3(0, 0, -1) }; + // Iterate through each face of the cube for (int i = 0; i < 6; i++) { - float shouldUpdate = fminf(1, (fmaxf(-1, cam_direction * cubeFaces[i]) * 0.5 + 0.5)); - - int updateRate = ceilf((1 - shouldUpdate) * gPipeline.RenderHeroProbeConservativeUpdateMultiplier); - - // Chances are this is a face that's non-visible to the camera when it's being reflected. - // Set it to 0. It will be skipped below. - if (updateRate == gPipeline.RenderHeroProbeConservativeUpdateMultiplier) + float cube_facing = fmax(-1, fmin(1.0f, cameraDirection * cubeFaces[i])) * 0.6 + 0.4; + + float updateRate; + if (cube_facing < 0.1f) + { updateRate = 0; - + } + else + { + updateRate = ceilf(cube_facing * gPipeline.RenderHeroProbeConservativeUpdateMultiplier); + } + mFaceUpdateList[i] = updateRate; } } @@ -199,6 +223,7 @@ void LLHeroProbeManager::update() static LLCachedControl sDetail(gSavedSettings, "RenderHeroReflectionProbeDetail", -1); static LLCachedControl sLevel(gSavedSettings, "RenderHeroReflectionProbeLevel", 3); + if (mNearestHero != nullptr) { LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("hpmu - realtime"); // Probe 0 is always our mirror probe. @@ -208,13 +233,16 @@ void LLHeroProbeManager::update() gPipeline.mReflectionMapManager.mRadiancePass = true; mRenderingMirror = true; + + doOcclusion(); + for (U32 j = 0; j < mProbes.size(); j++) { for (U32 i = 0; i < 6; ++i) { if (mFaceUpdateList[i] > 0 && mCurrentProbeUpdateFrame % mFaceUpdateList[i] == 0) { - updateProbeFace(mProbes[j], i, near_clip); + updateProbeFace(mProbes[j], i, mNearestHero->getReflectionProbeIsDynamic() && sDetail > 0, near_clip); mCurrentProbeUpdateFrame = 0; } } @@ -239,18 +267,17 @@ void LLHeroProbeManager::update() // The next six passes render the scene with both radiance and irradiance into the same scratch space cube map and generate a simple mip chain. // At the end of these passes, a radiance map is generated for this probe and placed into the radiance cube map array at the index for this probe. // In effect this simulates single-bounce lighting. -void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face, F32 near_clip) +void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face, bool is_dynamic, F32 near_clip) { // hacky hot-swap of camera specific render targets gPipeline.mRT = &gPipeline.mHeroProbeRT; - probe->update(mRenderTarget.getWidth(), face, true, near_clip); + probe->update(mRenderTarget.getWidth(), face, is_dynamic, near_clip); gPipeline.mRT = &gPipeline.mMainRT; S32 sourceIdx = mReflectionProbeCount; - // Unlike the reflectionmap manager, all probes are considered "realtime" for hero probes. sourceIdx += 1; @@ -371,8 +398,6 @@ void LLHeroProbeManager::generateRadiance(LLReflectionMap* probe) static LLStaticHashedString sSourceIdx("sourceIdx"); { - - // generate radiance map (even if this is not the irradiance map, we need the mip chain for the irradiance map) gHeroRadianceGenProgram.bind(); mVertexBuffer->setBuffer(); diff --git a/indra/newview/llheroprobemanager.h b/indra/newview/llheroprobemanager.h index d5e720e8e8..5df146f2f1 100644 --- a/indra/newview/llheroprobemanager.h +++ b/indra/newview/llheroprobemanager.h @@ -116,7 +116,7 @@ private: // update the specified face of the specified probe - void updateProbeFace(LLReflectionMap* probe, U32 face, F32 near_clip); + void updateProbeFace(LLReflectionMap* probe, U32 face, bool is_dynamic, F32 near_clip); void generateRadiance(LLReflectionMap *probe); // list of active reflection maps diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index 8d8263448d..91c33b461f 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -424,19 +424,21 @@ void LLPanelVolume::getState( ) volume_type = "Sphere"; } - std::string update_type; - if (volobjp->getReflectionProbeIsDynamic()) + + std::string update_type = "Static"; + + if (volobjp->getReflectionProbeIsDynamic() && !volobjp->getReflectionProbeIsMirror()) { update_type = "Dynamic"; } - else if (volobjp->getReflectionProbeIsMirror()) + else if (volobjp->getReflectionProbeIsMirror() && !volobjp->getReflectionProbeIsDynamic()) { update_type = "Mirror"; } - else - { - update_type = "Static"; + else if (volobjp->getReflectionProbeIsDynamic() && volobjp->getReflectionProbeIsMirror()) + { + update_type = "Dynamic Mirror"; } getChildView("Probe Ambiance")->setEnabled(update_type != "Mirror"); @@ -1200,6 +1202,7 @@ void LLPanelVolume::onCopyLight() clipboard["reflection_probe"]["ambiance"] = volobjp->getReflectionProbeAmbiance(); clipboard["reflection_probe"]["near_clip"] = volobjp->getReflectionProbeNearClip(); clipboard["reflection_probe"]["dynamic"] = volobjp->getReflectionProbeIsDynamic(); + clipboard["reflection_probe"]["mirror"] = volobjp->getReflectionProbeIsMirror(); } mClipboardParams["light"] = clipboard; @@ -1257,6 +1260,7 @@ void LLPanelVolume::onPasteLight() volobjp->setReflectionProbeAmbiance((F32)clipboard["reflection_probe"]["ambiance"].asReal()); volobjp->setReflectionProbeNearClip((F32)clipboard["reflection_probe"]["near_clip"].asReal()); volobjp->setReflectionProbeIsDynamic(clipboard["reflection_probe"]["dynamic"].asBoolean()); + volobjp->setReflectionProbeIsMirror(clipboard["reflection_probe"]["mirror"].asBoolean()); } else { @@ -1428,11 +1432,13 @@ void LLPanelVolume::onCommitProbe(LLUICtrl* ctrl, void* userdata) std::string update_type = self->getChild("Probe Update Type")->getValue().asString(); - volobjp->setReflectionProbeIsDynamic(update_type == "Dynamic"); - volobjp->setReflectionProbeIsMirror(update_type == "Mirror"); + bool is_mirror = update_type.find("Mirror") != std::string::npos; + + volobjp->setReflectionProbeIsDynamic(update_type.find("Dynamic") != std::string::npos); + volobjp->setReflectionProbeIsMirror(is_mirror); - self->getChildView("Probe Ambiance")->setEnabled(update_type != "Mirror"); - self->getChildView("Probe Near Clip")->setEnabled(update_type != "Mirror"); + self->getChildView("Probe Ambiance")->setEnabled(!is_mirror); + self->getChildView("Probe Near Clip")->setEnabled(!is_mirror); std::string shape_type = self->getChild("Probe Volume Type")->getValue().asString(); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 29dce088f5..61ab2791fb 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -2469,14 +2469,6 @@ void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features) gSavedSettings.setS32("max_texture_dimension_Y", 1024); } - bool mirrors_enabled = false; - if (features.has("MirrorsEnabled")) - { - mirrors_enabled = features["MirrorsEnabled"].asBoolean(); - } - - gSavedSettings.setBOOL("RenderMirrors", mirrors_enabled); - if (features.has("PBRTerrainEnabled")) { bool enabled = features["PBRTerrainEnabled"]; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 1b816b88fb..a956814147 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3420,8 +3420,15 @@ bool LLVOVolume::setReflectionProbeIsMirror(bool is_mirror) { if (param_block->getIsMirror() != is_mirror) { + LL_INFOS() << "Setting reflection probe mirror to " << is_mirror << LL_ENDL; param_block->setIsMirror(is_mirror); parameterChanged(LLNetworkData::PARAMS_REFLECTION_PROBE, true); + + if (!is_mirror) + gPipeline.mHeroProbeManager.unregisterViewerObject(this); + else + gPipeline.mHeroProbeManager.registerViewerObject(this); + return true; } } diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 3ee4a354d4..e43143c8c3 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2549,7 +2549,7 @@ even though the user gets a free copy. follows="left|top" name="Probe Volume Type" tool_tip="Choose the probe influence volume" - width="108"> + width="140"> + tool_tip="Determines how the probe updates. Static updates the slowest and without avatars. Dynamic updates more frequently, with avatars visible in the probes. Mirror (Environment) turns this probe into a realtime planar projected probe that only reflects the environment, but does not calculate ambiance. Mirror (Everything) is similar to Mirror (Environment), but it reflects particles and avatars." + width="140"> + Date: Wed, 8 May 2024 13:40:58 -0700 Subject: Fix for mirrors not functioning properly under water. (#1436) * #1165 Fix for clipping and culling for mirrors under water. --- .github/workflows/build.yaml | 27 ++++++++++++++++--------- build.sh | 1 + indra/llimage/tests/llimageworker_test.cpp | 2 +- indra/llprimitive/llgltfmaterial.h | 12 ++++++----- indra/llprimitive/tests/llgltfmaterial_test.cpp | 2 +- indra/newview/pipeline.cpp | 3 ++- 6 files changed, 29 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 44f32c1c5d..4785273b78 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,7 +5,7 @@ on: pull_request: push: branches: ["main", "release/*", "project/*"] - tags: ["Second_Life_*"] + tags: ["Second_Life*"] jobs: build: @@ -176,16 +176,22 @@ jobs: # seen before, so numerous tests don't know about it. [[ "$arch" == "MINGW6" ]] && arch=CYGWIN export AUTOBUILD="$(which autobuild)" - # Build with a tag like "Second_Life_Project_Shiny#abcdef0" to get a - # viewer channel "Second Life Project Shiny" (ignoring "#hash", - # needed to disambiguate tags). - if [[ "$GITHUB_REF_TYPE" == "tag" && "${GITHUB_REF_NAME:0:12}" == "Second_Life_" ]] - then viewer_channel="${GITHUB_REF_NAME%#*}" - export viewer_channel="${viewer_channel//_/ }" - else export viewer_channel="Second Life Test" + + # determine the viewer channel from the branch name + branch=$AUTOBUILD_VCS_BRANCH + IFS='/' read -ra ba <<< $branch + prefix=${ba[0]} + if [ "$prefix" == "project" ]; then + IFS='_' read -ra prj <<< "${ba[1]}" + # uppercase first letter of each word + export viewer_channel="Second Life Project ${prj[*]^}" + elif [[ "$prefix" == "release" || "$prefix" == "main" ]]; + then + export viewer_channel="Second Life Release" + else + export viewer_channel="Second Life Test" fi echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT" - # On windows we need to point the build to the correct python # as neither CMake's FindPython nor our custom Python.cmake module # will resolve the correct interpreter location. @@ -354,7 +360,8 @@ jobs: release: needs: [build, sign-and-package-windows, sign-and-package-mac] runs-on: ubuntu-latest - if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') + # Build with a tag like "Second_Life#abcdef0" to generate a release page (used for builds we are planning to deploy). + if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') steps: - uses: actions/download-artifact@v4 with: diff --git a/build.sh b/build.sh index 46a287ea32..e025b73170 100755 --- a/build.sh +++ b/build.sh @@ -178,6 +178,7 @@ pre_build() "$autobuild" configure --quiet -c $variant \ ${eval_autobuild_configure_parameters:---} \ + -DLL_TESTS:BOOL=ON \ -DPACKAGE:BOOL=ON \ -DHAVOK:BOOL="$HAVOK" \ -DRELEASE_CRASH_REPORTING:BOOL="$RELEASE_CRASH_REPORTING" \ diff --git a/indra/llimage/tests/llimageworker_test.cpp b/indra/llimage/tests/llimageworker_test.cpp index 0a97b739b0..ffcd7d257f 100644 --- a/indra/llimage/tests/llimageworker_test.cpp +++ b/indra/llimage/tests/llimageworker_test.cpp @@ -98,7 +98,7 @@ namespace tut done = res; *done = false; } - virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux) + virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux, U32) { *done = true; } diff --git a/indra/llprimitive/llgltfmaterial.h b/indra/llprimitive/llgltfmaterial.h index d14ae6970b..855cb58832 100644 --- a/indra/llprimitive/llgltfmaterial.h +++ b/indra/llprimitive/llgltfmaterial.h @@ -122,9 +122,10 @@ public: F32 mRoughnessFactor = 1.f; F32 mAlphaCutoff = 0.5f; - bool mDoubleSided = false; AlphaMode mAlphaMode = ALPHA_MODE_OPAQUE; + bool mDoubleSided = false; + // override specific flags for state that can't use off-by-epsilon or UUID hack bool mOverrideDoubleSided = false; bool mOverrideAlphaMode = false; @@ -139,6 +140,11 @@ public: // heightmaps cannot currently be described as finite enclosed // volumes. // See also LLPanelRegionTerrainInfo::validateMaterials + // These fields are local to viewer and are a part of local bitmap support + typedef std::map local_tex_map_t; + local_tex_map_t mTrackingIdToLocalTexture; + +public: // get a UUID based on a hash of this LLGLTFMaterial LLUUID getHash() const; @@ -240,10 +246,6 @@ public: virtual bool replaceLocalTexture(const LLUUID& tracking_id, const LLUUID &old_id, const LLUUID& new_id); virtual void updateTextureTracking(); - // These fields are local to viewer and are a part of local bitmap support - typedef std::map local_tex_map_t; - local_tex_map_t mTrackingIdToLocalTexture; - protected: static LLVector2 vec2FromJson(const std::map& object, const char* key, const LLVector2& default_value); static F32 floatFromJson(const std::map& object, const char* key, const F32 default_value); diff --git a/indra/llprimitive/tests/llgltfmaterial_test.cpp b/indra/llprimitive/tests/llgltfmaterial_test.cpp index 88b6fae3a7..b56c9ab4f5 100644 --- a/indra/llprimitive/tests/llgltfmaterial_test.cpp +++ b/indra/llprimitive/tests/llgltfmaterial_test.cpp @@ -143,7 +143,7 @@ namespace tut #if LL_WINDOWS // If any fields are added/changed, these tests should be updated (consider also updating ASSET_VERSION in LLGLTFMaterial) // This test result will vary between compilers, so only test a single platform - ensure_equals("fields supported for GLTF (sizeof check)", sizeof(LLGLTFMaterial), 216); + ensure_equals("fields supported for GLTF (sizeof check)", sizeof(LLGLTFMaterial), 224); #endif #endif ensure_equals("LLGLTFMaterial texture info count", (U32)LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT, 4); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 341c9706f8..8b1e46343b 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2269,7 +2269,8 @@ static LLTrace::BlockTimerStatHandle FTM_CULL("Object Culling"); // static bool LLPipeline::isWaterClip() { - return (!sRenderTransparentWater || gCubeSnapshot) && !sRenderingHUDs; + // We always pretend that we're not clipping water when rendering mirrors. + return (gPipeline.mHeroProbeManager.isMirrorPass()) ? false : (!sRenderTransparentWater || gCubeSnapshot) && !sRenderingHUDs; } void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result) -- cgit v1.2.3 From 692a5eb2d3c657908dac8c45c31cfd527046da74 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 9 May 2024 11:12:18 -0400 Subject: Remove `creds=github` from slvoice platform entries. https://github.com/secondlife/autobuild/issues/46 Also remove temporary `continue-on-error` setting. --- .github/workflows/build.yaml | 2 -- autobuild.xml | 6 +----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 95e98e5b8c..4785273b78 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,8 +16,6 @@ jobs: include: - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" - # DO NOT MERGE THIS LINE! continue-on-error=true is only for diagnosis. - continue-on-error: true runs-on: ${{ matrix.runner }} outputs: viewer_channel: ${{ steps.build.outputs.viewer_channel }} diff --git a/autobuild.xml b/autobuild.xml index e4802b0c55..6ff0164087 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2400,8 +2400,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive - creds - github hash 1e70b06fe6eb9796097010871b32d8e95167e373 hash_algorithm @@ -2428,8 +2426,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive - creds - github hash ddfb7c30d9756915e8b26f44e2ee3a69ee87fb9a hash_algorithm @@ -3501,4 +3497,4 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Second Life Viewer - \ No newline at end of file + -- cgit v1.2.3 From 9deeec22b7348f56b1d32ab6aff73c59e002ff21 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 8 May 2024 15:26:00 -0400 Subject: Bump up coroutine stack size: saw C00000FD test termination. (cherry picked from commit dc0b3aed4782e4e4835fd6b9d59d1d70b78be4a7) --- indra/llcommon/llcoros.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index c13900f74a..8612f9353f 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -123,7 +123,7 @@ LLCoros::LLCoros(): // Previously we used // boost::context::guarded_stack_allocator::default_stacksize(); // empirically this is insufficient. - mStackSize(900*1024), + mStackSize(1024*1024), // mCurrent does NOT own the current CoroData instance -- it simply // points to it. So initialize it with a no-op deleter. mCurrent{ [](CoroData*){} } -- cgit v1.2.3 From 85af619bbbb6484da399a1d81e769c965ae6e86a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 10 May 2024 09:10:18 -0400 Subject: Reapply slvoice package URLs with autobuild 3.9.5 --- autobuild.xml | 84 +++++++++++++++++++++++++---------------------------------- 1 file changed, 35 insertions(+), 49 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 6ff0164087..1939c6734b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2436,20 +2436,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name windows64 - windows - - archive - - hash - 9d4f47ce6780e041899e12abe6418cc26a2a8594 - hash_algorithm - sha1 - url - https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-windows-5942f08.tar.zst - - name - windows - license Mixed @@ -3061,7 +3047,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + build @@ -3081,11 +3067,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name RelWithDebInfoOS @@ -3102,7 +3088,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + build @@ -3122,11 +3108,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name ReleaseOS @@ -3147,11 +3133,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + arguments ../indra - + build @@ -3164,7 +3150,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + default True @@ -3179,7 +3165,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + build @@ -3192,7 +3178,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name RelWithDebInfoOS @@ -3205,11 +3191,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + arguments ../indra - + build @@ -3222,7 +3208,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name Release @@ -3235,7 +3221,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + build @@ -3248,7 +3234,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -project SecondLife.xcodeproj -parallelizeTargets - + name ReleaseOS @@ -3272,11 +3258,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja -DLL_TESTS=Off - + arguments ../indra - + build @@ -3297,7 +3283,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja -DLL_TESTS=Off - + build @@ -3335,11 +3321,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments ..\indra - + build @@ -3349,11 +3335,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /build RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments SecondLife.sln - + default True @@ -3373,11 +3359,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - + arguments ..\indra - + build @@ -3391,11 +3377,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - + arguments SecondLife.sln - + name RelWithDebInfoOS @@ -3410,11 +3396,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments ..\indra - + build @@ -3424,11 +3410,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /build Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + arguments SecondLife.sln - + name Release @@ -3447,11 +3433,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - + arguments ..\indra - + build @@ -3465,11 +3451,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - + arguments SecondLife.sln - + name ReleaseOS -- cgit v1.2.3