Automatic commit of irc logs
[ipdf/documents.git] / irc / #ipdf.log
index 258dd65..e88900a 100644 (file)
 00:11 <@matches> This is why it isn't in the code repo
 00:19 <@matches> Whoops, there are some blatantly wrong comments in vfpu.cpp
 00:19 <@matches> Oh well
+--- Day changed Fri Apr 11 2014
+13:38 <@matches> Warning! I am about to make a ipdf/vfpu repo
+13:43 <@matches> You know what's really cool
+13:43 <@matches> You can run it as `vfpu --vcd=output.vcd`
+13:43 <@matches> And it will create a gtkwave file as it runs showing all the operations
+13:44 <@matches> You only get the simulated time from the point of view of the device
+13:44 <@matches> Which is probably useful
+13:46 <@matches> Or it would be if I wanted to compare different devices
+13:47 <@matches> To do that I need to actually make different devices...
+17:12 <@matches> Would you prefer seperate repos for the individual reports or just sub directories in the documents repo?
+17:12 <@matches> I can't decide
+17:12 <@matches> On the one hand 5+ repos is getting a bit out of hand
+17:12 <@matches> On the other hand they are individual work
+17:24 <@matches> Individual seems best
+20:31 <@matches> Hmm
+20:31 <@matches> The sqrt op in the fpu appears to have been commented out
+20:31 <@matches> Also despite having constants for the sizes of things they have just used magic numbers everywhere
+20:34 <@matches> I need an IRC script to prevent myself from saying stuff unless someone else has said things, or this channel will just be me ranting
+--- Day changed Mon Apr 14 2014
+13:42 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+13:43 -!- Netsplit over, joins: @sulix
+14:42 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+14:43 -!- Netsplit over, joins: @sulix
+18:32 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+18:32 -!- Netsplit over, joins: @sulix
+18:34 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+18:35 -!- Netsplit over, joins: @sulix
+18:36 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+18:38 -!- Netsplit over, joins: @sulix
+18:40 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+18:41 -!- Netsplit over, joins: @sulix
+18:41 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+18:43 -!- Netsplit over, joins: @sulix
+18:45 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+18:45 -!- Netsplit over, joins: @sulix
+18:46 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+18:47 -!- Netsplit over, joins: @sulix
+18:54 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+18:56 -!- Netsplit over, joins: @sulix
+18:59 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:00 -!- Netsplit over, joins: @sulix
+19:03 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+19:04 -!- Netsplit over, joins: @sulix
+19:07 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+19:08 -!- Netsplit over, joins: @sulix
+19:10 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:10 -!- Netsplit over, joins: @sulix
+19:13 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:13 -!- Netsplit over, joins: @sulix
+19:15 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:15 -!- Netsplit over, joins: @sulix
+19:17 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:18 -!- Netsplit over, joins: @sulix
+19:21 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+19:22 -!- Netsplit over, joins: @sulix
+19:23 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+19:23 -!- Netsplit over, joins: @sulix
+19:26 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:26 -!- Netsplit over, joins: @sulix
+19:27 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:29 -!- Netsplit over, joins: @sulix
+19:30 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+19:31 -!- Netsplit over, joins: @sulix
+19:32 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:35 -!- sulix [[email protected]] has joined #ipdf
+19:35 -!- ServerMode/#ipdf [+o sulix] by mussel.ucc.au.uniirc.com
+19:40 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:42 -!- Netsplit over, joins: @sulix
+19:44 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:48 -!- sulix [[email protected]] has joined #ipdf
+19:48 -!- ServerMode/#ipdf [+o sulix] by mussel.ucc.au.uniirc.com
+19:54 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:54 -!- Netsplit over, joins: @sulix
+19:54 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:54 -!- Netsplit over, joins: @sulix
+19:55 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:56 -!- You're now known as 13VAAAAGJ
+19:56 -!- Netsplit over, joins: @sulix
+19:57 <@13VAAAAGJ> Why am I now known as 13VAAAAGJ
+19:57 <@13VAAAAGJ> WHAT THE FUCK IS GOING ON
+19:57 <@13VAAAAGJ> ARE WE UNDER ATTACK
+19:57 <@13VAAAAGJ> Oh crap this is #ipdf
+19:57 <@13VAAAAGJ> Um, disregard this bit of the totally project related conversation
+19:57 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+19:57 <@13VAAAAGJ> I'd edit the commit script to censor the swear words, but effort
+19:57 <@13VAAAAGJ> Oh dear
+19:57 -!- Netsplit over, joins: @sulix
+19:57 <@13VAAAAGJ> Hello
+19:58 <@13VAAAAGJ> I think mantis might be dying?
+19:59 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+20:00 -!- Netsplit over, joins: @sulix
+20:01 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+20:01 -!- Netsplit over, joins: @sulix
+20:04 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+20:04 -!- Netsplit over, joins: @sulix
+20:05 <@13VAAAAGJ> Sigh
+20:07 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+20:07 -!- Netsplit over, joins: @sulix
+20:08 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+20:08 -!- Netsplit over, joins: @sulix
+20:08 -!- Netsplit mantis.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @sulix
+20:09 -!- Netsplit over, joins: @sulix
+20:09 -!- Netsplit arctic.uniirc.com <-> mussel.ucc.au.uniirc.com quits: @sulix
+20:10 -!- Netsplit over, joins: @sulix
+--- Log closed Mon Apr 14 20:11:29 2014
+--- Log opened Mon Apr 14 20:18:05 2014
+20:18 -!- matches [[email protected]] has joined #ipdf
+20:18 -!- Irssi: #ipdf: Total of 2 nicks [1 ops, 0 halfops, 0 voices, 1 normal]
+20:18 -!- Irssi: Join to #ipdf was synced in 0 secs
+22:04 < matches> Ergh
+22:06 < matches> http://szmoore.net/ghdl.bug
+22:06 < matches> Pretty
+22:10 < matches> Looks like we'll be sticking with ASCII input files for the FPU
+--- Log closed Mon Apr 14 22:29:33 2014
+--- Log opened Mon Apr 14 22:44:34 2014
+22:44 -!- matches [[email protected]] has joined #ipdf
+22:44 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal]
+22:44 -!- sulix [[email protected]] has joined #ipdf
+22:44 -!- Irssi: Join to #ipdf was synced in 12 secs
+22:53 <@matches> Someone's VPS was compromised and killing our network
+22:53 <@matches> For reference
+22:53 <@matches> It affects this project because
+23:07 <@matches> Argh
+23:07 <@matches> So I thought I was being really clever
+23:07 <@matches> I had files of type "bit" and everything
+23:07 <@matches> Guess how a "bit" is represented...
+23:08 <@matches> It's an ASCII "0" or "1"
+23:09 <@matches> I guess I will just conclude that ASCII strings treated as hex is the only way
+--- Day changed Wed Apr 16 2014
+00:10 <@matches> I'm either about to perpetrate horrible things on your nice View class or give up and go to sleep
+00:28 <@matches> Yeah... the problem is if we want to overlay objects rendered using different precision's over each other
+00:28 <@matches> It leads towards templates
+00:29 <@matches> And templates lead towards fear
+00:29 <@matches> And fear leads towards anger
+00:29 <@matches> And anger leads to hate
+00:29 <@matches> I think
+00:29 <@matches> Saving an image
+00:29 <@matches> Recompiling the program
+00:29 <@matches> Overlaying the image
+00:29 <@matches> Is going to lead to less hate
+00:30 <@matches> Otherwise pretty much every occurance of "Real" needs to be come a template
+00:50 < sulix> So there are a couple of problems with doing that.
+00:51 < sulix> - You'd need some way of storing objects of different precision. Possibly an extra "high-precision bounds" struct.
+00:51 < sulix> - View also uses real for its internal bounds, which is where many of the problems appear.
+00:52 < sulix> (I guess you could have a "high-precision viewport" as well.)
+00:52 < sulix> - The actual upload of graphics data to OpenGL is done as 32-bit floats, no matter the type of real, as that's all OpenGL supports.
+00:53 < sulix>   (At some point we'll have to actually do some view transforms on the CPU rather than just passing all of the bounds and viewport straight to OpenGL)
+01:02 <@matches> Yeah I don't want to replace Real with templates
+01:02 <@matches> That'd be horrible
+01:03 <@matches> By the way, the introduction of SDL_Renderer in SDL2 is confusing
+01:05 <@matches> I thought it was replacing Surface with Renderer and Texture
+01:05 <@matches> But Surface seems to still be a thing
+01:13 < sulix> Yeah: basically Surfaces are in CPU memory, textures in GPU memory.
+01:13 <@matches> Right
+01:14 <@matches> And renderers magically put stuff on surfaces/textures
+01:14 < sulix> Yeah.
+01:14 < sulix> So it basically represents the graphics card.
+01:15 < sulix> But if you want to just use OpenGL yourself, you don't need to create a renderer at all.
+01:15 <@matches> Ah, but the plot thickens
+01:15 <@matches> I'm saving the window to a bmp
+01:16 <@matches> Which requires a renderer
+01:16 < sulix> Hmm... I'm not sure if that will work.
+01:16 <@matches> It does
+01:16 <@matches> It seems rather convoluted though to be honest
+01:16 < sulix> (In theory, it shouldn't, but it probably actually does)
+01:16 <@matches> I seem to remember it not being this convoluted in SDL1.2
+01:16 <@matches> -_-
+01:16 <@matches> So the procedure is
+01:17 <@matches> 1. Get a surface associated with the window
+01:17 <@matches> 2. Allocate buffer of unsigned char for the pixels
+01:17 < sulix> Yeah, TBH I prefer SDL1.2's rendering API, but I generally just use OpenGL anyway.
+01:17 <@matches> 3. Get renderer from the window (NB: Don't use SDL_CreateRenderer, only the (undocumented) SDL_GetRenderer works because the Window already has a Renderer because it has been created with an OpenGL flag)...
+01:18 < sulix> In theory we should probably use glReadPixels.
+01:18 <@matches> 4. Use the magical renderer power to put pixels into the pixel array
+01:18 <@matches> 5. Create an RGB surface from the pixel array
+01:18 <@matches> 6. Now you can call SDL_SaveBMP, congratulations
+01:18 <@matches> What's this about a glReadPixels
+01:18 <@matches> I was just about to commit this
+01:19 < sulix> Well, you can use glReadPixels instead of steps 1,3 and 4.
+01:19 < sulix> (This is what SDL is doing behind the scenes)
+01:20 < sulix> Unfortunately, the SDL wiki is still down thanks to heartbleed. :/
+01:20 <@matches> :O
+01:20 <@matches> It was up when I looked at it before
+01:20 <@matches> Throwing python exceptions when I tried the search function though
+01:21 < sulix> Ryan said that it was up, but I'm still getting revoked certificate errors.
+01:22 <@matches> Hmm, I needed to do step 1 in order to know the size of the pixel array in step 2...
+01:23 < sulix> Screen::ViewportWidth(), Screen::ViewportHeight()
+01:26 <@matches> Yeah this is looking a lot shorter than what I had
+01:33 <@matches> It doesn't seem to work though
+01:35 <@matches> I'm getting a segfault
+01:35 <@matches> And of course valgrind automatically exits when it gets more than 1000000 errors from the flgrx driver
+01:38 <@matches> First call to glReadPixels is OK but the bmp is just white, second call segfaults
+01:39 < sulix> Hmm... what's the call?
+01:44 <@matches> Segfault was due to me forgetting about the pixels needing 4 bytes for RGBA
+01:44 <@matches> Still white though
+01:45 < sulix> (That was going to be my guess)
+01:45 <@matches> The advantage of getting the SDL_Surface
+01:45 <@matches> Was that you just pass all the surf->format->format->stuff
+01:45 <@matches> Everywhere
+01:45 <@matches> Also makes it rather verbose
+01:46 < sulix> The white screen might just be an fglrx bug.
+01:46 <@matches> There we go
+01:47 <@matches> No, it helps to remember that the pixels need 4 bytes for RGBA
+01:47 <@matches> I have very selective memory
+01:47 <@matches> I had to remember it for each line individually
+01:47 <@matches> Right I guess it is slightly nicer now
+01:47 <@matches> Although it has a bunch of magical "*4" everywhere
+01:48 <@matches> I'm going to put this on Stack overflow as an alternative to the answer I was originally following
+01:48 < sulix> Well, I'm going to attempt to sleep...
+01:48 <@matches> Thank you for fixing my bug without seeing it :S
+01:49 < sulix> I have far too much experience breaking glReadPixels...
+01:53 <@matches> We need an easy way to compare our document rendering the same thing using a different Real and/or view representation
+01:53 <@matches> Templates would only solve changing the Real and really they probably wouldn't actually solve it
+01:53 <@matches> They'd just create nightmares
+01:53 <@matches> Hmm
+01:55 <@matches> Um
+01:55 <@matches> Just looking at View::Render
+01:55 <@matches> Why is there a seperate loop for each type of object...
+01:56 <@matches> With "continue" statements for the other types in each loop
+01:56 <@matches> Is this so you can just make one call to glBegin and glEnd...
+01:56 <@matches> I am suitable scared
+01:57 <@matches> suitably scared and also suitable scared
+22:05 <@matches> Ok, trying again. This is the sort of thing a template is supposed to be used for... I just seem to always end up suddenly having to make everything all the way back to Document into a template class :S
+22:07 <@matches> blergh
+22:07 <@matches> trying again
+22:07 <@matches> After getting coffee
+22:07 <@matches> I think
+22:30 <@matches> Ok, templates is way too complicated
+22:30 <@matches> I am going to do the following instead:
+22:31 <@matches> 1. Allow a "save this region to bmp" argument
+22:31 <@matches> 2. It reads the specified bmp, saves a new bmp with the current view overlayed in a different colour or something
+22:32 <@matches> 3. Makefile hacks to recompile the program using a different typedef of Real and then do 1. and 2. for them all
+22:32 <@matches> 4. Realise I probably should have used templates
+23:02 <@matches> So, according to my timeline that I haven't looked at since submitting the proposal, I will have done a draft literature review by tomorrow...
+23:02 <@matches> Hah
+--- Day changed Thu Apr 17 2014
+00:26 <@matches> I am not good at OpenGL/SDL
+00:26 <@matches> I am the master of producing a black screen
+00:26 <@matches> Also we have FILLED and OUTLINE the wrong way round still
+14:01 < sulix> Bunch of bugfixes incoming.
+14:01 < sulix> I'm not proud of what I did to glReadPixels, but it works.
+14:02 <@matches> Uh oh
+14:02 <@matches> I just worked it out!
+14:03 <@matches> The dreaded merge begins
+14:03 <@matches> I'm tempted to just delete my changes and merge yours but I should probably do a real merge
+14:04 <@matches> I fixed it (on my machine at least) by: Using GL_BGRA instead of GL_RGBA (should probably detect which one to use from the screen's format)
+14:04 <@matches> And calling glReadBuffers and glPixelStorei before glReadPixels
+14:05 < sulix> glPixelStorei is probably nicer than what I'm doing.
+14:05 < sulix> I tried just giving SDL a negative pitch and a pointer to the bottom-right corner of the buffer, but somehow it didn't like that much.
+14:07 <@matches> You do actually check the byte order which is good
+14:08 <@matches> I worked that out but basically just changed it to match my machine :S
+14:08 < sulix> There are a bunch of endian problems in the load-save code anyway if we want it to run on big-endian machines.
+14:09 < sulix> (Well, big-endian documents don't load with little-endian code and vice-versa)
+14:10 <@matches> http://szmoore.net/ipdf/code/src/screen.cpp
+14:10 <@matches> Is the merge
+14:10 <@matches> Which one is better?
+14:11 < sulix> I think yours will still get the bitmaps upside down?
+14:11 <@matches> Ah yes they do tend to be upside down
+14:12 < sulix> I'm not sure you should need the front buffer stuff anymore with mine, so if you just keep mine (which is doing the flipping), everything should work.
+14:12 <@matches> Woah you fixed the FILLED vs OUTLINE
+14:12 < sulix> I did test overlaying bitmaps and it was fine.
+14:12 <@matches> Good
+14:12 <@matches> Does this seem like a better way to compare approaches than using a template and having View<float> View<double> etc?
+14:13 <@matches> It means recompiling
+14:13 <@matches> But it means a lot less templates
+14:13 <@matches> Pretty much the entire thing has to be templatified that way
+14:13 <@matches> And then there's the issue of what type the document is saving with
+14:13 < sulix> I think, long term, it'd be worth just extending the view to have a "bounds" and a "high_precision_bounds" or something.
+14:14 < sulix> But that is kind-of ugly.
+14:14 <@matches> I think it's probably nicer to just have real.h contain nothing but a typedef
+14:14 <@matches> And just recompile with a different typedef and overlay the images
+14:15 < sulix> Yeah, but there are some artefacts that really show better in motion, so it's probably worth supporting that at some point.
+14:15 <@matches> True
+14:15 <@matches> But including a video in the pdf will be difficult anyway
+14:16 < sulix> (Clearly, we should add embedded videos to ipdf)
+14:16 <@matches> You could also make a movie using ffmpeg
+14:16 <@matches> Haha
+14:16 < sulix> (I've got some OpenGL video playback code somewhere...)
+14:17 <@matches> In fact, if you can output a video you can just overlay two videos
+14:17 < sulix> Oh... my... god!
+14:17 <@matches> I don't know if there's a better way to make a video but I'd just be saving a .bmp every frame and then combine them all with fmpeg
+14:17 < sulix> Nope, that's probably a good way.
+14:18 < sulix> With some MAGIC it wouldn't even be slow.
+14:20 <@matches> Whoops your code isn't giving me a second bmp anymore
+14:20 <@matches> At least, not one that has pixels that aren't white
+14:20 <@matches> Does my glReadBuffer thing work for you?
+14:21 < sulix> Hmm...
+14:21 <@matches> Can fix the upside-downness some other way
+14:21 < sulix> Did you make clean
+14:21 < sulix> Because main.cpp/main.h won't recompile otherwise.
+14:21 < sulix> And I moved the glClear() calls.
+14:22 <@matches> I did make clean
+14:22 < sulix> Which is a less hacky way of solving the problem than reading the front buffer.
+14:23 <@matches> So the problem is that the texture rendered by Screen::RenderBMP isn't in the buffer that glReadPixels reads from?
+14:23 <@matches> (Even though it gets shown on the screen fine)
+14:25 < sulix> Hmm... it works fine here with or without glReadBuffers.
+14:27 < sulix> Try changing it to save the screenshot before calling scr.Present() in main.h
+14:29 <@matches> That works
+14:29 <@matches> But why?
+14:29 < sulix> Because when you call Present(), it allocates a new buffer to render into.
+14:30 <@matches> Right
+14:30 < sulix> This is so that you can start rendering the new frame immediately, rather than having to wait for the window manager to actually re-render the screen.
+14:31 <@matches> I have merged it
+14:33 < sulix> Excellent.
+14:33 < sulix> This is much more fun than literature!
+14:33 <@matches> :S
+14:35 <@matches> It's important
+14:35 <@matches> It's part of the timeline
+14:35 <@matches> Just you know
+14:35 <@matches> It comes after the Literature Review
+14:37 < sulix> Strictly speaking the Lit Review deadline is past, now, isn't it... :/
+14:38 <@matches> Well technically it was never a deadline for me... :P
+14:38  * sulix sighs
+14:38 < sulix> I'm special.
+14:39 <@matches> I need to read that last paper on FPUs more
+14:39 <@matches> It was talking about how there are all these software techniques from the 1960s that can actually be done on the FPU itself
+14:40 <@matches> I'll probably just work on getting our / jop's FPU working for different sized floats instead
+14:40 <@matches> In theory that will teach me how they actually work
+14:40 <@matches> Then I can actually understand the papers
+14:40 < sulix> But can you write about it in a Lit Review?
+14:42 <@matches> Maybe not so much the Lit Review, but it means I can write the Background section that explains how they work
+14:43 <@matches> There's probably some early papers on them that I can reference at the same time if I try hard enough to find them
+14:44 <@matches> The modern papers all have a lot of assumed knowledge
+15:59 <@matches> Instead of reading papers I have progressed towards compiling different types and then overlaying them
+16:02 <@matches> I didn't know you could do such cool things with Makefiles and flags to the compiler
+16:02 <@matches> If people knew more about this maybe we wouldn't have to have python
+16:03 <@matches> I will learn to do all my highlevel programming using Make
+19:48 <@matches> Our Render/Screenshot combo for overlaying bitmaps and $$$ only works the first time it is done
+19:49 <@matches> Or maybe it's RenderBMP that only works once
+19:49 <@matches> Hmm
+19:52 <@matches> I swear the format was BGRA earlier and now it's RGBA
+19:53 <@matches> This can probably get fixed after some Literature Review
+20:09 <@matches> Anyway you can now set the type of Real with `make DEF=-DREAL=X`
+20:09 <@matches> Or `make single` and `make double`
+20:09 <@matches> 0 and 1 respectively
+20:09 <@matches> I tried a little bit too hard to get it working with actual C strings
+21:32 <@matches> Minutes now have less "~*" in them
+21:32 <@matches> Wrong channel
+21:32 <@matches> Very wrong channel
+--- Day changed Mon Apr 21 2014
+12:32 <@matches> Literature Review O'Clock
+12:36 < sulix> I have just returned from my Easter holiday and have some horrible code for you to scream at while I have lunch. :P
+12:43 <@matches> Uh oh
+12:44 <@matches> stb_truetype ?
+12:44 <@matches> DejaVuSansMono.ttf ?!
+12:44 <@matches> Is this going to render a font...
+12:45 <@matches> Woah
+12:47 <@matches> Looks good
+12:48 <@matches> I think I will avoid looking at stb_truetype too closely...
+12:48 <@matches> Too late
+12:48 <@matches> Why are all the implementations in the .h file
+12:48 <@matches> And the .cpp file just has some defines...
+12:48 <@matches> shudder
+12:53 <@matches> I particularly like #define STBTT_assert(...) do {} while(0)
+12:53 < sulix> That's a standard way of doing that. SDL_assert does the same thing.
+12:54 < sulix> It lets you put a semicolon after it or use it in an if() statement without braces, etc, without things breaking horribly.
+12:56 <@matches> But... your assert doesn't actually assert anything?
+12:56 < sulix> That's because you generally only want it enabled in debug builds.
+12:56 <@matches> I guess
+12:57 < sulix> So typically you'd have it as do {} while(0) in release builds, and something like a function call in debug builds.
+12:57 <@matches> So what is this "more code" going to do :P
+12:57 < sulix> Slightly more modern opengl.
+12:58 <@matches> Yeah, that would be a good idea
+12:58 < sulix> In particular, uploading the content of a document to a VBO, and just re-rendering from that when needed.
+12:58 <@matches> Cool
+12:58 < sulix> Jumps from 9 fps -> 37 fps with 1024^2 objects.
+12:59 < sulix> I've been without internet, though, so it's pretty broken in many ways, still.
+12:59 < sulix> Like outline rects don't work.
+12:59 < sulix> And it still uses a bunch of OpenGL 1.0 stuff.
+12:59 < sulix> And for some reason the glPrimitiveRestartIndex() function isn't working.
+13:00 < sulix> Also I need to write shaders at some point, which will be work.
+13:00 <@matches> I just found the best comment in an IEEE email list
+13:00 <@matches> We should totally use it
+13:01 <@matches> "It is too late now to repair the mistakes of the past that are present in millions of installed systems, but it is good to know that careful research before designing hardware can be helpful"
+13:01 < sulix> Oh man, that's basically the thesis in one sentance.
+13:02 <@matches> Dibs!
+13:02 <@matches> Although I doubt anyone will care if we both quote it
+13:03 < sulix> One thing I did discover reading my OpenGL book is that I think we can get OpenGL to use doubles with some shader hackery.
+13:03 <@matches> :O
+13:03 < sulix> Then again, the book was (partly) written by (one of) the authors of fglrx, so take it with the requisite salt.
+13:04 <@matches> Ah, so how many goats were required?
+13:05 < sulix> Just the two, I think.
+13:06 <@matches> This email message seems sort of vaguely relevant? It's the "infamous double rounding problem"
+13:06 < sulix> I take it that you worked out how to swap between CPU and GPU transforms with right-click.
+13:07 <@matches> I read it in the commit message
+13:08 < sulix> I was quite happy with how much nicer things ran with CPU transforms and doubles.
+13:08 <@matches> I think I can see a difference zooming in far enough
+13:08 <@matches> Yeah that's a huge difference
+13:08 <@matches> I had a tester that was going to automatically make images of the difference when you zoomed in really far
+13:09 <@matches> But there were issues with the screen shot / bmp rendering
+13:09 <@matches> Probably the bmp rendering
+13:09 < sulix> .bmp files suck.
+13:10 <@matches> They are nice and simple though?
+13:10 <@matches> At least, the SDL API is nice and simple
+13:10 < sulix> That's more a triumph of SDL than of the .bmp file format.
+13:10 <@matches> After looking through gm6 files with a hex editor to try and extract sprites...
+13:11 <@matches> Well we could always just fwrite the pixel buffer and fread it back
+13:11 <@matches> If you want no one to be able to use our files without compiling our program :P
+13:12 < sulix> I'm personally a fan of LodePNG, but I'm too lazy to hack it in at the moment: http://lodev.org/lodepng/
+13:13 < sulix> I'm probably going to get around to fixing all of the warnings in stb_truetype one day.
+13:13 <@matches> Haha
+13:13 <@matches> What about implementing an Oct-tree?
+13:14 <@matches> So .bmp is just a header and then the raw pixel data? What's disgusting about that? No compression?
+13:16 <@matches> Wait png is also just a header and then an IDAT section
+13:17 <@matches> Oh well you can put lodepng in if you want I guess
+13:17 <@matches> As long as I can open the images in eom
+13:18 <@matches> Ah so PNG is compressed. I missed that
+13:19 <@matches> Meh
+13:19 <@matches> Oh and alpha channel
+13:19 <@matches> Yeah
+13:19 <@matches> I remember that now
+13:20 <@matches> xpaint is the least shitty of the shitty sprite editors in debian, but it only stores RGB because it was designed around bmp and I guess they just hacked on exporting to other formats later
+13:21 <@matches> If you open things with alpha it gets really confused
+13:23 < sulix> You can put alpha in .bmp files, but then they sometimes crash KDE.
+13:26 <@matches> We can just run all our bmp files through image magick
+13:26 <@matches> convert a.bmp a.png
+13:26 <@matches> Done
+13:27 <@matches> Hmm, maybe if I opened the data from the gm6 files as png they would work, I was assuming they were bmps -_-
+13:27 <@matches> Actually gif
+13:27 <@matches> Probably
+13:28 <@matches> Since it has "Save as gif"
+13:28 <@matches> But that is not relevant to this project
+13:33 < sulix> Damn, just discovered that the opengl feature I was using for rectangle outlines is not supported by my laptop's hardware.
+13:34 < sulix> (This explains one of the bugs I've been seeing, but sadly only one)
+13:47 < sulix> Okay, remaining code pushed.
+13:47 < sulix> I am sorry.
+13:53 <@matches> I'm messing around trying to do something evil so I'll merge later
+13:53 <@matches> But you don't seem to call ToggleGPUTransform when there is a right click
+13:54 <@matches> Oh wait, I need to make clean
+13:54 <@matches> Cool
+13:54 <@matches> (So much for our Makefile magically tracking the header files :S)
+13:58 < sulix> It does it for every header file except ones included by main.cpp because of the weird main.cpp swapping stuff.
+13:59 <@matches> That main swapping stuff is amazing
+13:59 <@matches> It is worth it
+13:59 <@matches> Except main.cpp ends up eventually including all the header files
+14:00 <@matches> I think there is an alternative Makefile that just has every single header file in the current directory as a dependency for each .o file
+14:01 <@matches> But I'm normally used to running make clean anyway
+14:22 <@matches> Eh I was going to make a video of the difference between GPU and CPU coord transforms but it's not that great
+14:23 <@matches> Whatever you have done does not look happy
+14:24 < sulix> It takes like 5 minutes to DebugDumpObjects with a million objects, but it works okay* after that.
+14:24 <@matches> Yeah ok
+14:24 < sulix> *well, sort-of.
+14:25 < sulix> If you just want to show off the precision, getting rid of most of those objects is probably the right thing to do.
+14:25 <@matches> Interesting things happen when you zoom out really far
+14:25 <@matches> Do we care about that
+14:25 < sulix> I'm going to go with "no".
+14:26 <@matches> Ah, but the rectangles are not all the same size
+14:26 < sulix> This is a product of rounding to the nearest pixel. They'd be fine with antialiasing.
+14:29 <@matches> I have pushed a single line contribution
+14:29 <@matches> I decided not to bother with all the changes I made to make the video prettier
+14:29 <@matches> Since I can't actually capture my desktop properly anyway
+14:30 <@matches> I suppose I could make it render bmps and ffmpeg them all but that is way too much effort
+14:31 <@matches> So
+14:31 <@matches> Literature Reviews
+14:31 <@matches> They are a thing
+14:38 <@matches> I probably should not reference an email thread
+14:53 <@matches> In other news, I think this jvm FPU doesn't actually implement sqrt
+14:57 <@matches> It always gives 0x0 on sqrt ops
+14:57 <@matches> I certainly hope there isn't a jvm somewhere that just doesn't do square roots
+14:58 <@matches> They probably hacked it into some other part of their project instead of putting it in the FPU
+16:08 <@matches> So fprintf style formatting isn't very clever when it comes to floats vs doubles vs long doubles
+16:11 <@matches> Eg: %lf will work for either floats or doubles and %f will work for either floats or doubles (by truncating) but %llf is the only thing that works for long doubles and it only works for long doubles
+16:12 <@matches> s/truncating/casting whatever
+16:52 <@matches> We can compile with long double
+16:52 <@matches> I suspect this may break things but whatever
+16:52 <@matches> Running calculatepi on motsugo to see how much difference it actually makes...
+17:08 <@matches> Charles Babbage seems like an interesting fellow
+17:09 <@matches> "e sought to prove the
+17:09 <@matches> reality of the devil by drawing with his blood a
+17:09 <@matches> circle on the floor and repeating the Lord’s prayer
+17:09 <@matches> backward"
+17:09 <@matches> The things one does for science
+17:44 <@matches> Reading about Charles Babbage counts as Literature Review...
+17:44 <@matches> Actually I'm trying to find a paper written *by* him
+17:44 <@matches> Since apparently he came up with Floating Point representations
+22:11 <@matches> Found an actual paper talking about floating points on GPUs
+22:12 <@matches> It says they don't conform to IEEE and also the manufacturers don't like to tell people what they do do
+22:12 <@matches> So they wrote a version of Paranoia, which was a test program for computers in the 1980s before IEEE, to work out the characteristics of flops on various GPUs
+22:13 <@matches> This is probably of interest
+22:14 <@matches> So far one of the best papers I have on algorithms in software is actually one talking about implementing those algorithms in hardware instead
+22:15 <@matches> I also have a random obituary to Charles Babbage just because
+22:16 <@matches> Unfortunately UWA directs me to some useless website that just tells me the citation details and doesn't give me a download for any of Babbage's papers
+22:17 <@matches> He has some books but they are mostly about economics
+22:18 <@matches> Would have been nice if he'd written something that says "I have invented floating point" but I guess not
+22:18 <@matches> That's only really of historical interest but it'd be nice

UCC git Repository :: git.ucc.asn.au