IRC logs of Freenode #BZFlag for Monday, 2019-12-16

*** infobot <infobot!ibot@c-174-52-60-165.hsd1.ut.comcast.net> has quit IRC (Ping timeout: 268 seconds)00:16
BZNotifybzflag: allejo commented on issue #233 "Teleporter naming in world export, obj format" by ODelusion (https://git.io/JeQSu): An example to point out this problem, teleporter names are saved in...00:18
BZNotifybzflag: allejo removed needs triage label from #233 "Teleporter naming in world export, obj format" by ODelusion (https://git.io/JeQKZ)00:19
BZNotifybzflag: allejo milestoned issue #233 by ODelusion (2.4.20 - )00:19
BZNotify2.4 @ bzflag: allejo pushed 1 commit (https://git.io/JeQSh):01:10
BZNotify2.4 @ bzflag: allejo a12ea7: Update CHANGELOG with latest 2.4 commits (https://git.io/JeQSj)01:10
BZNotifybzflag: allejo synchronized pull request #229 "Add bz_getSpawnPointWithin to API" (https://git.io/Je1qc)01:34
BZNotifybzflag: allejo synchronized pull request #229 "Add bz_getSpawnPointWithin to API" (https://git.io/Je1qc)01:37
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has joined #bzflag01:38
*** I_Died_Once <I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has quit IRC (Ping timeout: 250 seconds)01:42
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has quit IRC (Remote host closed the connection)01:48
BZNotifybzflag: allejo edited pull request #229 "Add bz_getSpawnPointWithin to API" (https://git.io/Je1qc)02:23
BZNotifybzflag: allejo closed pull request #229 02:23
BZNotify2.4 @ bzflag: allejo pushed 4 commits (https://git.io/JeQHn):02:23
BZNotify2.4 @ bzflag: allejo cf69c9: Add bz_getSpawnPointWithin to API (https://git.io/JeQHc)02:23
BZNotify2.4 @ bzflag: allejo 404b83: Add timeout to bz_getSpawnPointWithin() (https://git.io/JeQHC)02:23
BZNotify2.4 @ bzflag: allejo a3b53e: Add bz_getSpawnPointWithin to CHANGELOG (https://git.io/JeQHW)02:23
BZNotify2.4 @ bzflag: allejo 82d03e: Merge pull request #229 from allejo/feature/safe-spawn-points-plugins (https://git.io/JeQHl)02:23
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has joined #bzflag03:07
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has quit IRC (Ping timeout: 240 seconds)03:36
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has joined #bzflag03:39
*** The_Noah_ <The_Noah_!~The_Noah@47.185.193.111> has joined #bzflag03:58
*** The_Noah <The_Noah!~The_Noah@47.185.193.111> has quit IRC (Ping timeout: 240 seconds)04:01
*** FieldSobers <FieldSobers!~Artistics@unaffiliated/user49> has quit IRC (*.net *.split)04:08
*** brlcad <brlcad!~sean@104.225.5.10> has quit IRC (*.net *.split)04:08
*** joevano <joevano!~joevano@bzflag/developer/JoeVano> has quit IRC (*.net *.split)04:08
*** blast007 <blast007!~blast007@bzflag/developer/Blast> has quit IRC (*.net *.split)04:08
*** FieldSobers <FieldSobers!~Artistics@unaffiliated/user49> has joined #bzflag05:03
*** WhatsUpDanger <WhatsUpDanger!ac0d4a9c@gateway/web/cgi-irc/kiwiirc.com/ip.172.13.74.156> has quit IRC (Ping timeout: 276 seconds)05:42
*** infobot <infobot!ibot@c-174-52-60-165.hsd1.ut.comcast.net> has joined #bzflag06:06
*** ChanServ sets mode: +v infobot06:06
macsformetupone: do you have a feeling for how much of an issue it is for VBO memory having to be reallocated?06:45
macsformeI know we had a lot of stuff that was in display lists already, so I imagine data like that would be easy to transition to a persistent VBO, whereas we also have a lot of stuff assembled on-the-fly which might not be so easy06:46
tuponeThe world objects are not going to be reallocated or changed at all07:18
tuponeonly for the radar but I did a shader that preserve the radar objects (color is computed in the shader)07:18
tuponeIn my PR the things written in the initVBO are "statically allocated". The initVBO is only called when GL context is destroyed and recreated07:20
macsformeokay07:22
tuponeAlso the tank models will be preserved and redraw with different Matrix07:22
macsformeso why is it necessary to keep a list of free VBOs and allocated VBOs?07:22
BZNotifybzflag: macsforme commented on pull request #227 "Enable dithering always" by atupone (https://git.io/JeQdY): > tupone: as for the dithering in bzflag, it was disabled when draw...07:24
macsformemeaning, what is the purpose of this: https://github.com/atupone/bzflag/blob/VBO/include/VBO_Handler.h#L51-L5707:25
tuponeIf I have only dynamic object I would not need to trace memory, maybe I could have used a simple stack approach07:26
tuponeIf I have static object to draw I need to know where they are, I need to free them when I change server, where to get memory for dynamic things ...07:28
macsformewhy can't each object that needs to be drawn have its own VBO?07:29
tuponeIf the object where in the "CPU" memory I could have used new and delete.07:29
tuponeToo much VBO switching is an answer07:29
tuponedynamic memory allocation on the GPU07:30
macsformeand why is that a problem?07:30
tuponeSaving GPU time07:32
macsformedid you actually measure an impact?07:33
macsformeI can understand that we don't want to change state unnecessarily, so we bind a VBO ideally once per frame, use it, then move onto the next07:34
tuponeI did not. I read https://www.khronos.org/opengl/wiki/Vertex_Specification_Best_Practices07:34
macsformebut I doubt there is a performance loss from rebinding even 20-30 different VBOs each frame07:35
tuponeyou will have about 400 VBO or more for a simple world07:35
tuponethe models for a tank are about 8 and you need to draw them for each tank07:36
tuponeyou have shot07:36
macsformewell, some things could be grouped together... for example, I could see all world geometry being together in one buffer07:37
tuponeyou have the world object07:37
tuponethe menu07:37
tuponethe radar07:37
macsformetank pieces could all be grouped together in one buffer as well... they are the same kind of geometry07:37
tuponewhen they explode they are not07:37
macsformeI didn't mean they have to be drawn in one call... you can store them in one buffer, and then render pieces individually by using an offset and a primitive count07:38
macsformefor example, store the tank body, then the treads, then the turret, the barrel, etc., consecutively in one buffer, and track the offsets for when we need to draw each piece07:41
tuponeThe memory allocation that I did is already doing that07:42
tuponeand it is not that complex07:42
tuponeeven with that approach you need to have a facility to rebuild your VBO when needed07:43
tuponeand I have created vboVTN .... but one could create its own if you want to have "your" VBOs07:45
macsformewe were already re-building display lists when the context is re-created... so yes, we need that logic, and to extend it to everything that uses a VBO07:46
tuponeBut all object to draw will use VBO in the future07:46
tuponethere will be no other way07:47
macsformeyes07:47
tuponeWhy I say you can create you own VBO? When I write to a VBO the CPU wait for it to be not in use07:48
tuponeI don't know if all the driver wait for all the VBO to be unused, or only the interested portion07:50
macsformewriting to a VBO should generally be rare while playing07:51
macsformeI think we'll still want to stream a few things, like the flag waving07:52
macsformemaybe I still don't understand your design07:53
macsformein std::list<MemElement> alloVBOList, how many elements do you expect?07:54
tuponeOne for each request. For instance for for each piece of a tank07:55
tupones/for/one/07:55
macsformewill some vboIndex within that list be shared, or each unique?07:56
tuponeall the vboIndex are unique for  buffer07:56
tuponeit is going to trace, for instance, where the piece of the tank model will start07:57
macsformeand a vboIndex is a buffer name returned by glGenBuffers(), or something else?07:57
tuponeno, only the offset from the start of the buffer07:58
macsformeokay, so each VBO_Hander gets one VBO name from GL?07:58
tuponeyes or three07:59
tupone    glDrawArrays(07:59
tupone        GL_TRIANGLE_STRIP,07:59
tupone        vboIndex,07:59
tupone        (flagChunks + 1) * 2);07:59
tuponethis is the usage of vboIndex in a rendering call08:00
tuponethe enable Arrays will bind the correct buffer08:00
tuponevboVT.enableArrays();08:00
macsformeis there only one instance of VBO_Handler per combination needed (e.g., V + N + T, V + N, etc.)?08:04
tuponeyes, I did that to save space (on the GPU) but you are free to create other if you need08:05
tuponefor instance truely permanent object, that are used a lot during drawing could use their own VBO_Handler to avoid freezing the renderloop when other are updating. Still not done in my GL2.0 porting. I have only those08:07
macsformeyes, that is a problem inherent to this design (of putting so much vertex data together)08:09
tuponeThis design allows to put things together easily, Do not force you to put all things together08:10
macsformeso when you call the VBO_Handler constructor you tell it how much memory to reserve on the GPU?08:15
macsformeor rather, how many elements, and then init() will calculate how much memory, and actually allocate the buffers?08:17
macsformeokay, I think I'm starting to grasp it08:27
tuponeok. more question later :)08:28
macsformeI am still curious though how you calculate that a simple world will result in 400+ VBOs without this design08:28
macsformeI will sleep on it08:28
tuponewith one vbo for rendering call08:29
*** brlcad <brlcad!~sean@104.225.5.10> has joined #bzflag10:05
*** blast007 <blast007!~blast007@bzflag/developer/Blast> has joined #bzflag10:05
*** joevano <joevano!~joevano@bzflag/developer/JoeVano> has joined #bzflag10:10
*** ChanServ sets mode: +v joevano10:10
*** Foo_man_choo <Foo_man_choo!~spldart@c-73-155-11-165.hsd1.tx.comcast.net> has quit IRC (Ping timeout: 265 seconds)10:33
*** Foo_man_choo <Foo_man_choo!~spldart@c-73-155-11-165.hsd1.tx.comcast.net> has joined #bzflag10:40
*** Foo_man_choo is now known as Guest9476310:41
*** I_Died_Once <I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has joined #bzflag11:03
*** The_Noah_ is now known as The_Noah13:28
*** FusionDude <FusionDude!~flash@2601:280:c200:4e39:45c9:b919:dcf9:b2ce> has quit IRC ()14:15
*** WhatsUpDanger <WhatsUpDanger!0ca73d02@gateway/web/cgi-irc/kiwiirc.com/ip.12.167.61.2> has joined #bzflag16:01
*** _I_Died_Once <_I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has joined #bzflag17:17
*** I_Died_Once <I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has quit IRC (Ping timeout: 245 seconds)17:20
BZNotifybzflag: atupone commented on pull request #227 "Enable dithering always" (https://git.io/Je7tI): Dithering is a (mostly) noop when using a 24 bits color buffer....17:32
*** WhatsUpDanger29 <WhatsUpDanger29!0ca73d02@gateway/web/cgi-irc/kiwiirc.com/ip.12.167.61.2> has joined #bzflag20:39
*** WhatsUpDanger <WhatsUpDanger!0ca73d02@gateway/web/cgi-irc/kiwiirc.com/ip.12.167.61.2> has quit IRC (Ping timeout: 268 seconds)20:41
*** WhatsUpDanger29 is now known as WhatsUpDanger20:47
BZNotifybzflag: The-Noah opened issue #234 "Radar and control panel performance" (https://git.io/Je7OV)21:03
blast007The_Noah: Include what operating system and graphics card/driver you are using please.  I also saw dramatic FPS differences, with an AMD RX 570 on Debian.21:08
allejoI think that issue alone justifies us nuking the radar entirely21:12
allejo:p21:12
tuponeI wonder what is the performance with my GL2.0 branch. Only 1 radar type, but done with shaders21:15
blast007tupone: I haven't tried that branch in a while21:15
tuponeNo change lately in the branch, but radar color is computed directly on the shader21:16
tuponeAll the world reside in a GL buffers, tanks and shot still dynamic21:17
tuponewithout the shader everything change frame by frame for the color is changing depending on the height21:20
BZNotifybzflag: atupone synchronized pull request #232 "Vertex buffers object handling" (https://git.io/Je9kl)21:59
BZNotifybzflag: The-Noah edited issue #234 "Radar and control panel performance" (https://git.io/Je7OV)22:35
*** I_Died_Once <I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has joined #bzflag22:42
*** _I_Died_Once <_I_Died_Once!~I_Died_On@unaffiliated/idiedonce/x-1828535> has quit IRC (Ping timeout: 245 seconds)22:45
*** Guest94763 <Guest94763!~spldart@c-73-155-11-165.hsd1.tx.comcast.net> has quit IRC (Ping timeout: 246 seconds)22:47
*** Zehra <Zehra!~Zehra@unaffiliated/zehra> has joined #bzflag23:46

Generated by irclog2html.py 2.17.3.dev0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!