1. WAYWO June 2012!

I've never done this before. Lets work at some highlights of last month

Highlights

Fuck yeah! My obj loader now outputs triangle fans for faces with polygonal vertices!
I ended up having to rewrite nearly the entire loader to do so, but it's far neater now with proper names and subdivided functions etc, so worth it.

Edited:

Actually, I think I've implemented everything needed to load the 'basic' Sponza Atrium model...

Oh hell yes.

Edited:

As a side note, those distortion show up when I view that particular file in a proper obj viewer, so I think I might have a duff model. It's not my fault!

Edited:

Actually.... I wonder...

C:

I'm going to start posting smaller pictures because I seem to be posting a ton of them.

Anyway, sky:

Working on emitters and sponges for v1.1 of Phyzicle:

13,324 zombies running around

the map and zombie placement comes from the picture it loads. who needs map editors when you have paint.
Holy shit mobile development is harder than I thought it would be. Our artist is making some stunning graphics so I'll have to make it just a Windows game if mobile doesn't work out.

looks unprofessional with such an awful typo

it's spelt "r-a-r-i-t-y", fyi
I didn't have a thermometer in my room, so I made one using my Arduino and LED Matrix.

The addressing on these is fucked up, here's what my drawPixel function looks like:

void ht1632_setpixel( byte x, byte y, bool on ){ byte addr; if ( x < 8 ) addr = (7-x)*4 + y/4; else if ( x < 16 ) addr = (15-x)*4 + y/4 + 32; else addr = (23-x)*4 + y/4 + 64; byte bit = 8>>(y%4); if ( on ) pixels[addr] |= bit; else if ( ( pixels[addr] & bit ) > 0 ) pixels[addr] ^= bit; ht1632_senddata( addr, pixels[addr] );}

Suggestions to shorten this code are welcome. The buffer is needed because 4 pixels share one address and it's not possible to read from the display (this would be unbearably slow anyway).

I generated the bitmaps for the digits using a C# program, which outputted them as a font byte array.
More fluff, more gore.

Yellow dots on the ground are food, freshly killed fluffballs also count as food (you can kill your own if you're low). Small bar under health is hunger.

NPCs don't mind you unless you get too close to their food and try to kill you/take over yours if they run out.
Faithplate configuration and paths!
Woo sweet, I got my text renderer to pack glyphs into a single texture properly. Before it would just make a really long texture and pack them side by side.

You can see the full texture atlas rendered at the top, and the text string rendered over the button. This should allow for other languages to be efficiently rendered, but I'm having trouble with Unicode.
Jookia can you help me? You seem to be the Unicode king around here.

Edited:

Oh yeah I also added 3d functionality.
Back to shaders, I guess... Here's a Valve-style flow map:

Austin's been working on Nature 2, Blk has been doing the editing, I post the stuf, download it today (click on the images to download scrub)

nature 2 is great

link to autsins youtbue channel, go rate like and usbescribe
Just gonna dump some gifs of what I've been adding to Mari0 for the "big" update here.
Turb added some basic graphics functions to his operating system a while ago (the bouncing ball), but he wanted something a bit more exciting. Last Wednesday he asked me if I could write a graphics demo for JSOS and I proposed to implement OpenGL 1.1 for him. He said that would take a lot of work and he just needed a simple 3D demo with functions like drawCube().

Since we all know how much I love OpenGL, I did it anyway and implemented just enough of the OpenGL 1.1 spec to do something useful. I implemented the entire graphics pipeline in software in Javascript and it was a great success. Because it's a lot easier to debug Javascript in a browser, I developed it using the HTML5 canvas to visualize the color buffer as seen below.

My JSGL (Javascript Graphics Library) provides gl.readPixels() to read back data from either the color buffer or the depth buffer. It then pushes that data through to the canvas by calling putImageData() on the 2D context.

The vertex processing code makes use of the mat4 functions in the gl-matrix library to apply the transformations. I found it kind of pointless to implement these functions myself, because that library is already highly optimized for that purpose.

The rasterizer is based completely on my own code, with inspiration from Bresenham's line algorithm, this paper on barycentric coordinates and this paper on perspective correct interpolation.

I based all of the other code on my experience with OpenGL itself and used the OpenGL 1.1 Specification to make sure everything was implemented correct. The implementation is not complete (e.g. functions and enum values are missing), but the stuff that is supported stays true to the original specification, like when errors should be thrown.

Yesterday I started working on porting the code to JSOS, which proved to be a little more difficult than I anticipated. The code required little to no alteration to work, but I had to change some things in Turb's driver code to be able to draw pixels to the display. I also had to add a new pixel format mode to gl.readPixels(), GL_UNSIGNED_BYTE_2_3_3. It's because his operating system currently allows only 1 byte per pixel with a bit layout of RRGGGBBB. The HTML5 canvas worked with RGBA bytes, which is what the implementation was originally limited to.

I also found that JSOS (or the JS compiler) didn't have an implementation for the != operator, Math.max, Math.min, Math.tan and Date yet and I had to work around that by implementing them myself. The lack of support for the != operator was only because it's better to use the !== operator, so that was a simple Find & Replace job.

After all this tweaking today, I was finally greeted by a working render! Here is the output of the program gltest running on JSOS in VirtualBox:

I haven't managed to get it to render more than one frame yet (in a timely fashion), but at least now JSOS has some working OpenGL bindings!
Made GMod output video from a demo, with frame blending (and DOF)

Kind of easy to do in the Source engine because Valve did all the work. I hooked it up to Holly so it can output webm or ogg.

You can record in realtime too.

I wabt to add more codecs to Holly but the GPL scares me, I want to be able to ship Holly with GMod without having to GPL GMOD. Everything I've read says that this is a grey area - and you get away with it as long as there's enough space between your closed source stuff and your open source stuff.

Version 26 (May 2012)
Version 25 (Apr 2012)
Version 24 (Feb 2012)
Version 23 (Jan 2012)
Version 22 (Dec 2011)
Version 21 (Nov 2011)
Version 20
Version 19
Version 18
Version 17
Version 16
Version 15
Version 14
Version 13
Version 12
Version 11
Version 10
Version 9
Version 8
Version 7
Version 6
Version 5
Version 4
Version 3
Version 2
Version 1
Friendly x 4 Dumb x 1 (list)

2. Ohh that shiny new feeling :)
Agree x 1 (list)

