Cool VL Viewer forum

View unanswered posts | View active topics It is currently 2024-04-27 16:48:58



Reply to topic  [ 9 posts ] 
Inventory subfolders 
Author Message

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
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:
Code:
CPU: AMD Ryzen 5 4500 6-Core Processor (4184 MHz)
Memory: 31878MB
OS version: Linux-x86_64 v6.1.41-gentoo-dist #1 SMP PREEMPT_DYNAMIC Tue Jul 25 09:26:34 -00 2023
Memory manager: jemalloc v5.3.1-20230728
Graphics: AMD RADEON RX 580 SERIES (POLARIS10, LLVM 16.0.6, DRM 3.49, 6.1.41-GENTOO-DIST)
OpenGL version: 4.6 (Core Profile) Mesa 23.1.3
Detected VRAM: 10281MB


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
Profile

Joined: 2009-03-17 18:42:51
Posts: 5554
Reply with quote
g0rd0ngrfr33mailgr wrote:
I understand that is because of the backporting of the LL Performance Viewer optimisations,
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.

Quote:
only it's not because Alchemy has these too and doesn't give me anything more than FS.
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... :?

Quote:
So I suspect it's Henri's wizardry :-)
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.

Quote:
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 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.

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
Profile WWW

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
Henri Beauchamp wrote:
Relentless C++ optimizations during 16 years...

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.

Quote:
With Lua !

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 :)

Quote:
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.


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
Profile

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
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
Image

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
Profile

Joined: 2009-03-17 18:42:51
Posts: 5554
Reply with quote
g0rd0ngrfr33mailgr wrote:
The buttons open the relevant floaters, although they don't close them when clicking again on the buttons
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...

Quote:
also it appears I can't have more than one lua-inventories open at the same time.
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...

Quote:
I have not tried using an icon yet, just a two letter description (apparently I can't have more than two).
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.

Quote:
The order of the buttons (counting top-down) is not respected, however.
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.

Quote:
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?
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
Profile WWW

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
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...

Ah, there is an example like that in the example automation script. Thanks, I'll look it up.

Quote:
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...

Thanks! Is there something I could add to preserve the search function too?

Quote:
But is is much simpler to just change the buttons number in your script to match your preference.

That it is.

Quote:
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.

All right :-)

Quote:
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.

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
Profile

Joined: 2009-03-17 18:42:51
Posts: 5554
Reply with quote
g0rd0ngrfr33mailgr wrote:
Is there something I could add to preserve the search function too?
Not sure what you mean by "search function"...

g0rd0ngrfr33mailgr wrote:
Gmail may suck, but I don't have other addresses I could use. I (think I) disabled email notification instead.
Thanks. You could try a Yahoo email account: they seem to "suck less" in this respect...


2023-07-31 12:06:01
Profile WWW

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
I did it! Now I can have separate floaters :-) I'll work on closing them another time. Thanks!

Henri Beauchamp wrote:
g0rd0ngrfr33mailgr wrote:
Is there something I could add to preserve the search function too?
Not sure what you mean by "search function"...

I mean the search bar, the possibility to search within these folders from the lua floater.


2023-08-03 16:18:43
Profile

Joined: 2011-09-27 11:18:31
Posts: 176
Reply with quote
Henri Beauchamp wrote:
g0rd0ngrfr33mailgr wrote:
The buttons open the relevant floaters, although they don't close them when clicking again on the buttons
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
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 29 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.