Jump to content

Henri Beauchamp

Resident
  • Posts

    1,183
  • Joined

Everything posted by Henri Beauchamp

  1. IMHO, this is terribly pedant a way to treat people who cannot afford updating their hardware instantly, and to people who prefer to see legacy contents rendering properly, instead of being ruined by the currently broken PBR shaders: yes, this will get fixed, in the end, but there will be an interim/transitory phase during which not everyone will run a PBR viewer. Well, about ”eye candy-ness”, let me show you a simple outdoor scene, taken with LL's current PBR viewer (v7.1.2) and with a non-PBR viewer (*) and, shockingly, in forward (non-ALM) rendering mode ! PBR: Legacy: Question: which one is more ”eye candy” ?... Yes, in its current state, the PBR renderer sucks rocks at rendering legacy contents (and water bodies even more)... Yes, it will (hopefully soon) get fixed over time, but no, creators cannot yet consider that everyone will be using a PBR viewer every time and everywhere for now (and, I would bet, not before a couple years has elapsed from now). (*) In fact, with the Cool VL Viewer, which can do PBR rendering, but here switched to the legacy forward renderer. FS or any other non-PBR viewer would render the exact same way in this mode.
  2. I have been using many CPU brands, and to speak only about the x86 CPUs, in the past I used Intel, Cyrix and AMD, in this order. I am not a fan of any brand, and I simply pick up the best choice I can find at the moment I upgrade my PC (or build a new one), this choice being governed by both the best performance/price ratio, and the best suitability for my various usages (which go way beyond SLing, of course). For SL, I have been using Athlons (XP, 64), a Core2 Quad, Core CPUs (Sandy Bridge, Coffee Lake), and I am currently using a Ryzen 7900X. In the early 2000s, AMD CPUs were the best choice (faster), then Bulldozer ruined it for AMD, and I switched to Intel (with the Core2 Quad) and Intel CPUs have been the best choice for SL during a looong time... Yet, with Zen4, AMD is back on par with Intel for performances, and superior to Intel in term of power consumption (important, since the more power consumed, the more heat to dissipate, the bigger and the noisier the cooling system); Zen4 is also not impaired by the P/E cores split (yuck !) seen in Intel's current CPUs... I therefore chose AMD, with a Ryzen 7900X, for my last PC, and I do not regret it the least !... Despite the heavy threading in my viewer (Cool VL Viewer configured to decode textures with 22 threads and create them in 22 other shared GL contexts/threads, adding to the 2 threads for the renderer and the graphics driver, plus miscellaneous other threads, such as for the texture fetcher, the texture cache, the object cache, sounds, plugins, etc), the CPU is never loaded at 100% (or only for a few seconds after a TP or login in a render-heavy sim with gazillions textures and meshes): it runs cool and quiet ! The Ryzen 7900X is also a beast to compile big programs (with it, the Cool VL Viewer compiles in less than 165s under Linux, which is 2.7 times faster than with my previous overclocked Core-i7 9700K @ 5GHz). Note that with any of the modern CPUs (those capable of 5 GHz and higher boost clocks), you will likely not notice the slightest difference in peak frame rates, but for a smooth experience, do choose a CPU with 16 or more (virtual) cores (today's viewers can use quite a few threads, and future viewers will use even more of them).
  3. Normally, EstablishAgentCommunication for a neighbouring sim is sent when your avatar camera FOV crosses that region's border. Maybe your viewer is not sending the data (agent position, draw distance, camera axis) the agent region is expecting to send the EstablishAgentCommunication for its neighbours... On login, you could try and send two sets of data: agent position at the center of the sim, draw distance at 384m or so, camera axis pointing alternatively North West and South East, and see what happens...
  4. That's what I inferred, from what I could see viewer side; here is a quote of an IM to @animats about it: Perhaps we would need an ”arbitrator server” (a role that might be playable by the presence server, or whatever you call it): the latter would receive a copy of all the traffic during simulators handovers of an avatar/viewer, and when one of the involved parties is left in the blue (and gets a timeout waiting for a message), it would report to the arbitrator the step it got stuck at, and the latter would ”kick” the simulator(s) into resending the appropriate data to the appropriate party(ies)... This would allow to keep the current protocol (to avoid breaking legacy viewers), while allowing updated servers and viewers alike to use a ”panic” mode where they ask for help to the arbitrator when left in the blue. Alternatively, a new protocol with a robust handshake could be implemented. In this new protocol, you would have new sets of messages and each message is acknowledged by another ”cando” (or ”no go”, e.g when there is a ban wall in the way or a restarting sim) or ”done” message to the same pole. Example: Sim A detects that avatar is about to cross border or got a TP request to sim B. It sends a ”connect to sim B” order to viewer. Sim A sends ”take over this avatar” message with serialized data to sim B. Viewer replies ”cando” to sim A and executes order, connecting to sim B. Sim B sends ”cando” to sim A and deserializes the data. Sim B replies to viewer (after the avatar data is deserialized) with message ”got your data”. Viewer sends message ”connection done” to Sim A after it got ”got your data” from sim B. Sim A replies with ”OK, goodbye” to viewer. Viewer sends ”ready message” to Sim B (and drops comms with sim A when needed). Sim B proceeds with objects updates. If any message is lost, it is then easy to resend it, since we have a fixed operations order and appropriate handshake. Also, when vehicles are crossing sim corners very close to the corner (like in a 3m circle around the corner, or rather a radius depending on the vehicle speed), there should be an algorithm in sim servers to send the vehicle and avatar data directly to the opposite sim instead of sending it to an adjacent sim which will itself have to handover that object/avatar to the final destination sim only a couple seconds or less later (a 2 seconds stay in the intermediate sim is usually safe, but below this duration, your risks to fail the crossing increases exponentially). All it would take is to extrapolate based on the vehicle speed vector and see where the vehicle is going to ”land” in the end... This would avoid many double-sim-crossing failures with the current protocol unchanged.
  5. Sorry, but the changes involved would be too large, not to mention my viewer is a (true) fork, and its code diverged so much, over the past 17 years, from LL's, that you just cannot 'diff' it to produce a PR: it would require a manual, line by line backport of all the changes, and I have no time to do this in place of LL on their code: if they want my fixes, they can just grab my sources and do the backport by themselves.
  6. Well, I'm afraid the Linden in question did not quite understand how the texture fetcher worked, and got mistaken by the yo-yo effect in the texture discard bias algorithm. First and foremost, when you got the full size texture downloaded, you do not need to re-download a lower resolution of that texture, since the JPEG2000 format allows to derive all lower LODs from a higher LOD: once the higher LOD in cache, the texture fetcher just reuses that cached raw image to decode a lower LOD from it, and there is no need to fetch anything from the network. Equally, when a low LOD gets downloaded, the HTTP fetch is simply done on part of the JPEG2000 texture file, and if a higher LOD is needed, the HTTP fetch is resumed from the point where the next LOD starts in the file, thus not requiring to re-download everything. As for the ”infinite loop”, it is only happening due to the yo-yo in the texture discard bias algorithm: this yo-yo happens when the texture memory (or VRAM) fills up to the point when the discard bias (which determines what lower LOD to use for textures when memory gets short) raises to its maximum (5.0 in the old algorithm), causing a ”panic” mode in which all textures are re-decoded at their lowest LOD (to free the VRAM and texture memory as fast as possible), before seeing their priority reevaluated and a proper LOD (taking into account the higher discard bias) is applied. Thing is, the original discard bias algorithm was very crude, and did not anticipate anything. It was also not amortized at the code level, i.e. it simply reacted to the filling up and freeing of the memory, without taking into account the memory usage variations from one frame to the next, neither extrapolating the usage for the next frame, and it relied entirely, for amortizing any yo-yo effect, on the textures download and/or decoding delays (which introduce an ”inertia” in the discard bias changes). To be fair, that algorithm was designed in a time when the network bandwidth was small (ADSL, with 512Kbps at best) and CPUs were much slower to decode textures (not to mention they were mono-core CPUs), so the yo-yo effect (AKA texture trashing) was not happening as much as it can happen today. However, once the discard bias algorithm rewritten, with finer grained discard bias steps, extrapolation of memory usage based on past variations, and proper amortizing of the bias variations (e.g. do not decrease bias when texture memory did not decrease yet, and do not increase it when memory usage is in the process of decreasing), the prioritized texture fetching works very well, as the Cool VL Viewer can demonstrate to the skeptic ones...
  7. The problem is that, instead of addressing the actual issue, by avoiding to make every boosted texture ”no delete”, and refining the texture bias algorithm (which was very prone to ”yo-yo” oscillations), LL adopted a naive algorithm which also falls short for many people, in term of rezzing speed. On my side, I tried and addressed the shortcomings of the old algorithm, and if you do try the Cool VL Viewer, my bet is that you will have to admit it performs quite well in term of memory usage, including in complex scenes, while not ruining the rez time (much to the contrary). 😜
  8. ALM (Advanced Lighting Model) is a renaming of the deferred rendering mode that happened when LL introduced (now legacy) materials. Prior to the materials introduction, the deferred rendering mode was only required to render shadows, so basically no one ever bothered enabling deferred rendering when they did not want shadows either, especially since the forward rendering mode was so much faster on the GPUs that were available at that time, and the forward rendering mode got (still today) the immense advantage of a gorgeous native (hardware) anti-aliasing mode (SSAA, sometimes also quoted as FSAA) which does not blur the textures details. Just like legacy materials, physically based rendering (PBR) requires the use of the deferred rendering mode. And since the fallback forward rendering mode got removed from LL's PBR viewer code base, you cannot ”switch off” deferred rendering (AKA ALM) any more. In the Cool VL Viewer, I kept the old (Extended Environment) renderer, with both its deferred (ALM) and forward modes, and added the PBR renderer, allowing to switch between the two on the fly.
  9. Both the Cool SL Viewer and Marine's Restrained Life viewer existed for many months already, when LL came up with a new rule forbidding to use ”SL”, ”Second” or ”Life” in any brand/product/software name in use for Second Life... We had to get inventive then, even though the anteriority rule could have been opposed by us to LL, but we are adult, responsible people and not here to impair SL or LL (but on the contrary to contribute in a constructive way). 😜
  10. No, that simulator sound spamming bug is something else: the problem with that simulator bug is that the collision sound which gets spammed (SND_STONE_DIRT_02, apparently, see sound_ids.h/cpp) is not accounted as a collision sound (between objects or avatar/object) and thus cannot even be muted via ”EnableCollisionSounds”. For the next Cool VL Viewer release, I added all SND_STONE_* sounds to the collisions sounds list, so that they can be muted like the rest; but hopefully, LL will fix that server-side bug soon. 😜
  11. I explained why some people encounter this (PBR-unrelated) issue in this post.
  12. This was due to NVIDIA driver viewer profile under Windows (see BUG-234706) that lacked the enabling of the OpenGL ”threaded optimizations” which can easily bring +50% in frame rates. If you are not running the viewer under Windows, or do not have an NIVIDIA card, or already had its driver configured for system-wide threaded optimizations, then you won't see any difference in performances.
  13. Sadly, in its current state, the PBR viewer is a BIG step backwards for sailing, with ugly sky-blue water and broken water reflections (WL waters looked way nicer, including with just ”minimal” reflections, i.e. all but sky turned off)... Another of the things among the many rendering glitches that should have incited LL to keep the PBR viewer in a RC state a little longer. 🫤 Let's hope they will fix waters quickly so that we can again enjoy sailing on SL seas !
  14. ”Why” is a very poor choice of a forum topic... 🫤 What you are hearing is a collision sound, here triggered by your avatar's feet on each of the steps of the stair. The fact you can hear such sounds on some stairs and not others, depends on the physics hull (the mesh taken into account, server-side, by the Physics engine of SL): in this particular case the hull is likely the same as the stairs (rendering) mesh. Some creators will create a physics hull with a plane placed on top of the steps instead, preventing to physically ”bump” into each step. If you get annoyed by collision sounds, you may disable them in the viewer (depending on the viewer, this can be found somewhere in the Preferences floater, or at worst, via the debug settings as ”EnableCollisionSounds”, which you can toggle to FALSE).
  15. This won't work for real-time mesh baking. This is for games with pre-defined assets, not for SL... Plus, it's closed source and a commercial (paying) software. Note also that the SL viewer does make use of (moderate) mesh optimization (see LLVolumeFace::cacheOptimize()), itself recently updated to use meshoptimizer, but this optimization step, happening each time a new mesh is loaded, won't combine meshes together...
  16. In fact, there are three implementations... In order of appearance: Marine's, mine (*) which is very close to Marine's, and Kitty's RLVa. (*) The Cool VL Viewer (or rather Cool SL Viewer as it was named back at that time), was the first TPV to implement RLV after Marine's; it was back in November 2007, and my fork started as v1.00a (a fork from Marine's RLV API v1.00) in the Cool SL Viewer v1.18.4.3. The fork diverged over time in the underlying code/implementation, but still implements/obeys Marine's API (with some additions of mine).
  17. Monty is making mention of BUG-234561. During the AISv3 protocol update which was necessary to implement inventory thumbnails, the legacy UDP message for creating inventory links got somehow broken server-side. In the event the limitation you are seeing in Catznip would be related to this breakage, it would be possible to ”fix” the viewer code by using AISv3 to create the inventory link instead.
  18. It would be possible, instead, to temporarily (while it is edited/selected) override the PBR-bearing face rendering draw info, so to render the legacy texture channels instead. It is a piece of cake, reusing the media texture override (and USE_FACE_COLOR face state) code to do the trick. This is what I am using in my viewer (but the other way around: to render in ALM/forward modes the PBR-bearing materials with missing/default diffuse texture using the base color texture instead). See the LLVolumeGeometryManager::registerFace() and LLFace::getGeometryVolume() in the Cool VL Viewer v1.32.05 sources. The trick to render the legacy maps on the edited face could then be automatically triggered depending on the texture channel combo selection in the Texture tab of the Edit/Build floater... This would avoid having to send messages to the server (to remove the PBR material then reinstate it after editing), and risk a loss in the transmitted parameters due to race conditions or bad network...
  19. I know at least one viewer that lets you see everything (PBR, legacy ALM, legacy forward) without needing to relog... 😛 And guess what... The other PBR viewers could implement a way to see diffuse/legacy material while editing a face (i.e. when the face is selected via the Build/Edit floater), by using the same trick I used in my viewer to render the base color map instead of the diffuse map in non-PBR rendering mode (it would be ”the other way around”, but would work with the same trick at the code level): if TPV devs are interested in how I implemented this, they can ask me, in excess of having a look at my viewer code and incremental diffs...
  20. Thanks. I replaced ”builds” with ”items”, which is hopefully making things clearer/unambiguous.
  21. Entirely seconded. I cannot attend (*) the SL creators user group meetings, but had I attended the last one (for which I could at least read the summary on Inara Pey's excellent blog), I would have loudly opposed to this totally silly statement about providing two different items for PBR and legacy viewers, when all viewers can render (even if differently) a combined PBR plus ALM (or diffuse only) bearing face ! Since this is a Firestorm thread, and Firestorm got such a huge impact in SL given it's enormous user base, let me here beg for FS devels to do what I just did in my own viewer: remove all the limits to edit legacy material and diffuse maps when a PBR material is already set on a face from the viewer code ! Yes, and I did consider doing one-time (on texture fetching step only, so to avoid excessive overhead) baking of a diffuse texture for PBR materials in non-PBR rendering modes; however, I am not a 3D engine programmer, and know close to nothing to shading, OpenGL, etc... So, this would have to be coded by someone else than me. But it definitely is possible; LL could have kept a forward rendering mode with such a backing for PBR materials in their viewer, but they instead opted to ignore people with ”weak” hardware. And you know what ?... Such a diffuse texture baking could even be necessary (or at least interesting/useful/faster) for mobile viewers. And it could even be extended to legacy materials !... Maybe this baking could be done server side, even (at PBR material application time on a face, with automatic generation and applying of the diffuse texture) ? --------- (*) Sorry, but I cannot understand well enough spoken English, and myself ”speak” it (or ”moo” it, rather) in ways that no one would understand either, so voice meetings are a no-no as far as I am concerned. PS: when mentioning my viewer name, please do use the three words making up that name (i.e. ”Cool VL Viewer”), just like you would use the four words making up the ”One World Trade Center” name. 😜 Thank you !
  22. So can the Cool VL Viewer. Eg, under Linux: cd linden/;./linux-build.sh --tracy The Tracy profiler is then started on demand from the Advanced -> Consoles menu, or CTRL SHIFT 8
  23. I would have preferred a ”Why I don't consider PBR ready” subject for this thread... Because, you know, the fact you do not like it is due to how unpolished (pun intended) it is right now, with ugly rendering issues for legacy contents (or vanished shadows, or glitchy/ugly (sky blue !) water surfaces, etc) and glitchy and incomplete UI for editing PBR stuff in the viewer. It is indeed, at best, at ”beta” quality and should never have been pushed to release by LL before all those nasty issues are solved. Sadly, what is done is done, and we will now see PBR contents starting to be sold by creators, with prerequisites (such as custom environment settings) that will make that contents incompatible with future fixes (e.g. a ”fixed” EE setting to stop shiny surfaces to appear blue will become a handicap after LL will finally fix that bogus blue shine that also ruins shiny legacy contents anyway). However, PBR, in itself, is a good thing for the future of SL. It is simply just as disruptive as Windlight has been when it got introduced (excepted that Windlight did not ruin the rendering of legacy contents), especially the PC power required to render it... Yet, would you consider, today, that Windlight was an error and has ruined SL ?... I doubt so !
  24. I already explained it to you, in this post. Simply increase the ”RenderMaxNodeSize” debug setting (start with doubling it)...
  25. If the PBR viewer cannot find the corresponding PBR-related capabilities and does not get the sim message for PBR materials and objects updates, it will just render like if there is no PBR object in a SL sim (or during the transition, when only a few SL sims had PBR enabled and you could yet use the PBR viewer everywhere). This is not a problem.
×
×
  • Create New...