3. Hardcode IDE got presentation page for our reconstruction of the UI

http://hcide.com/interactive-demo/

Winner x 8 Artistic x 1 Dumb x 1 Useful x 1 (list)

4. I don't know about everyone else but I felt the highlights were severely lacking this thread

(I'm not in them)
Agree x 6 Funny x 4 (list)

5. What did you do? I diden't see much

6. I don't know about everyone else but I felt the highlights were severely lacking this thread

(I'm not in them)
I feel the same way! :P
Informative x 1 (list)

7. I was curious to see if I was highlighted... then I realized I didn't make anything last month.
Funny x 11 Agree x 4 (list)

8. What did you do? I diden't see much
Fog!

Currently avoiding doing world collision so I added menstruation

Edited:

Sorry for blowing my own horn
x 6 x 1 x 1 x 1 x 1 (list)

9. Yeah, seems only the LAST few pages got into the highlights, which is a shame.
Agree x 12 (list)

10. Oh god damn it, I forgot to close my project and it generated this file while I was sleeping:

Funny x 39 Winner x 1 Programming King x 1 (list)

11. The supreme laziness of not wanting to scan through 56 pages of content :/.

:D
Dumb x 12 (list)

12. Aw, didn't make it to the list this time. OP should've looked further back in time though.
Disagree x 1 (list)

13. How do you make objects move in OpenGL? I was thinking changing the coords of the objects, then uploading the data back to the vertex buffer. Is this right?
Funny x 3 Winner x 2 (list)

14. How do you make objects move in OpenGL? I was thinking changing the coords of the objects, then uploading the data back to the vertex buffer. Is this right?
You should change the Model View matrix to move objects.

15. How do you make objects move in OpenGL? I was thinking changing the coords of the objects, then uploading the data back to the vertex buffer. Is this right?
You can send the object's position as a uniform before you draw from the vertex buffer, which saves you from reuploading the data for complex objects when they move.
Winner x 1 Disagree x 1 (list)

16. How do you make objects move in OpenGL? I was thinking changing the coords of the objects, then uploading the data back to the vertex buffer. Is this right?
Disagree x 8 Funny x 2 Winner x 1 (list)

17. I think I got the algorithm for my generic type system. Next up is the implementation. Then generic functions.

After that edge-polishing.

18. I took a break and did something fun.

 This particular version of this game does not have an SDK available for it. Rockets can't bounce in this game, but I changed that.
Winner x 6 Friendly x 1 (list)

19. what an awful op
Agree x 16 Dumb x 2 Zing x 1 Funny x 1 (list)

20. what an awful op
*insert mandatory bitch about the op*

Seriously, this happens every time, can't we just get over the fact that no-one ever likes the op and get back to the thread?
Agree x 4 Disagree x 1 (list)

21. Aha you set them to bounce 255 times?

22. You should change the Model View matrix to move objects.
Oh ok. For each object, am I supposed to make a draw call?

23. Oh ok. For each object, am I supposed to make a draw call?
If you're managing the Matrices yourself to use modern OpenGL, you can do it like this
```GLint uniLoc = glGetUniformLocation( mProgramName, "u_worldspace_matrix" );
if( uniLoc != -1 )
{
glUniformMatrix4fv( uniLoc, 1, GL_FALSE, m );
}
```
and multiplying it in your shader (this is how you should do it).
Where m is an array of 16 floats the make up your matrix and mProgramName is the name of your shader program.

If you're not using shaders or managing the matrices yourself, you can do this:
```glMultMatrixf( m );
```
Where m is an array of 16 floats that represent the matrix to multiply with the current matrix opengl already has.

Once you've done that, you just draw the object using the method of your choosing and it will magically be hopefully where you wanted it to be.

I suggest you learn about modern OpenGL, and I think overv's open.gl should give you at least a little bit of information on the topic.

24. I am trying to, but it seems very different from 2d, and I am not sure about the semantics and the exact way things should be done. Anyway I'll go over open.gl, but if you have a tutorial on the way openGL programs should be structured that would be great.

Edited:

Wait shit this isn't WDYNHW sorry.

25. Aha you set them to bounce 255 times?
Yes, but they would eventually be removed after about a minute or so. I could have changed that too but I didn't think about it.

26. Oh ok. For each object, am I supposed to make a draw call?
Yes but there are other methods.
Instancing for example.

However, you should worry about that if it becomes a problem.

27. I for one think the op is fantastic.    I'm in it

Oh yeah I just made some fog, solid tile outlining, and a threaded lua console.

I'm hoping for a 2d-3d hybrid game, much like dwarf fortress.
Artistic x 2 Winner x 1 (list)

28. I don't know if I like the outlining. If you got some proper art assets, you probably wouldn't need it.
Agree x 1 Informative x 1 (list)

29. Thanks for the input; I just think it's hard to tell what's a wall and what isn't without the outlines.
And unfortunately I'm doing all the art assets myself, so they'll probably never be proper. :(

30. Got fedup of the blocks and the lighting problem so started using OBJ files instead.
Made a kind of flash light:
Funny x 1 Dumb x 1 (list)

31. Big gun

32. Hello World
Dumb x 13 Late x 3 Informative x 1 (list)

33. I think puush just died

34. *insert mandatory bitch about the op*

Seriously, this happens every time, can't we just get over the fact that no-one ever likes the op and get back to the thread?
the last few threads were fine except for the odd few complaining about not being in the highlights.

but then we have this shit:

Agree x 12 Dumb x 1 (list)

35. I wasn't a fan of the tetris video highlights, whichever one that was.

(Sorry, Overv.)

36. I wasn't a fan of the tetris video highlights, whichever one that was.

Sorry Overv.
I don't think anyone (including me) disagrees with that opinion.
Funny x 9 (list)

37. Don't we need rating highlights?

38. Don't we need rating highlights?
so that we can get more circlejerk/sarcastic posts in the OP? no i think the pony shit has filled the awful-quota for this months OP
Agree x 2 Funny x 1 Zing x 1 (list)

39. Awww, they omitted pictures of my aerospace stuff from the OP again.
Friendly x 14 (list)

40. Didn't even post once in previous WAYWO, get my face into the highlights. I've never been so proud of myself.
Funny x 12 (list)