diff --git a/autobuild.xml b/autobuild.xml index 08c15c395f..e4d1ea472b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -821,18 +821,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 @@ -874,8 +862,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 @@ -999,16 +999,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 @@ -1054,8 +1044,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 @@ -1185,18 +1185,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 @@ -1242,8 +1230,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 @@ -1705,15 +1705,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 @@ -1731,8 +1722,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 @@ -2116,18 +2116,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 @@ -2167,8 +2155,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 @@ -2608,9 +2608,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b583668b28fde0490e6953f10e93e4ab + 1e70b06fe6eb9796097010871b32d8e95167e373 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98681/871545/slvoice-4.10.0000.32327.5fc3fe7c.571099-darwin64-571099.tar.bz2 + 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 @@ -2632,9 +2634,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c39735851fd05c194d0be09b8f9e8cb7 + ddfb7c30d9756915e8b26f44e2ee3a69ee87fb9a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98682/871552/slvoice-4.10.0000.32327.5fc3fe7c.571099-windows64-571099.tar.bz2 + 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 @@ -2647,7 +2651,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 @@ -2895,16 +2899,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 @@ -2944,8 +2938,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 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*){} } diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index abb63424b7..4f548defb3 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -1182,8 +1182,10 @@ bool LLGLManager::initGL() // This is called here because it depends on the setting of mIsGF2or4MX, and sets up mHasMultitexture. initExtensions(); - S32 old_vram = mVRAM; - mVRAM = 0; + // stop doing this and trust the hardware detection + // if hardware detection has all failed the this will correct for that + // S32 old_vram = mVRAM; + // mVRAM = 0; #if LL_WINDOWS if (mHasAMDAssociations) @@ -1216,22 +1218,26 @@ bool LLGLManager::initGL() } #endif -#if LL_WINDOWS - if (mVRAM < 256) - { - // Something likely went wrong using the above extensions - // try WMI first and fall back to old method (from dxdiag) if all else fails - // Function will check all GPUs WMI knows of and will pick up the one with most - // memory. We need to check all GPUs because system can switch active GPU to - // weaker one, to preserve power when not under load. - S32 mem = LLDXHardware::getMBVideoMemoryViaWMI(); - if (mem != 0) - { - mVRAM = mem; - LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL; - } - } -#endif +// remove this so that we can attempt to use driver specifics +// if it fails we will pick up the `old_vram` value , which is either WMI or the combined dxdiag number +// both of which are rather useless, but it does at least respect the disable_wmi setting. +// #if LL_WINDOWS +// if (mVRAM < 256) +// { +// // Something likely went wrong using the above extensions +// // try WMI first and fall back to old method (from dxdiag) if all else fails +// // Function will check all GPUs WMI knows of and will pick up the one with most +// // memory. We need to check all GPUs because system can switch active GPU to +// // weaker one, to preserve power when not under load. +// S32 mem = LLDXHardware::getMBVideoMemoryViaWMI(); +// if (mem != 0) +// { +// mVRAM = mem; +// LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL; +// } +// } +// #endif +// // Ultimate fallbacks for linux and mesa if (mHasNVXMemInfo && mVRAM == 0) @@ -1250,18 +1256,18 @@ bool LLGLManager::initGL() mVRAM = meminfo[0] / 1024; LL_INFOS("RenderInit") << "VRAM Detected (ATIMemInfo):" << mVRAM << LL_ENDL; } + // stop doing this and trust the hardware detection + // if (mVRAM < 256 && old_vram > 0) + // { + // // fall back to old method + // // Note: on Windows value will be from LLDXHardware. + // // Either received via dxdiag or via WMI by id from dxdiag. + // mVRAM = old_vram; - if (mVRAM < 256 && old_vram > 0) - { - // fall back to old method - // Note: on Windows value will be from LLDXHardware. - // Either received via dxdiag or via WMI by id from dxdiag. - mVRAM = old_vram; - - // VRAM detection logging - LL_WARNS("RenderInit") << "VRAM detected via MemInfo OpenGL extension most likely broken. Reverting to " << mVRAM << " MB" << LL_ENDL; - } - + // // VRAM detection logging + // LL_WARNS("RenderInit") << "VRAM detected via MemInfo OpenGL extension most likely broken. Reverting to " << mVRAM << " MB" << LL_ENDL; + // } + // glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &mNumTextureImageUnits); glGetIntegerv(GL_MAX_COLOR_TEXTURE_SAMPLES, &mMaxColorTextureSamples); glGetIntegerv(GL_MAX_DEPTH_TEXTURE_SAMPLES, &mMaxDepthTextureSamples); diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index fc1d92e613..8dd81d26c5 100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -40,6 +40,7 @@ #include #include "lldxhardware.h" +#include #include "llerror.h" @@ -61,6 +62,42 @@ typedef BOOL ( WINAPI* PfnCoSetProxyBlanket )( IUnknown* pProxy, DWORD dwAuthnSv OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities ); +// Deprecate WMI support +uint64_t GetVideoMemoryViaDXGI() +{ + HRESULT hr; + IDXGIFactory* pFactory = nullptr; + IDXGIAdapter* pAdapter = nullptr; + + // Create a DXGI Factory + hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pFactory); + if (FAILED(hr)) { + std::cerr << "Failed to create DXGI factory." << std::endl; + return 0; + } + + // Enumerate adapters + UINT i = 0; + uint64_t vram_bytes = 0; + while (pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND) + { + if(pAdapter) + { + DXGI_ADAPTER_DESC desc; + pAdapter->GetDesc(&desc); + + vram_bytes = desc.DedicatedVideoMemory; + break; + } + SAFE_RELEASE(pAdapter); + ++i; + } + SAFE_RELEASE(pAdapter) + SAFE_RELEASE(pFactory) + return vram_bytes; +} +// + HRESULT GetVideoMemoryViaWMI(WCHAR* strInputDeviceID, DWORD* pdwAdapterRam) { HRESULT hr; @@ -803,6 +840,10 @@ bool LLDXHardware::getInfo(bool vram_only, bool disable_wmi) LL_INFOS("AppInit") << "VRAM Detected via WMI: " << mVRAM << LL_ENDL; } } + // Deprecate WMI use DXGI in preference. + mVRAM = GetVideoMemoryViaDXGI()/1024/1024; + LL_INFOS("AppInit") << "VRAM Detected via DXGI: " << mVRAM << "MB" << LL_ENDL; + // if (mVRAM == 0) { // Get the English VRAM string diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1e12d6af66..22ca23d9d8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -24578,12 +24578,23 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 + FSOverrideVRAMDetection + + Comment + Allow user to override the vRAM detection, use the FSForcedVideoMemory setting instead- use with extreme caution. + Persist + 1 + Type + Boolean + Value + 0 + FSForcedVideoMemory Comment Overrides the video memory detection on Windows if a value greater 0 is passed (in case DirectX memory detection fails or is wrong) Persist - 0 + 1 HideFromEditor 1 Type diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index e3d9af404d..895e030050 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -1028,15 +1028,18 @@ bool LLAppViewerWin32::initHardwareTest() if (gGLManager.mVRAM == 0) { - // FIRE-12671: Force VRAM if DirectX detection is broken - S32 forced_video_memory; - if ((forced_video_memory = gSavedSettings.getS32("FSForcedVideoMemory")) > 0) + // Allow the user to override the VRAM detection + if ( gSavedSettings.getBOOL("FSOverrideVRAMDetection") ) { - LL_INFOS("AppInit") << "Forcing VRAM to " << forced_video_memory << " MB" << LL_ENDL; - gGLManager.mVRAM = forced_video_memory; + S32 forced_video_memory = gSavedSettings.getS32("FSForcedVideoMemory"); + if ( forced_video_memory > 0 ) + { + LL_INFOS("AppInit") << "Forcing VRAM to " << forced_video_memory*1024 << " MB" << LL_ENDL; + gGLManager.mVRAM = forced_video_memory*1024; + } } else - // + // gGLManager.mVRAM = gDXHardware.getVRAM(); } diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index c2de2750f4..56ef340868 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -554,8 +554,8 @@ void LLGLTexMemBar::draw() U32 texFetchLatMed = U32(recording.getMean(LLTextureFetch::sTexFetchLatency).value() * 1000.0f); U32 texFetchLatMax = U32(recording.getMax(LLTextureFetch::sTexFetchLatency).value() * 1000.0f); - text = llformat("Est. Free: %d MB Sys Free: %d MB GL Tex: %d MB FBO: %d MB Bias: %.2f (%d MB) Cache: %.1f/%.1f MB", - (S32)LLViewerTexture::sFreeVRAMMegabytes, + text = llformat("est. VRAM Free: %d MB Sys Free: %d MB GL Tex: %d MB FBO: %d MB Bias: %.2f Cache: %.1f/%.1f MB", + gViewerWindow->getWindow()->getAvailableVRAMMegabytes(), LLMemory::getAvailableMemKB()/1024, LLImageGL::getTextureBytesAllocated() / 1024 / 1024, LLRenderTarget::sBytesAllocated/(1024*1024), diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index e06db0405f..57308acec8 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -357,6 +357,16 @@ static bool handleVolumeLODChanged(const LLSD& newvalue) return true; } +// Override VRAM detection support +static bool handleOverrideVRAMDetectionChanged(const LLSD& newvalue) +{ + if (newvalue.asBoolean()) + { + LLNotificationsUtil::add("OverrideVRAMWarning"); + } + return true; +} +// static bool handleAvatarLODChanged(const LLSD& newvalue) { @@ -1175,6 +1185,7 @@ void settings_setup_listeners() setting_setup_signal_listener(gSavedSettings, "RenderGlowHDR", handleReleaseGLBufferChanged); setting_setup_signal_listener(gSavedSettings, "RenderGlowNoise", handleSetShaderChanged); setting_setup_signal_listener(gSavedSettings, "RenderGammaFull", handleSetShaderChanged); + setting_setup_signal_listener(gSavedSettings, "FSOverrideVRAMDetection", handleOverrideVRAMDetectionChanged); // Override VRAM detection support setting_setup_signal_listener(gSavedSettings, "RenderVolumeLODFactor", handleVolumeLODChanged); setting_setup_signal_listener(gSavedSettings, "RenderAvatarComplexityMode", handleUserImpostorByDistEnabledChanged); setting_setup_signal_listener(gSavedSettings, "RenderAvatarLODFactor", handleAvatarLODChanged); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 3d12f14f77..895a2eefe3 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2099,32 +2099,6 @@ LLViewerWindow::LLViewerWindow(const Params& p) gSavedSettings.setU32("RenderQualityPerformance", 0); } - // Texture memory management - // On 64bit builds, allow up to 1GB texture memory on cards with 2GB video - // memory and up to 2GB texture memory on cards with 4GB video memory. Check - // is performed against a lower limit as not exactly 2 or 4GB might not be - // returned. -#if ADDRESS_SIZE == 64 - LL_INFOS() << "GLManager detected " << gGLManager.mVRAM << " MB VRAM" << LL_ENDL; - - if (gGLManager.mVRAM > 3584) - { - gMaxVideoRam = S32Megabytes(2048); - LL_INFOS() << "At least 4 GB video memory detected - increasing max video ram for textures to 2048 MB" << LL_ENDL; - } - else if (gGLManager.mVRAM > 1536) - { - gMaxVideoRam = S32Megabytes(1024); - LL_INFOS() << "At least 2 GB video memory detected - increasing max video ram for textures to 1024 MB" << LL_ENDL; - } - else if (gGLManager.mVRAM > 768) - { - gMaxVideoRam = S32Megabytes(768); - LL_INFOS() << "At least 1 GB video memory detected - increasing max video ram for textures to 768 MB" << LL_ENDL; - } -#endif - // - // Max texture resolution #if ADDRESS_SIZE == 64 if (gSavedSettings.getBOOL("FSRestrictMaxTextureSize")) diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 271076949c..c3311b9abf 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5699,6 +5699,14 @@ LOD-Faktor >4: Nur in Ausnahmefällen verwenden. Wird beim Neustart zurückgeset LOD-Faktor >8: Hat keinen echten Effekt. Kann Fehler verursachen. + + WARNUNG: Das Übersteuern der VRAM-Erkennung kann Instabilitäten verursachen. + +Die meisten Benutzer sollten diese Einstellung deaktiviert und dem Viewer sowie Betriebssystem den korrekten Wert ermitteln lassen. + +Diese Einstellung ist für den Fall gedacht, wenn die VRAM-Erkennung inkorrekte Ergebnisse liefert. Bitte mit Vorsicht verwenden und im Zweifel Hilfe beim Support erfragen. + + Diese Region hat sich dazu entschieden, das Währungsportal eines Drittanbieters zu nutzen. Bitte beachten Sie, dass es sich bei Käufen von Währung innerhalb des Firestorm Viewers um Transaktionen zwischen Ihnen (dem Nutzer) und den Anbietern oder Verkäufern der Währung handelt. diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index e3a86e1efc..ab6e37bfea 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -138,7 +138,11 @@ - + + Erweiterte Einstellungen (Neustart erforderlich): + + + diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index e1041707b6..f5bd4d2b7a 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -13883,6 +13883,19 @@ LOD Factor >8: Has no real effect. May cause errors. name="okbutton" yestext="OK"/> + + WARNING: Overriding the VRAM detection may cause instability. + +Most users should leave this setting disabled and let the viewer and operating system determine the correct value. + +This setting is intended for cases where VRAM detection is reporting incorrect values. Use with caution, seek support advice in case of doubt. + + + + + Advanced Settings (restart required): + + + + diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 0e0a498555..f8f0c8fee3 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -5329,6 +5329,14 @@ Facteur LOD >4: A utiliser dans des circonstances particulières. Se réinitiali Facteur LOD >8: N'a pas d'effet réel. Peut provoquer des erreurs. + + AVERTISSEMENT : Le fait de passer outre la détection de la VRAM peut entraîner de l'instabilité. + +La plupart des utilisateurs devraient laisser ce paramètre désactivé et laisser la visionneuse et le système d'exploitation déterminer la valeur correcte. + +Ce paramètre est destiné aux cas où la détection de la VRAM indique des valeurs incorrectes. À utiliser avec précaution. En cas de doute, demandez l'aide de l'assistance technique. + + Cette région a choisi de spécifier un portail monétaire tiers. Veuillez noter que les achats de devises effectués par le biais de Firestorm Viewer sont des transactions entre vous (l'utilisateur) et le(s) fournisseur(s) ou vendeur(s) de la devise. diff --git a/indra/newview/skins/default/xui/fr/panel_fs_tools_texture.xml b/indra/newview/skins/default/xui/fr/panel_fs_tools_texture.xml index 60ad9523e4..1cf00484cb 100644 --- a/indra/newview/skins/default/xui/fr/panel_fs_tools_texture.xml +++ b/indra/newview/skins/default/xui/fr/panel_fs_tools_texture.xml @@ -228,7 +228,7 @@ - + Relief diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml index 8cf209e7bf..f62947a4f2 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -2,7 +2,10 @@ - Preset utilisé : + Préréglage utilisé : + + (Aucun) + Qualité et performance : Performance Qualité @@ -13,25 +16,34 @@ Shaders : - - - + Ombres : + + + + + + Détails des reflets : + + + + + + + + Couverture des reflets : + + - - + + + - Reflets aquatiques : - - - - - - - - Sources de lumière + + Éclairage ponctuel (redémarrage) : + @@ -45,6 +57,7 @@ Basse + Facteurs de détails liés à la distance : @@ -52,25 +65,23 @@ + + Préréglages + +