|
Page 1 of 1
|
[ 9 posts ] |
|
Author |
Message |
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
Greetings! I hadn't used the CoolVLViewer in many years —in fact, I hadn't logged in in this forum for two years—, but I upgraded my PC recently and decided to try the viewer and see how it fares with the new hardware. The result is astonishing: looking out of my window in almost Ultra settings I get almost 200 fps, compared to the 25ish I get on Firestorm (in much lower settings). Even at busy clubs I get almost stable 20fps, which are much better than the 3–5 I got with Firestorm (and without the freezes). I understand that is because of the backporting of the LL Performance Viewer optimisations, only it's not because Alchemy has these too and doesn't give me anything more than FS. So I suspect it's Henri's wizardry For reference, my new (*) hardware is: So I think it's time for me to come back. However, there are some features that I rely upon, so I wanted to ask whether it's possible to have them on CoolVLViewer (with or without lua, but if the answer is "with" then I shall need pointers): floaters for landmarks, favourite landmarks, favourite wearables and outfits. They all come down to the possibility of opening specific inventory folders in their own floaters and having buttons somewhere to open and close them. If I have to have the whole inventory showing, then it would be good to at least have them open at the desired folders, and in that case have more than two inventory floaters open at the same time. I know LL is planning the single inventory folder view thing. But perhaps Henri has already made something better (as always) in my years of absence? Thank you. (*) For you it might not be new, but I used to have a Celeron, so bite me
|
2023-07-29 12:24:05 |
|
|
Henri Beauchamp
Joined: 2009-03-17 18:42:51 Posts: 5554
|
No, not really: all major TPVs already got those backported. There are however some optimizations (especially around vertex buffers and VBO pools) that came from the PBR viewer, and that do help in the performance department. But since it has been such a long time you did not try my viewer, here is the magic one-liner (removal of a glFinish()) that made the viewer all of a sudden 50 to 100% faster... That is, all this time, the C++ code in my viewer was so much faster than despite this old-fashioned GL code (not present in other viewers and dating back from the pre-OpenGL2 era in v1 viewers) that totally ruined its performances on modern graphics card, it was still able to compete against all other viewers. As for the freezes and the busy places, I did a lot of personal work on threaded textures fetching, caching, decoding, on VRAM and GL textures management and discard bias smart adjustment, some of which are listed in this thread. Alchemy folks got it all wrong under Linux. For a start, they removed the Xlib threading initialization, causing GPU drivers to fall back to mono-threaded rendering whenever the viewer is ran under X11 (-30% in FPS rates). Then there are other, more mysterious things at play, since even before they removed that crucial one-liner, Alchemy never performed as well under Linux as it did under Windows for me (while it is the other way around for all the other TPVs providing Linux and Windows builds), and by large proportions... Relentless C++ optimizations during 16 years... That's the only "wizardry" behind it all. When I published my first release notes on this forum, I got a few amused/ironic comments from other TPV developers I will not name here by charity, about my "minor speed optimizations" lines in those release notes... They smirked back then, but now I'd bet they are green with envy, and I am the one smirking, now. I also got "you bite off more than you can chew" comments... I proved all of them wrong. People knowing me, also know that I always keep my word and never promise something when I am not sure I will be able to uphold that promise. With Lua ! As for landmarks, I personally rarely ever use them any more from the inventory since there is the teleport history floater (with most visited places tab, search tab, etc) and the world map and its drop down combo for LMs.
|
2023-07-29 13:30:06 |
|
|
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
The thing I do regret during my university years is I didn't study any programming. We did a bit of Basic and a bit of Fortran and I didn't have any incentive back then to read more on my own. But I know you do a good job. I first met your viewer when you implemented mesh before the Phoenix people and I remember their saying about old cars and new features. I'll RTFM, then, and report back for advice. Why the search link? I've looked a bit and haven't found relative answers anywhere. I actually thought it's not possible, but, if you say it is, I believe you Well, I'm a host and a performer. Notices, landmarks and outfits is what we do, sometimes extremely quickly. Thanks for the quick answer. Edit: viewtopic.php?f=6&t=2354&hilit=folders I know, I'm stupid.
|
2023-07-29 15:50:19 |
|
|
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
I think I did it, following the instructions in the link above: My automation script is: | | | | Code: known_ids = {} known_sessions = {} tp_started = false tp_retry = false max_agents = 20 max_complexity_shield_off = 0 max_complexity_shield_on = 200000 max_area_shield_off = 0 max_area_shield_on = 200 max_memory_shield_off = 0 max_memory_shield_on = 100 shield_on=false derendered_objects = {} low_dd_regions = {} protected_attachments = {} protected_layers = {} avatars_colors = {} account_settings = {}
-- Here, we define a custom set of side bar buttons for performing useful -- tasks or opening commonly used floaters that do not have an associated -- toolbar button. -- We also perform tasks that can only happen after successful login. function OnLogin(location) -- Setup the sidebar
SideBarHide(false) SideBarButton(1, "\u{2699}", "OpenFloater('preferences')", "Preferences") SideBarButton(2, "LM", "OpenLuaFloater('inventory');SetLuaFloaterValue('inventory','inventory1','Landmarks')", "Landmarks") SideBarButton(3, "FW", "OpenLuaFloater('inventory');SetLuaFloaterValue('inventory','inventory1','Favourite Wearables')", "Favourite Wearables") SideBarButton(4, "CL", "OpenLuaFloater('inventory');SetLuaFloaterValue('inventory','inventory1','Clothing')", "Clothing") SideBarButton(5, "OU", "OpenLuaFloater('inventory');SetLuaFloaterValue('inventory','inventory1','My Outfits')", "Outfits") SideBarButton(6, "ML", "OpenFloater('mute list')","Mute List") end
-- This callback is invoked each time the side bar visibility is changed. We -- use it to display the Lua icon in the status bar whenever the side bar gets -- hidden and we setup the command for that icon so that, when clicked, it -- shows the side bar (which in turn hides the status bar icon via this -- callback). function OnSideBarVisibilityChange(visible) if visible then StatusBarLuaIcon("") else StatusBarLuaIcon("SideBarHide(false)", "Shows the Lua buttons side bar") end end
| | | | |
I removed the bits from your script that seemed irrelevant. The result is The buttons open the relevant floaters, although they don't close them when clicking again on the buttons, and also it appears I can't have more than one lua-inventories open at the same time. I have not tried using an icon yet, just a two letter description (apparently I can't have more than two). The order of the buttons (counting top-down) is not respected, however. As you can see in the screenshot, the lua bar shows the buttons in the order 5,3,1,2,4,6. Am I doing something wrong? Also, I don't understand it. Why isn't LL-Inventory able to open at specific folders but Lua-Inventory is? What changed? Isn't Lua-Inventory just a copy of LL-Inventory? Thanks
|
2023-07-30 15:38:59 |
|
|
Henri Beauchamp
Joined: 2009-03-17 18:42:51 Posts: 5554
|
With a slightly more elaborate code, this is quite doable, by using the SideBarButtonToggle() function to turn the said buttons into toggles, and using a Lua callback function (instead of " OpenLuaFloater('inventory');...") that you would then add to the automation script and which would use OpenLuaFloater() and CloseLuaFloater() to act accordingly depending on the button state... Simply copy the Lua floater definition file as more files (one per floater you want to use), e.g. floater_lua_inventory2.xml, floater_lua_inventory3.xml, etc. Also, do not forget to edit those files and give the corresponding <floater name="lua_floater_inventoryN"... XML definition. Then you could OpenLuaFloater('inventory2'), etc... This is explained in the documentation for the SideBarButton() function: with 2 or less characters (i.e. the available space in the small square button), you get a "string", with more, the viewer will search for an icon file with the corresponding name. For your "LM" button, you could use "inv_item_landmark_visited.tga" as an icon, for example. See the available icons in the distributed viewer installation skins/default/textures/ sub-directory (you may also add your own icons, as explained in the Lua manual). For the inventory icons, have a look at the available inv_folder_*.tga and inv_item_*.tga icons. The order is respected, but it is not top-down, but above and below (alternatively) the center of the window side border. You may however override this (I already gave direction and an example XML file override for the Lua side bar buttons). But is is much simpler to just change the buttons number in your script to match your preference. No, the Inventory floater is a specific, hard-coded floater. What you get in those custom Lua floaters is a simple "folder view" (you may also see those at play, also in a hard coded way, in various selectors: e.g. for textures, calling cards or environment settings). My Lua automation feature has precisely been coded to expand the control over various aspects of the viewer, without having to hard-code in C++ exotic settings and features that almost no one will ever use. It avoids bloat while empowering the end user with ways to customize the viewer to their exact needs and tastes. PS: please, change your email for your account: I keep receiving rejected emails from Google (gmail sucks and systematically rejects automated emails) when you enable email notification for new forum posts.
|
2023-07-30 18:52:15 |
|
|
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
Ah, there is an example like that in the example automation script. Thanks, I'll look it up. Thanks! Is there something I could add to preserve the search function too? That it is. All right Gmail may suck, but I don't have other addresses I could use. I (think I) disabled email notification instead. Thanks!
|
2023-07-31 07:58:18 |
|
|
Henri Beauchamp
Joined: 2009-03-17 18:42:51 Posts: 5554
|
Not sure what you mean by "search function"... Thanks. You could try a Yahoo email account: they seem to "suck less" in this respect...
|
2023-07-31 12:06:01 |
|
|
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
I did it! Now I can have separate floaters I'll work on closing them another time. Thanks! I mean the search bar, the possibility to search within these folders from the lua floater.
|
2023-08-03 16:18:43 |
|
|
g0rd0ngrfr33mailgr
Joined: 2011-09-27 11:18:31 Posts: 176
|
| | | | Henri Beauchamp wrote: With a slightly more elaborate code, this is quite doable, by using the SideBarButtonToggle() function to turn the said buttons into toggles, and using a Lua callback function (instead of " OpenLuaFloater('inventory');...") that you would then add to the automation script and which would use OpenLuaFloater() and CloseLuaFloater() to act accordingly depending on the button state... | | | | |
I think I did it (with another custom floater)! | | | | Code: function OnLogin(location) ⋮ SideBarButton(1, "\u{2699}", "OpenLuaFloater('qp','','bottom-right')", "Quick Preferences") SideBarButtonToggle(1,false) ⋮ end ⋮ function OnLuaFloaterOpen(name, parameter) print("Opened floater: " .. name .. " with parameter: " .. parameter) if name == "qp" then ⋮ SideBarButton(1, "\u{2699}", "CloseLuaFloater('qp')") SideBarButtonToggle(1,true) end end
function OnLuaFloaterClose(name, parameter) print("Closed floater: " .. name .. " - Parameter: " .. parameter) if name == "qp" then SideBarButton(1, "\u{2699}", "OpenLuaFloater('qp','','bottom-right')", "Quick Preferences") SideBarButtonToggle(1,false) end end
| | | | |
|
2024-01-26 19:39:37 |
|
|
|
Page 1 of 1
|
[ 9 posts ] |
|
Who is online |
Users browsing this forum: No registered users and 11 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|