From b4388f551d4833c9b88c5c7bc0cdae8aa77a9e52 Mon Sep 17 00:00:00 2001 From: C R Onjob Date: Sun, 5 Oct 2014 01:00:02 +0800 Subject: [PATCH] Automatic commit of irc logs Delay not, Caesar. Read it instantly. -- Shakespeare, "Julius Caesar" 3,1 Here is a letter, read it at your leisure. -- Shakespeare, "Merchant of Venice" 5,1 [Quoted in "VMS Internals and Data Structures", V4.4, when referring to I/O system services.] --- irc/#ipdf.log | 885 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 885 insertions(+) diff --git a/irc/#ipdf.log b/irc/#ipdf.log index ba3bd79..88b0308 100644 --- a/irc/#ipdf.log +++ b/irc/#ipdf.log @@ -5215,3 +5215,888 @@ 17:04 <@matches> Right now it's hard to tell whether I am getting precision issues or I just accidentally moved the mouse a bit 21:02 < sulix> That's about the most terrifying email it's possible to get, I think. 21:59 < sulix> Very simple scripts for automating actions now exist. +--- Day changed Thu Sep 25 2014 +08:27 < sulix> matches: Thoughts on a meeting time? +10:58 <@matches> Ah +10:58 <@matches> I sort of slept in +10:59 <@matches> Well actually I didn't sleep in I just started practicing the piano and then it was 2 hours later... +10:59 <@matches> Yeah that's a pretty terrifying email +11:05 <@matches> I am excited by the script +11:06 < sulix> Cool. I just added support for toggling some things to it. +11:06 < sulix> When's best for you meeting-wise? +11:06 <@matches> I can't make 11:15 +11:06 <@matches> Was there any other time that wasn't 5:45pm? +11:07 <@matches> It'll be a struggle to make 9am +11:07 <@matches> In fact apparently it's 7pm now +11:07 <@matches> I must have really overslept +11:07 <@matches> I'm sure I made progress this week +11:07 <@matches> I just can't remember what it was +11:07 < sulix> Well, I can make any time after ~12:00, now. +11:08 < sulix> You did the whole cumulative transforms thing. +11:08 <@matches> Yes, I'm not sure whether that was good or not +11:08 <@matches> It sort of invalidates a whole bunch of earlier things +11:09 <@matches> It is probably the only way that arbitrary precision bounds will ever be practical though +11:09 <@matches> I also fixed ParanoidNumbers a bit I guess +11:09 <@matches> But they are still terrible +11:09 <@matches> I doubt it will get to the point where they ever aren't terrible +11:12 <@matches> Do I do my GENG4402 assignment that's due on Friday or do I sacrifice it for the glory of IPDF? +11:13 < sulix> I was going to say "IPDF is not a cult", but I'm not so sure. +11:16 <@matches> On the one hand I feel sorry for you because you have the entire trip to Sydney as a meeting time +11:16 <@matches> On the other hand I feel sorry for me because I haven't actually achieved anything +11:17 <@matches> I have an abstract that says what I'm going to achieve... +11:17 <@matches> It hasn't been achieved +11:17 <@matches> Achievements are locked +11:18 * sulix hasn't achieved anything but the scripting stuff in the last week. :/ +11:19 <@matches> You have a quad tree! +11:19 <@matches> Did I tell you, GMPrat takes 5 seconds to pass tests/addsub and doubles take 5ms +11:20 <@matches> Wait GMPrat was only 500ms +11:20 <@matches> PN was 6 seconds +11:20 <@matches> When restricted to size 1 +11:20 <@matches> There's a bug somewhere +11:22 <@matches> They seem to grow a lot bigger than the size limit +11:22 <@matches> Ah, probably because I don't check "m_size + b->m_size" +11:27 <@matches> -_- +11:27 <@matches> You need to stop adding Debug messages that assume Real is a double +11:27 <@matches> :P +11:28 <@matches> Some of us are trying to compile with other number representations here +11:29 <@matches> I guess it does seem to actually work even though it's horrendously slow +11:29 <@matches> That's an achievement of some sort +11:30 <@matches> GMPrat also works and is horrendously slow but less horrendously slow, but I didn't actually invent that representation +13:45 <@matches> The script has loadsvg now +13:45 <@matches> It's tempting to make it turing complete... like some kind of... Post... Script +13:45 <@matches> But that would be silly +13:50 <@matches> I am loving this script thing +13:50 <@matches> Think of all the calories I can save +13:51 <@matches> My goodness I can even eat food whilst watching it zoom +13:51 <@matches> My hand is freed +13:51 <@matches> Freed from the tyranny of endless zooming +13:56 < sulix> Cool: I was going to add loadsvg, but it still has some quadtree problems. +13:58 <@matches> I think I will add "label" and "goto" so that I can zoom into the rabbit's eye *forever* +13:58 <@matches> Well +13:58 <@matches> Hmm that's actually work +13:58 <@matches> But I still think it's necessary +13:59 <@matches> You need to see at which point the Quad tree breaks +13:59 <@matches> Note that we don't need it for anything I've done because everything I've done breaks before single precision floats +13:59 <@matches> :( +14:10 <@matches> I have just implemented goto +14:10 <@matches> However there is still time to rename it to "goat" +14:11 <@matches> Once you have a goto you really need a branch... +14:15 <@matches> Go GMPrat +14:15 <@matches> A mighty 3 FPS +14:16 <@matches> The downside of my hands being free is I can type more things into IRC +14:17 <@matches> You can do it GMPRat +14:17 <@matches> Noo +14:17 <@matches> 2.5FPS +14:17 <@matches> We're still going strong +14:18 <@matches> Oh that's the total accumulated average +14:18 <@matches> It's actually at 0.8 FPS now +14:18 <@matches> And falling rather dramatically +14:20 <@matches> The fundamental flaw with these arbitrary precision types is the representation never gets smaller +14:21 <@matches> GMP rationals would calculate the GCD which could get smaller (when you zoom back out for example) +14:21 <@matches> But the GMP integer representation will still only ever increase in size +14:21 <@matches> I think they just always use the largest precision +14:22 <@matches> I was hoping that ParanoidNumber would do better since it actually has the ability to shrink +14:22 <@matches> But it's not amazing +14:22 <@matches> Hmm, I seem to have lost the rabbit +14:22 <@matches> That's not meant to happen +14:22 <@matches> GMPrat is supposed to be exact +14:22 <@matches> Where did he go! +14:34 <@matches> Every frame is agonising +14:39 <@matches> Maybe it's time to switch to motsugo for CPU rendering tests +14:40 < sulix> At least we now have a good way of burning up time in meetings? +14:44 <@matches> I'm somewhat confused +14:44 <@matches> With the cumulative transforms, the GPU renderer should work +14:44 <@matches> (It is equivelant to using CPU for transformations) +14:44 <@matches> But it seems to still break around 1e-6 +14:44 < sulix> Yes... +14:45 <@matches> Oh +14:45 <@matches> Right I commented out the TRANSFORM_OBJECTS_NOT_VIEW line +14:45 * matches tries again... +14:45 * sulix is really regretting the 4-switch statement, 16-case recursive function in the quadtree at the moment. +14:46 <@matches> I'll make a deal, I won't look at quadtree.cpp if you don't look in paranoidnumber.cpp +14:47 < sulix> Fair enough. +14:49 <@matches> I'm not seeing anything in the GPU renderer past 1e-7 +14:49 <@matches> With GMPrat +14:50 <@matches> I think I'm going to have to go through and fix the more obviously terribly designed parts of things +14:50 <@matches> For GMPrat to have any chance +14:53 <@matches> I'm wishing I had a quad tree so I didn't have to transform the bounds of things that would end up outside the screen space :P +14:53 <@matches> Maybe there's hope for an unholy union of Quadtree and GMP rationals yet +14:56 < sulix> "And the fifth angel sounded, and I saw a star fallen from heaven to earth: and to him was given the key to a bottomless abyss." +15:00 <@matches> I think the GMP rational -> float conversion is fith? +15:00 <@matches> It doesn't make any sense :S +15:00 <@matches> An object that is visible should always have bounds somewhere in {0,0,1,1} +15:00 <@matches> Which should be totally fine +15:01 <@matches> Oh +15:01 <@matches> Is this the bit where I made GMPrat::ToDouble return 0 if it was too big... +15:02 <@matches> No it returns mpq_get_d +15:02 <@matches> Blergh +15:03 < sulix> An object which is visible should have bounds that _intersect_ {0,0,1,1} +15:03 < sulix> Perhaps not contained within {0,0,1,1} +15:03 <@matches> Yeah that +15:04 <@matches> Maths +15:04 <@matches> 0 <= x <= 1 +15:04 <@matches> No not that +15:04 <@matches> Thing +15:04 < sulix> Unless you're using the Quadtree, which does clip everything to {0,0,1,1} +15:04 <@matches> Anyway +15:04 <@matches> It should work +15:05 <@matches> Wait +15:05 <@matches> There is this blen thing in the shader +15:05 <@matches> Is that passed via the view width or something +15:05 <@matches> Hmm +15:05 < sulix> That's kinda FITH. +15:07 <@matches> Anyway, somehow there is a multiplication by width/height and then probably a division afterwards somewhere else +15:07 <@matches> I'm rather confused +15:09 * matches struggles to navigate the treacherous waters of view.cpp +15:10 <@matches> That's right, RenderRange does the actual things +15:10 <@matches> We've got PrepareRender -> Render -> RenderRange/QuadtreeNode +15:11 < sulix> RenderQuadtreeNode just calls RenderRange a bunch of times and then breaks the document. +15:13 <@matches> It's alright, we can save to bitmap, we don't need the document structure to not break +15:13 <@matches> So how the hell is the shader getting rounding errors +15:13 <@matches> It should always get glbounds of {0,0,1,1} +15:13 <@matches> (With cumulative transforms) +15:15 <@matches> Then RenderRange -> ObjectRenderer::RenderUsingGPU... +15:17 <@matches> This does not make sense +15:17 <@matches> Things cannot be broken in this way such that they work +15:18 <@matches> Hello +15:18 <@matches> GraphicsBuffer::BufferUsageStaticDraw +15:18 <@matches> Does that do a thing? +15:19 <@matches> Also +15:19 <@matches> Should //m_objbounds_vbo.Invalidate(); be commented out +15:19 <@matches> I'm still confused as to how it works at all +15:20 < sulix> BufferUsageStaticDraw tells the driver that we're not planning to modify this buffer frequently. +15:21 < sulix> The Invalidate() stuff should be commented out, IIRC. +15:23 <@matches> Hmm when in doubt make clean +15:30 <@matches> Anyway +15:30 <@matches> I hope you get the quadtree working with adding stuff +15:30 <@matches> Because the only point at which doubles fail is when they get a sigfpe +15:31 <@matches> Floats do start to do strange things before that +15:32 <@matches> Actually no, doubles would screw up it's just the script is not testing in that range +15:33 < sulix> I'm still trying to get panning working with the quadtree at the moment. +15:33 < sulix> I was scratching my head for quite a while before I realised TRANSFORM_OBJECTS_NOT_VIEW was on. +15:34 <@matches> Sorry +15:34 <@matches> It really helps the non quad tree rendering +15:34 < sulix> (You'd be surprised how totally it breaks the quadtree) +15:34 <@matches> Oh I'm not that surprised +15:34 <@matches> The quad tree is basically doing cumulative transforms after all +15:34 <@matches> In a very loose sense +15:35 < sulix> The quadtree does both. +15:35 < sulix> It's an equal-opportunity data structure. +15:37 <@matches> The more I think about this, the more I am convinced the quadtree is the only sensible solution +15:37 <@matches> Which is unfortunate +15:37 <@matches> I had hoped to actually have something to present +15:37 <@matches> Other than "And you should all attend my partner's presentation next week!" +15:38 <@matches> I guess I should produce some performance graphs or something +15:38 <@matches> What I did was a terrible idea and this is why +15:39 <@matches> Sort of thing +15:40 <@matches> I wonder where the bottleneck is though +15:40 <@matches> GMPrats get very slow even with the GPU renderer +15:40 < sulix> Converting to doubles? +15:40 < sulix> Doing gcd() all day? +15:40 <@matches> Maybe +15:40 <@matches> gcd is 50% of execution time according to perf +15:41 <@matches> perf is pretty cool but it is not as easy to use as valgrind +15:41 <@matches> Unfortunately valgrind doesn't fully emulate the FPU +15:41 <@matches> So ParanoidNumbers don't work at all using it +15:42 <@matches> Which is very frustrating because there have to be things I can speed up in them +15:42 <@matches> I have a git stash where I tried to implement Copy-On-Write but it was a bit of a disaster +15:42 <@matches> It was so much of a disaster that even with COW disabled they still broke (despite working fine in the previous commit...) +15:43 <@matches> They do spend an excessive amount of time copy constructing each other though +15:50 <@matches> If I can express bezier bounds relative to the containing path it might speed things up slightly +15:51 < sulix> Ideally we'd ditch the "BEZIER" object and just have paths. +15:51 < sulix> But that sounds like a lot of work. +15:53 <@matches> I'd be less inclined to want to do it if things weren't so amazingly slow +16:00 <@matches> It looks like Bezier::GetType is slowing the CPU rendering down at least +16:01 <@matches> Clearing pixels is also slow +16:01 <@matches> Although that doesn't depend on the zooming +16:02 <@matches> GPU rendering isn't much better though, hmm +16:46 <@matches> The Arena sort of helps things +16:47 <@matches> Until it gets to allocating 40 million x 180 Bytes ... +17:25 <@matches> Protip, #define and spelling mistakes and #ifdef do not work together well... +--- Day changed Fri Sep 26 2014 +01:40 <@matches> I came up with a compromise between not doing GENG4402 to work on IPDF and doing GENG4402 +01:40 <@matches> The only casualty was sleep +01:41 <@matches> And no one likes him anyway +01:41 <@matches> All sides were pleased by the deal +16:21 * matches regrets upgrading debian jessie after the shellshock thing +16:21 <@matches> fglrx is gone again +--- Day changed Sat Sep 27 2014 +12:28 <@matches> 5 minutes to go in ACM... +12:29 <@matches> You can do it Dijkstras on Bijkstras +12:30 <@matches> Oh 5 minutes until they freeze the score board +12:30 < Pommers> 5mins? Timer says an hour +12:30 <@matches> Apparently they freeze the score board +12:30 <@matches> I don't know how these work +12:30 <@matches> I only just started watching +12:31 <@matches> An hour is plenty of time +12:31 < Pommers> So teams can't see each others scores change? +12:31 <@matches> Yeah +12:31 <@matches> Mickelback just got C wrong +12:31 < Pommers> They secretlyu have them all solved and are just waiting to waste time +12:31 <@matches> Yes +12:31 <@matches> Nice camera work... +12:31 < Pommers> Getting it right won't get them into first though +12:32 <@matches> I can't see them +12:33 < Pommers> UWA needs labs like that +12:33 <@matches> It's still anyone's game! +12:33 <@matches> They said it +12:33 <@matches> You can do it Dijkstras on Bijkstras +12:33 < Pommers> Cmon Dijksras in Kijkstras +12:34 * Pommers fails +12:34 <@matches> Go for G +12:35 < Pommers> Yeah. Be the winner and Get G right now +12:35 <@matches> Also D +12:35 <@matches> and E +12:35 < Pommers> B D E G +12:35 <@matches> All you need to do is get all the hard ones right without anyone else getting them right... +12:35 < Pommers> Nah +12:36 < Pommers> You want to get all the easy ones as soon as possible +12:36 < Pommers> Then work out the harder ones +12:36 <@matches> It's a bit late now.. +12:36 <@matches> Sink everything into the hard ones! +12:37 < Pommers> The teams still get feedback in the last hour right? +12:37 <@matches> I assume so +12:37 <@matches> This camera is totally biased +12:37 <@matches> I haven't seen sulix yet +12:37 <@matches> Just shots of people eating sandwiches +12:38 < Pommers> Sandwich eating stream +12:38 < Pommers> Best Stream +12:39 < Pommers> I saw Rowan before +12:39 <@matches> ANU is doing well +12:39 <@matches> I think this calls for some sabotage +12:40 < Pommers> Where's axtens when we need him +12:40 <@matches> In Canberra +12:40 <@matches> Also he'd probably be supporting ANU +12:41 < Pommers> Probably +12:42 <@matches> I'm waiting for it to all come together +12:42 <@matches> And all the boxes to turn blue +12:42 <@matches> Commentator is a bit behind +12:42 < Pommers> So they've submitted but no public feedback +12:42 <@matches> Or the stream is a bit behind I guess +12:42 < Pommers> 45 seconds +12:42 <@matches> ANU made that submission 3 minutes ago +12:43 <@matches> Singing! +12:43 <@matches> This stream has it all +12:43 < Pommers> I have the stream muted +12:43 <@matches> Ooh a shot of the other room +12:44 <@matches> sulix: Stand up! +12:44 < Pommers> Move out the way so we can see into the room +12:44 < Pommers> up and down the bolevard +12:44 <@matches> Hahaha +12:45 <@matches> That *could* be sulix in the background +12:47 <@matches> I guess it would be intrusive to have the camera in the room with the contestants +12:47 <@matches> Also for 14 viewers +12:48 <@matches> I love the sign off +12:51 <@matches> Gozz! +12:51 <@matches> Gozz what are you doing! +12:51 <@matches> Get back to the desk! +12:54 <@matches> These coaches(?) look rather worried +12:55 <@matches> Oh well, I guess I should actually work on IPDF +12:55 <@matches> Not all of us get free trips to Sydney :P +13:00 < Pommers> So yeah. They get there own score line +13:01 < Pommers> I missed Gozz! +13:03 <@matches> They must be doing well if they have time for sandwich breaks +13:03 <@matches> Have all the solutions ready to submit in the last 5 minutes +13:03 <@matches> Shock victory +13:03 < Pommers> Or they have given up +13:03 <@matches> No! +13:03 <@matches> How do you read the scores anyway? +13:03 <@matches> The first column is number of problems solved +13:03 <@matches> What's the second +13:04 < Pommers> I explained in #ucc before +13:04 <@matches> Ah damn +13:04 < Pommers> 12:09 <@Pommers> Ranking is number of challanges sorted: More is better +13:04 < Pommers> 12:09 <@Pommers> Numeric number: Less is better +13:04 < Pommers> 12:09 <@Pommers> Cause the number is minute challenmge was solved + 10 * number of failed attempts +13:04 < Pommers> 12:10 <@Pommers> 20, not 10 +13:04 <@matches> I thought they were doing well because they had a high number +13:04 < Pommers> 12:10 < bob> so those teams who haven't finished anything and have a score of zero are winning? +13:04 < Pommers> 12:11 < bob> oh I get you now +13:04 < Pommers> 12:11 <@Pommers> Nope. Because number of challenges sorted is more important +13:04 < Pommers> 12:11 < bob> really shittily labeling on that table +13:04 < Pommers> 12:11 < bob> so mickelback is coming second +13:04 <@matches> Yes yes I can change windows +13:04 < Pommers> 12:11 <@Pommers> The numbers on the left show their current position +13:04 < Pommers> 12:11 <@Pommers> Yep +13:04 < Pommers> 12:12 <@Pommers> The scoring system is pretty much the same for all coding competitions +13:04 < Pommers> 12:12 <@Pommers> GCJ is different though +13:04 < Pommers> 12:16 <@Pommers> Numbers down the bottom are attempts/correct/time was first solved +13:04 < Pommers> Nope +13:05 < Pommers> But now it's in your logs too! +13:05 <@matches> Meh anything that skews the statistics away from me talking to myself is fine by me +13:05 <@matches> Just copy paste all of #ucc in here please +13:06 <@matches> Mikelback could still win +13:06 < Pommers> 13:05 <@matches> Just copy paste all of #ucc in here please +13:06 < Pommers> If you say so +13:06 <@matches> Nonononono +13:07 <@matches> I' +13:07 <@matches> ll just delete the git repository when this is over +13:08 < Pommers> Sounds like a good idea +13:13 <@matches> So you can go back to earlier parts of the stream +13:13 <@matches> "I tell you, in this life there are only two things to die for: Your country, and these sandwiches" +13:15 < Pommers> Yep +13:15 <@matches> Back to live action, and there is a close up of someone eating a sandwich +13:27 <@matches> There's still time! +13:28 <@matches> Why are things not turning blue +13:29 <@matches> Mickelback appears to be struggling on B +13:29 <@matches> Haha +13:29 <@matches> "It could be anyone... anyone... well probably not Auckland Queensland or Adelaide" +13:29 <@matches> Anyone of the top five +13:31 <@matches> I'm still waiting for the 5 simultaneous submissions from Dijkstras on Bijkstras +13:32 <@matches> More sandwiches +13:34 < Pommers> Now we wait +13:36 <@matches> Reading these logs back it sounds a lot wierder when you don't notice the timestamps +23:23 <@matches> So, after much spaghetti bolognaise +23:24 <@matches> I managed to perform the arbitrary precision transformations only on the bounds of paths as opposed to the bounds of every single object. +23:24 <@matches> It helps a lot but at the end of the day it's still fantastically useless. +23:24 <@matches> Project complete I guess. +23:24 <@matches> Just Use Quad Trees +23:25 <@matches> If I had some way to clip the objects to the view so I only had to transform things that would be shown... +23:25 <@matches> I would have a quad tree +23:25 <@matches> If I don't do that, then you still have the exponentially growing Gmprat +23:26 <@matches> Oh +23:26 <@matches> Oooh +23:26 <@matches> Actually +23:26 <@matches> I had the CPU renderer on +23:27 <@matches> The GPU renderer loves this +23:27 <@matches> The CPU renderer seems to generally just suck +23:27 <@matches> I suspect there is actually a bug in it +23:27 <@matches> It shouldn't be so slow +23:28 * matches is getting really excited +23:28 <@matches> I actually zoomed in to 1e-9 using floats for everything except the Path bounds +23:29 <@matches> It would be nice the CPU renderer didn't suck, but I guess "Transform the bounds with arbitrary precision on the CPU and do rendering with floats on the GPU" is actually the better approach +23:32 <@matches> Also... I think somehow I got an updated fglrx that is less shit at rounding floats +23:32 <@matches> Because eye_of_the_rabbit doesn't go all funny anymore... +23:32 <@matches> Unless you make it zoom a little bit more +23:36 <@matches> I still think the quad tree will beat this in terms of performances +23:36 <@matches> But at least it's like, in the game +23:36 <@matches> As in it doesn't take so long to do the performance test that it's not worth bothering actually doing a comparison +23:36 <@matches> Now we can have a graph at least +23:46 < Pommers> Very nice +23:51 <@matches> The CPU renderer is stalling in DeCasteljau +--- Day changed Sun Sep 28 2014 +00:18 <@matches> sulix: You need to get eye_of_the_rabbit working under the quadtree so I can compare it with my horrible hacks to View,Path,BezierRenderer,PathRenderer... +00:18 <@matches> Document... +00:18 <@matches> Not a single class escaped the wrath of the #ifdef +00:18 <@matches> No pressure, glhfdd +00:19 <@matches> Unfortunately I still get a bunch of SIGFPEs but I think those are in places that don't affect the rendering, so I can probably fix them +00:19 <@matches> Or set the program to ignore them +00:20 <@matches> I never really worked out how you turned them on in the first place :S +00:20 <@matches> Also well done at ACM and all that +00:21 <@matches> The #define's you'll want to turn off to get the quadtree working again are both the ones in view.h and path.h +00:21 <@matches> Oh wait I put in a check just for you +00:45 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has quit [Ping timeout: 121 seconds] +00:47 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +01:09 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has quit [Quit: Lost terminal] +01:15 -!- Pommers [bobgeorge33@motsugo.ucc.gu.uwa.edu.au] has quit [Quit: Lost terminal] +--- Log opened Sun Sep 28 09:58:47 2014 +09:58 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +09:58 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal] +09:58 -!- Irssi: Join to #ipdf was synced in 0 secs +10:04 -!- matches changed the topic of #ipdf to: Motsugo OOMed, this would be a great excuse to extend the project if we were actually using Motsugo +--- Log closed Sun Sep 28 10:08:08 2014 +--- Log opened Sun Sep 28 10:08:20 2014 +10:08 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +10:08 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal] +10:08 -!- Irssi: Join to #ipdf was synced in 2 secs +11:46 -!- unmercifulfish [unmercifulf@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +23:19 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +--- Day changed Wed Oct 01 2014 +15:13 <@matches> Urgh the code is disgusting +15:13 <@matches> I can't look at it +15:16 <@matches> The quadtree does some... interesting things +15:17 < sulix> I think by "interesting," you mean "horrible." +15:18 < sulix> ... or possibly "wrong" +15:22 <@matches> Well, you appear to be able to add things to the document +15:22 <@matches> They are just in the wrong spot +15:22 <@matches> Also things seem to disappear as well +15:28 <@matches> Also I can't seem to compile without the quadtree anymore +15:29 <@matches> You're going to have to deal with the Makefile because I' +15:29 <@matches> m moving quadtree.o out of the defaults +15:29 <@matches> It expects things in IPDF::Document that won't exist if the quadtree is disabled +15:35 < sulix> Oops... +15:35 < sulix> I have started using the makefile, though, so that's good. +15:39 <@matches> I'm somewhat regretting the use of Real in the Bezier +15:39 <@matches> I need another Real +15:39 <@matches> Real2 ? +15:39 <@matches> Or I can do terrible hacks with #undef +15:39 <@matches> Hmmm +15:39 <@matches> Terrible hacks with #undef it is! +15:40 <@matches> Possibly we need a seperate header for all these defines +15:40 <@matches> I have #defines in path.h that only work if there is also a #define in view.h ... +15:41 <@matches> But the #define in view.h will still work without the one in path.h +15:43 <@matches> Possibly using different branches would have been cleaner +15:43 <@matches> Possibly I should really stop writing code and start writing a report anyway +15:43 <@matches> So many regrets +15:44 <@matches> I explained the project to some Engineers today! +15:44 <@matches> They understood it! +15:44 <@matches> They questioned the point of it all... +15:44 <@matches> I said "The point is that you can zoom into this point here..." +15:44 <@matches> "And it turns into a rabbit!" +15:44 <@matches> :S +15:46 <@matches> Also "Why isn't there any shading" +19:24 <@matches> I'm having a little trouble with the performance metrics +19:24 <@matches> How do I pick something that is a legitimate performance metric +19:24 <@matches> "We decided to render this Fox and this Rabbit" +19:25 <@matches> Also I really wish ipdf were good enough to do the report in it, because then it could demonstrate itself +19:25 <@matches> Now I have to link to a video? +19:26 <@matches> I mean +19:26 <@matches> "Figure 1 is the rabbit and Figure 2 is the rabbit that looks exactly the same when you zoom in!" +19:26 <@matches> Is not really impressive +19:26 <@matches> "Figure 1 is the rabbit and Figure 2 is the rabbit that looks terrible when you use floats and you'll just have to trust us when we say we fixed this" +19:26 <@matches> :S +19:28 <@matches> Also causing difficulty... +19:28 <@matches> The zoom level I am at is not representable as a double +19:28 <@matches> Which means it cannot be plotted in gnuplot unless I scale it to the range of doubles first... +19:28 <@matches> Which sort of defeats the point... +19:29 <@matches> I guess I could plot "Exponent" +19:29 <@matches> If you clear the document after every 3 rabbits, eye_of_the_rabbit appears to go for a very long time +19:30 <@matches> So that's the performance vs zoom I guess +19:30 <@matches> But only take a data point after every 3 rabbits otherwise you are also altering number of primitives +19:30 <@matches> Panning is pretty much the same +19:33 <@matches> I'm just going to sit and watch it zoom for a while I guess +19:33 <@matches> Mesmerising +19:34 <@matches> Should I help fix the quad tree? +19:34 <@matches> I'd like to be able to compare it to the "actually we'll only use arbitrary precision for *some* things" approach +--- Log opened Thu Oct 02 13:55:13 2014 +13:55 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +13:55 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal] +13:55 -!- Irssi: Join to #ipdf was synced in 3 secs +14:34 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +14:44 <@matches> Hello +14:44 <@matches> Are we having a meeting today? +14:45 < sulix> Rowan is still in Sydney. +14:45 <@matches> Oh +14:45 <@matches> That would make it difficult +14:45 <@matches> Well, I' +14:45 < sulix> (Also every time I touch the quadtree it ends up more broken) +14:45 <@matches> m in UCC trying to actually get some sort of performance graphs +14:45 <@matches> :( +14:46 <@matches> Yeah, it turns out Gmprat may beat floats considerably but it isn't that great compared to doubles +14:46 <@matches> It's interesting actually +14:46 <@matches> It only really starts to slow down right at the limit of double precision +14:46 <@matches> Then again, doubles will screw up before that (I hope) +14:47 <@matches> You can represent 1e-38 with a float but it still screws up at 1e-6 after all +14:47 <@matches> Also no one understands the eye_of_the_rabbit demo +14:48 <@matches> I don't know why +14:48 <@matches> It's pretty obvious it's *zooming to infinity* +14:48 <@matches> (TM) +14:48 <@matches> Righht? +14:48 <@matches> :( +14:48 < sulix> Their puny minds cannot contain the majesty that is eye_of_the_rabbit.script +14:50 <@matches> A demo that actually added text where the text was the scale might be cool +14:50 <@matches> Except debugscript is not that advanced +14:50 < sulix> If you want to add string formatting to debugscript, I will not be involved. :P +14:51 <@matches> I would probably just hack on a command +14:51 <@matches> "Do this one particular demo" +14:51 <@matches> Instead of making the scripting language turing complete... +14:53 <@matches> In other news, Gozz taught me the difference between %d and %i :P +14:53 < sulix> My greatest shame... +14:54 <@matches> I normally use %d but I never actually realised they were differenc +14:54 <@matches> Well they aren't when printf'ing +14:55 < sulix> Four hours (+ an 80 minute penalty) because of random octal... +14:55 <@matches> Well, if you'd won you wouldn't be able to finish IPDF +14:57 < sulix> (Yeah, but maybe I'd've been good enough to not make the QuadTree horribly buggy...) +14:58 <@matches> I should look at it +14:58 <@matches> When I tried it, it was adding objects but they were appearing in totally whack places +14:58 <@matches> Also different places depending on what renderer was used +14:59 <@matches> I'm pretty much in favour of just focussing on the GPU renderer now though +14:59 < sulix> At the moment it should only add things to the root node. +14:59 <@matches> I have encountered the issues you mentioned where the CPU renderer suddenly decides to crash X +15:00 < sulix> It seems to just suddenly start eating all of the ram in the world. +15:00 <@matches> I don't know why though +15:00 <@matches> It does it with regular floats as well +15:01 <@matches> Unless it's allocating the pixel buffer every frame but why the hell would I have done that +15:06 <@matches> Also! Really annoying! GMP can only print rationals as num/den +15:06 < sulix> I guess that's because not all rationals have a finite decimal expansion. +15:06 <@matches> It has Rational -> Double but not Rational -> Arbitrary Precision Double +15:07 <@matches> Yeah, but I wish you could go "Print in scientific notation to 4 sig fig" +15:08 <@matches> I resorted to log(a/b) = log(a) - log(b) +15:08 <@matches> Except it doesn't actually have logarithm either +15:08 <@matches> It has "Number of digits needed in base X" +15:08 <@matches> Close enough... +15:09 <@matches> Actually no it's awful +17:32 <@matches> I'm going to have to do some disgusting template-yness things to Rect and Bezier I think +17:47 <@matches> Blergh +17:47 <@matches> Having a universal Real type is really damn annoying now that I don't want a universal Real type +17:48 <@matches> I can do: template struct Rect {...}; +17:48 <@matches> But then you have to replace Rect with Rect<> everywhere +17:49 <@matches> I could make very single class a template class with Real as the template +17:49 <@matches> Because that isn't horrifying +17:52 * matches sobs and makes Rect a typedef for "TRect" +18:22 <@matches> A is for ambiguous +18:31 * matches curses templates +18:31 <@matches> They attempt to solve the flaws in preprocessor macros by not actually solving anything +18:32 <@matches> So that you will give up and just not write the program +18:32 <@matches> The purpose of templates is to stop people from programming +18:42 <@matches> Maybe don't pull the latest commit if you want anything to work at all +--- Day changed Fri Oct 03 2014 +14:53 <@matches> The GMP attitude to logarithms seems to be "You can just write your own" which is nice, except that writing your own is not actually that easy to do well +15:39 <@matches> This is rather annoying +15:39 <@matches> When running the "Performance vs View Bounds" test, the bottleneck is in printing the View bounds +15:40 <@matches> Because it requires a log of logs +15:40 <@matches> *log of lots +15:40 <@matches> *lot of logs +15:40 <@matches> *lots of lumberjacks +15:40 <@matches> *whatever +15:41 <@matches> At least I seem to have made it O(1) where 1 is depressingly large constant +15:55 <@matches> And so, after a day and a half, I can hopefully actually print bounds that are outside the range of representable doubles +15:56 <@matches> Then I guess I'll have to do some kind of hack to get the "e-XXX" part so I can actually import them in numpy/gnuplot +--- Day changed Sat Oct 04 2014 +12:05 -!- Pommers [bobgeorge33@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf +13:55 <@matches> So, time investment +13:55 <@matches> Do I make graphs +13:55 <@matches> Or do I draw a turtle.svg +13:55 <@matches> So that we can make the "Turtles all the way down" reference +13:55 <@matches> Tough decision +13:56 < Pommers> Turtles +14:19 <@matches> I think fglrx must have a memory leak +14:20 <@matches> Even after the program quits everything dies +14:20 <@matches> And stays dead +14:21 <@matches> Apparently I only have 80MB of memory left, yet the most anything in top is using is 100MB +14:21 <@matches> ... +14:21 <@matches> It's still decreasing +14:21 <@matches> I have 10 MB left ? +14:22 <@matches> Farewell +14:26 < Pommers> glhfdd +15:23 <@matches> http://szmoore.net/ipdf/code/src/svg-tests/turtle.svg +15:23 <@matches> Can't be bothered colouring it in +15:23 <@matches> It occurs to me that if we had recursive SVG support we would be Winning (TM) +15:24 <@matches> I wonder how hard it would be to hack that on... +15:24 <@matches> Need to map SVG "id" attributes to a Path +15:24 <@matches> Need to allow Path to include Path +15:24 <@matches> Hmm... +15:24 <@matches> It's probably going to be as hard as shading +15:25 <@matches> ie: Significantly harder than it should be due to the somewhat flawed design of our Object representations +15:25 <@matches> We really only need Path and none of these other shaders +15:26 <@matches> Maybe one Path shader per path too +15:26 <@matches> As opposed to one Bezier shader for every single Bezier +15:26 <@matches> Well, same shader but with different VBOs +15:26 <@matches> Or IBOs +15:26 <@matches> whatever +15:28 <@matches> The problem is I can't implement Turtles all the Way Down in such a way that it shows all the turtles without either a) Making the DebugScript turing complete, or b) Implementing recursive SVGs +15:29 <@matches> And option b) has the advantage of the document still being interactive whilst option a) restricts the view to what the script is doing +15:30 <@matches> Also if the quad tree was working, turtles all the way down would be a good test of it, because the Arbitrary Precision bounds gets really slow since it has to always transform every path even those that are off screen +15:31 <@matches> I should probably start writing a thesis but I really want to actually have something impressive to write about +15:31 <@matches> I mean I still have to write about all the other stuff as well +15:31 < Pommers> Yay off by one errors! +15:32 <@matches> What, with the Log10 ? +15:32 <@matches> It shouldn't be off by that much +15:32 <@matches> Wait how are you running this +15:32 <@matches> Wait you're talking about something else -_- +15:32 < Pommers> Yes +15:32 < Pommers> I've spent the past day looking for this error +15:34 <@matches> Good job? +15:34 < Pommers> Nope. So annoying. THought I just had it. Nope. +15:35 <@matches> Sounds like we could make you an honarary IPDF developer +15:35 < Pommers> I thought I already was :P +15:38 < Pommers> Nope. Now my numbers are more off :/ +16:07 <@matches> Try ParanoidNumber +16:07 <@matches> Guaranteed to give semi-accurate segfaults +16:10 <@matches> Trying to look up some paper to justify my Logarithm approximation (because doing maths myself is hard) +16:10 <@matches> "Computing discrete logarithms with the parallelized kangaroo method" +16:10 <@matches> I... don't... even... +16:11 <@matches> Why isn't there a paper on this +16:11 <@matches> It shouldn't be hard, ergo, someone should have written a paper +16:14 * matches really regrets only getting 60% in applied maths +16:14 <@matches> I'm fairly sure this sort of thing was in it +16:14 <@matches> Series approximations and stuff +16:45 <@matches> Argahsdgf +16:45 <@matches> It's actually hard to define what we *want* from our arbitrary precision document +16:46 <@matches> Hmm +16:46 <@matches> You have a view port, and you want primitives that are scaled to the view port to appear identical, regardless of where the view port is +16:46 <@matches> Does that work +16:46 <@matches> sulix are you alive +16:46 <@matches> Is the quad tree going to be ok +16:48 < sulix> Alive might be overstating it slightly. The quadtree is still kind-of functional. +16:48 < sulix> (None of your commits have broken anything obvious, which is nice) +16:49 * Pommers stabs floating point ints +16:49 < Pommers> 0.0000000001 off +16:50 <@matches> Most of my commits affect stuff that's wrapped in a bunch of #ifdef QUADTREE_DISABLED +16:50 <@matches> I added some typedef's but they are all just equivelant to Real if QUADTREE_DISABLED +16:51 <@matches> Pommers: Are you using floats or doubles? And if so, change to long doubles +16:51 < sulix> That was very kind of you. I'm not sure how many drastic changes the quadtree can take at this point. +16:52 < sulix> Was is SPARC that supported "quads"? +16:52 <@matches> I'm kind of curious as to whether anything actually supports Base 10 floats +16:52 < Pommers> Doubles +16:52 < Pommers> I could try long doubles +16:52 <@matches> Because it's in the standard +16:53 <@matches> long doubles will probably help +16:53 <@matches> I haven't run out software with long doubles yet because I'm really expecting it to do amazingly better than Gmp rationals +16:54 <@matches> In theory, with enough memory, GMP rationals will win +16:56 * matches suddenly realises just how much stuff there is that needs to be done +16:57 * matches cries +16:57 < Pommers> My great commit log... https://github.com/mpomery/CITS3402/commits/master +16:57 * sulix sobs sympathetically +16:58 <@matches> That has nothing on the IPDF commit logs I'm sorry +16:59 <@matches> I should really stop deliberately making the commit messages over dramatic +16:59 < Pommers> Probably not +16:59 < Pommers> Definately +17:01 < sulix> The more I think about the quadtree, the more certain I am that it should just be crashing all the time. +17:10 * sulix quietly wonders if he can steal some code from that xkcd comic. +17:18 <@matches> So, it only works if you give it a starting SVG because it loads the whole thing into the root node and then builds the other nodes as you zoom +17:18 <@matches> And inserting things at some arbitrary point is hard +17:18 <@matches> Could you... brute force... recreate the entire thing from the root node +17:19 < sulix> The plan (after the great minus-sign move of '14) is to simply create a new document from wherever you add something, and "overlay" it. +17:20 <@matches> Ah +17:20 <@matches> sounds clever +17:20 <@matches> Hmm +17:20 <@matches> There's a whole bunch of definitions and obvious assumptions that I need to state +17:20 <@matches> How do I even explain this +17:21 <@matches> So, bresenham lets you draw a line exactly given the end points => You only care about rounding the end points +17:21 <@matches> Bezier = decompose into Bresenham => You care about rounding in the Bezier decomposition +17:21 < sulix> Well, bresenham doesn't let you draw a line exactly at all. +17:21 <@matches> Pfft +17:21 <@matches> Exactly shchmexactly +17:22 <@matches> To pixel accuracy I guess +17:22 <@matches> If the Bezier is in screen space and the buffer is small enough, then the bezier decomposition is accurate-enough to within the nearest pixel +17:22 <@matches> So you care about transforming the bezier control points +17:22 <@matches> They can be written relative to the bounds so you care about transforming the bounds +17:23 <@matches> The bounds can be written relative to the path ergo you only need to transform the path bounds +17:23 <@matches> Ergasdfadfg +17:23 <@matches> It's all relative +17:24 <@matches> There's no point being able to render something in bounds 1e-100000 if you don't also want to store something up at width 1 +17:24 <@matches> Otherwise you may as well just use bounds with width 1 and then do a multiplication before you printf them +17:24 <@matches> Problem solved! +17:29 <@matches> What I am trying to do makes perfect sense in my head and absolutely no sense translated to english +17:29 <@matches> And translating it to maths is just asking for trouble +17:29 < Pommers> #pragma omp single means that I'll start up a single thread to do something right? +17:30 <@matches> Well, it won't create a new thread, it means a single thread out of the current pool will do it +17:30 < Pommers> Okay. How can I get OpenMP to create a thread to do one of several for loops? +17:31 <@matches> #pragma omp parallel for +17:31 <@matches> Divides the loops up evenly amongst the threads +17:31 <@matches> Is that what you want? +17:31 < Pommers> Nah, multiple for loops, not the one +17:32 <@matches> Is the loop inside a parallel secion already? +17:32 < Pommers> Unless I am misunderstanding what parallel for does +17:32 < Pommers> Nope, not inside a loop yet +17:32 <@matches> Unless you explictly use a #pragma omp parallel, the code will be executed by the main thread +17:33 < Pommers> So if I go: +17:33 < Pommers> #pragma omp parallel +17:33 < Pommers> #progma omp single +17:33 < Pommers> for loop +17:33 < Pommers> #progma omp single +17:33 < Pommers> for loop +17:34 < Pommers> #pragma omp barrier +17:34 < Pommers> The for loops with get executed by potentially different threads? +17:34 <@matches> Yes +17:34 <@matches> And they only get executed once +17:34 <@matches> But you can't predict the order +17:34 < Pommers> Cool +17:34 <@matches> Anything outside the "single" gets done by all threads +17:35 <@matches> I don't think you need the barrier +17:35 <@matches> There are implicit barriers at the end of each parallel section +17:35 <@matches> Oh, also make sure the scope is correct +17:35 <@matches> Put {} around things +17:35 < Pommers> Okay +17:35 < Pommers> Imma come back to it in a moment +17:35 < Pommers> Forgot to go pick up my housemate :/ +17:36 < Pommers> ty matches +17:36 <@matches> (You don't need the {} if you have a loop immediately after the parallel directive though) +17:37 <@matches> Using OMP with certain text editors is a nightmare because they want to automatically put preprocessor directives in the first column +17:37 <@matches> Which totally screws up indentation +17:37 <@matches> Certain uses of OMP don't actually use indentation in the first place though, which I can't understand at all +17:37 <@matches> They indent the for loop but not the parallel directive that applies to it +17:38 * matches shudders +17:38 <@matches> These are the same lecturers that discouraged us from using functions because function calls slow the program down +17:38 <@matches> Whole program should be in main() +17:38 <@matches> Goto if necessary +17:42 <@matches> (I compiled something with and without a function call and saw that it was the exact same assembly and then proceeded to totally ignore any programming advice they gave us from then on) +17:43 <@matches> I guess it would be true if you had an ancient compiler +17:46 < sulix> (Secret: function calls _are_ slow. So is goto, though, so the point is moot.) +18:07 <@matches> Baha +18:08 <@matches> There is some kind of deep maths behind why transforming things relative to Path bounds works +18:08 <@matches> I guess +18:08 <@matches> It is both obvious and not obvious +18:08 <@matches> It is very frustrating +18:09 <@matches> I think this project is somewhat more appropriate for a maths major than mechatronics engineers... +18:09 <@matches> I guess I don't have to go into the maths, but if I don't then I'm basically just saying "I tried this because it seemed like it would work, and it did!" +18:10 <@matches> Even the Logarithm I implemented has nice maths in it +18:11 <@matches> Which is just slightly beyond my ability to explain satisfactorily +18:14 < sulix> I don't think maths-majoring has helped me much. It gives me snarky things to say about floats vs rationals, but doesn't stop the fact that I've now spent over a week trying to work out where the -ve signs need to go in the quadtree. +18:16 <@matches> :( +18:18 < sulix> On the bright side, by the power of trial, error, cribbing from the xkcd comic, and forcibly recreating all of the GPU buffers 4 times a frame, panning around the quadtree now seems to work. +18:18 <@matches> Yay! +18:18 <@matches> Can you zoom yet +18:19 < sulix> Almost* +18:19 <@matches> Zooming is just panning but with different numbers +18:19 <@matches> Or is panning just zooming but with different numbers +18:19 <@matches> Something +18:19 <@matches> Some of the numbers are zero +18:19 <@matches> Or possibly 1 +18:20 <@matches> Let me know when eye_of_the_rabbit works and we will have a performance show down! +18:20 < sulix> Zooming in works about as well as it did before. Zooming out works as long as you don't try to zoom out beyond the original view. +18:20 < sulix> Panning around the document works, though might have some problems if you try to pan outside (0,0)-(1,1) from the original view. +18:20 <@matches> Who needs to zoom out anyway +18:22 <@matches> I'm going to make the debug font more dramatic to answer some criticism +18:22 <@matches> Apparently I need to indicate the width of the view in SI units +18:22 <@matches> (And in really big text) +18:25 < sulix> But there are no units for the view! +18:25 <@matches> On my monitor the view is 22mm +18:25 <@matches> window rather +18:25 <@matches> So just multiply the view width by that +18:25 < sulix> Just short of an attoparsec... +18:33 < sulix> Okay, fixed the "you have to zoom in on non-binary-fraction boundaries for infinite precision issue that's plagued the quadtree for months. +18:33 < sulix> Now we can see: discontinuities at quadtree node boundaries! +18:33 < sulix> Fortunately, I have an excuse for leaving them there! +18:34 < sulix> "The object wasn't added at that resolution." +18:34 <@matches> Heh +18:34 < sulix> (Also: we totally don't solve cubics analytically, so they're worse than they need to be) +18:35 * sulix smells a "further work" section. +18:35 <@matches> You have a "current work" section? Jealous +18:36 * sulix didn't say that. +18:36 <@matches> Apparently as long as I make something pretty people will be impressed +18:36 <@matches> I wonder if it's too late to implement shading (again)... +18:36 < sulix> Maybe different-coloured outlines? +18:36 <@matches> Haha +18:36 < sulix> More demo svgs? +18:36 <@matches> I quite like the turtles demo +18:37 <@matches> Unfortunately for reasons mentioned earlier it can't actually add turtles forever +18:37 <@matches> Well it could +18:37 <@matches> But you couldn't stop it and go look at them +18:37 <@matches> You'll only ever see the bottom one +18:37 <@matches> The demo that draws 20 and then zooms back out and then in again is probably good enough +18:38 < sulix> Hmm... eye_of_the_rabbit is segfaulting the quadtree. +18:38 <@matches> It clears the document every so often +18:38 <@matches> Try commenting that out first? +18:38 < sulix> That'd probably do it. +18:38 <@matches> I thought we probably wanted to test zooming without altering the number of primitives, and that was the only way I could think of doing it +18:38 < sulix> It also made the quadtree slow down, though that's a side effect of something I like to call "shitty coding". +18:39 < sulix> The quadtree is full of it. +18:45 * sulix is merging now. I love the #pragma message that happens for every file! +18:48 < sulix> Code is up for your enjoyment/horror. +18:48 * sulix breaks for dinner. +21:01 <@matches> Yeah the #pragma message probably wasn't that good an idea +21:02 <@matches> The problem was there are 3 different "Reals" now :S +21:02 <@matches> So I wanted to make sure I knew which ones it was using +21:08 < sulix> Fair enough. +21:11 < sulix> Oh dear god, what have you done to the debug text? +21:13 * sulix shudders. +21:14 <@matches> It's readable! +21:14 <@matches> Through the automerge seems to have forgotten the #ifdef 0 +21:15 <@matches> Oh that stuff is printed somewhere else... +21:16 <@matches> Anyway, adding stuff seems to work! +21:16 <@matches> But not from the script for some reason +21:16 <@matches> Oh right, the clearing +21:17 < sulix> It shouldn't work totally in the quadtree, I've just made it break more quickly. +21:17 < sulix> Basically, you can (a) only add to the root node and (b) nodes are not yet updated with new objects if they already exist. +21:17 <@matches> It doesn't work when things overlap nodes? +21:17 <@matches> Right +21:17 <@matches> I was getting excited for a minute +21:18 < sulix> On the bright side, it no longer creates an entirely new quadtree for every individual object and it actually adds new things to new child nodes. +21:20 <@matches> Running eye of the rabbit I see a LOT of "Recreate buffers" messages but no actual rabbits +21:21 < sulix> It now recreates the buffers every frame because that was easier than getting it to recreate the buffer in arcane parts of quadtree code. +21:29 <@matches> Well, it does work when you add something to the root node I guess +21:30 < sulix> Almost. +21:31 < sulix> If you zoom in, zoom out, add something to the root node and then zoom in again it isn't there. +21:31 < sulix> But that will (fingers crossed) soon be resolved through the power of recursive functions. +21:31 <@matches> Hmm, that's almost what happens when you use IEEE singles! +21:34 < sulix> I'm still trying to work out how I can delay the generation of new child overlays until after all new objects have been added. +21:34 < sulix> If I do things the obvious way, it'll generate thousands of overlays and totally kill performance. +21:35 <@matches> Damn +21:35 <@matches> I think I just need to write lots of stuff and fast +21:35 <@matches> Well +21:35 <@matches> Some form of result would be nice +21:35 <@matches> A graph +21:41 < sulix> I think I've managed to make the quadtree even slower than ParanoidNumber would be. +21:42 <@matches> How though? It seemed like it would be efficient +21:43 <@matches> It doesn't have to render the whole document +21:43 <@matches> s/render/transform +21:44 < sulix> Well, it has to regenerate the entire quadtree everytime there is a new bezier, and there are lots of O(n) linked lists and recursive functions there. +21:44 < sulix> And doing this the naïve way generates a pathalogically-worst case situation. +21:45 < sulix> (I'm still waiting for my first "add something test" to complete. +21:45 < sulix> ) +21:45 <@matches> Hmm +21:46 <@matches> I guess once you already have a document with lots of detail in it, a quadtree is good +21:46 <@matches> But actualy making the document with lots of detail in it... +21:46 * sulix suspects it might just be infinite looping. +21:46 <@matches> Why does it have to rebuild the entire quadtree? Can't it just modify the current node + nearest neighbours? +21:47 <@matches> Or go up to the parent and add all the objects in the parent, then split them up for the children +21:47 <@matches> Hmm +21:48 <@matches> You need to be able to add objects to the ancestors as you zoom out I guess +21:48 <@matches> But you should be able to do it lazily? +21:48 <@matches> In theory +21:48 < sulix> In theory. +21:48 * matches is glad he is not writing the quadtree after all +21:48 < sulix> The big problem is that adding things to the quadtree needs to be done in bulk to be efficient. +21:49 < sulix> i.e. If you add a whole bunch of things to one node, and then a whole bunch of things to another, it's okay. +21:49 < sulix> But if you alternate (add something to one), (add something to the other) repeatedly, you fragment the quadtree and it treats each bézier as it's own overlay from then on. +21:49 < sulix> The easy way to do things is the latter way. +21:50 < sulix> Because it's hard to get all of the info you need about what things have changed in bulk at the end of an entire operation. +21:51 < sulix> But clearly doing things curve by curve is not going to cut it if even the simplest examples take over 5min/frame to render. +21:52 <@matches> Well if it's any condolance, ParanoidNumbers are still worse than that +21:53 * sulix should say "5min and counting"/frame. +21:53 < sulix> I've not yet had a frame render. +21:53 <@matches> Hey, at least you can still type into a terminal +21:54 <@matches> When I run ParanoidNumbers I can't even kill the process for 5 minutes... +21:54 < sulix> I am thankful for these small mercies. +21:55 <@matches> I'd hoped they'd be a bit better with the more efficient transformation model but apparently not enough +21:55 <@matches> In fact they are segfaulting again +21:56 <@matches> I thought I stopped that +21:56 <@matches> The plot thickens! +21:57 <@matches> They segfault when std=c++0x +21:57 <@matches> But not when std=c++11 +21:57 < sulix> Oh dear god. +21:57 <@matches> I suspect it is related to the use of "auto" +21:57 <@matches> And it is probably why google told you not to use it +22:00 <@matches> Actually it's more likely because I forgot to make clean +22:01 <@matches> Well I guess I will come back to them once I actually have something resembling a thesis draft +22:01 <@matches> Hahaha +22:02 <@matches> The turtles script is way cooler than the rabbit one by the way, if you haven't run it yet +22:02 <@matches> (But it breaks the quad tree even more) +22:04 <@matches> And PN do work if you restrict the size to like, 3 +22:05 <@matches> News in 5 minutes: Is it actually better than just using doubles +22:06 <@matches> It seems to speed up every so often and then slow down again +22:06 <@matches> Aaamd +22:06 <@matches> Yeah that turtle rounded to the wrong spot +22:07 <@matches> I should see how well our custom Rational implementation does too +22:12 <@matches> I am confused by PN +22:12 <@matches> A size limit of >= 5 causes apocalyptic memory usage +22:12 <@matches> A size limit of 4 is totally fine and actually not much slower than Gmprat +22:13 <@matches> Also I have a sudden urge to compile this with MinGW so that the Engineers who mark it can actually run it +22:13 <@matches> I mean, they probably won't run it +22:13 <@matches> But the last thing I want is for them to try and not be able to +22:13 <@matches> And then just assume I fudged the results +22:14 <@matches> I mean, a rabbit scaled to 1e-6 and then viewed under 1e6 magnification looks the same as the original rabbit... +22:14 <@matches> It's not really even worth including both images +23:56 <@matches> One does not simply cross compile for MinGW +23:57 <@matches> Although I must say I was bracing for it to be worse +23:58 * matches stares in shocked amazement at NO ERROR MESSAGES +23:58 <@matches> COULD IT BE +23:58 <@matches> COULD I HAVE SUCCEEDED? +23:59 < Pommers> Nope. +23:59 <@matches> -_- +23:59 <@matches> If we didn't need spectators I'd totally /kick you +23:59 < Pommers> 99 commits in my assignments repo >.> +23:59 <@matches> Pfft +23:59 <@matches> Commit them all to IPDF +--- Day changed Sun Oct 05 2014 +00:00 < Pommers> I can kill your percentage of lines here. That's what you asked me to do +00:00 < Pommers> Also +00:00 < Pommers> First +00:00 <@matches> err:module:import_dll Library SDL2.dll (which is needed by L"Z:\\home\\sam\\Documents\\University\\2014\\ipdf\\code\\src\\ipdf") not found +00:00 <@matches> Hmm +00:03 <@matches> If I try link with static SDL2 everything goes to hell though :( +00:04 <@matches> I guess I can just add SDL2.dll +00:05 <@matches> It runs in Wine +00:05 <@matches> Does that make it more or less likely to run under windows +00:05 <@matches> Ah crap the Qt stuff isn't compiled in though +00:05 <@matches> Qt is annoying +00:05 <@matches> They appear to ask you for money if you try download their source +00:06 <@matches> Also they don't like you using Qt4 and I really can't remember why I picked Qt4 instead of Qt5 now +00:07 <@matches> I guess I assumed it would be better, after experiences with GNOME 2 -> GNOME 3 +00:07 <@matches> New = terrible +00:08 <@matches> Oh dur this is what apt-get source is for +00:10 <@matches> I will just feel a lot safer if I know that the marker can actually run the software without needing to know linux +00:10 <@matches> Call me a Paranoid Number... +00:10 <@matches> (Ho ho ho) +00:11 <@matches> (This is probably a sign that it is bed time) +00:13 < Pommers> Yeah, you should probably go to bed matches +00:17 <@matches> What about you? +00:18 < Pommers> I'm already in bed +00:18 <@matches> SULIX +00:18 <@matches> THERE IS A GOTO +00:18 * Pommers grabs out his pitchfork +00:20 <@matches> I only saw it because it is also outside an #ifdef and raises an "unused label" warning +00:20 <@matches> How many others are there... +00:24 <@matches> There is also a goto in stb_truetype.h but I'll let that one slide since sulix didn't write it -- 2.20.1