What I did today

I’m in shock… I think I found the holy grail of graphics programming… I’m literally getting cold sweat…

I solved transparency sorting. I get perfect quality without any pre-sorting at all; not on the CPU or the GPU. I just throw stuff at it and it works. It is completely order-independent. No depth peeling. No stupid additive blending weighted by depth that corrupts color. No shitload of layers to make it look good. No GPU linked lists. Just 4 render targets and 2 passes of all transparent stuff, constant time regardless of view. And then it just works, at perfect quality. At half resolution 1920x1080p, it only uses 13MBs of memory, CONSTANT.

There’s no compromise anywhere. It uses a constant amount of memory, runs in constant time, handles any amount of overdraw and always gives correct results. W-what do I do?! Who do I talk to?!

Write an article about it and post it all over programming/gamedev subreddits?

Edit: And obviously here too.

Finished the website for my high-school club.

th-media-lab.github.io

You could… try to explain it here… just an idea…

I’ll start with a teaser screenshot!

I just finished coding a program in which I can switch between no sorting, CPU particle sorting and my OIT (order-independent transparency) implementation. Here’s a screenshot of a white sphere with diameter 200 inside a 200x200x200 cube, so at the center of the cube’s faces, the white sphere should be visible, but not anywhere else.

No sorting
Simply rendering all the particles in their random order looks, as expected, horrible. The white particles inside the cube should only be barely visible, but since the particles aren’t ordered correctly, the blending screws up.

CPU-side depth sorting
Sorting the particles by depth seems like a decent fix at first, but even though it should be 100% correct it does not look good in this case. This isn’t visible in the screenshot, but if two smoke particles (that are supposed to each represent a volume) that intersect suddenly change z-order, we see a sudden pop. Perfect depth sorting therefore doesn’t look particularly good for volumetric particles.

My OIT-implementation
What we actually want is some kind of soft blending that does 50-50 blending if two particles intersect, but also sorts the particles perfectly if they’re not intersecting along the Z-axis. As an example, if we have a red and a green particle that are almost at the exact same position, we don’t want to pick the one that just happens to be a tiny millimeter closer to the camera, we want an almost even mix of the two. If we however have a thick green particle close and a far one behind it that’s red, we obviously want the green one to occlude the red one. My algorithm handles this perfectly. At first look, it looks a little bit blurry, but this is simply because the particles that are along the surface of the cube are blended together (as they should be!), but the center of the cube is still 100% obscured. This is what we want EXACTLY when we render particles trying to simulate a volume.
Again, this is without any pre-sorting at all. I simply throw the data at the GPU in any order I feel like, meaning I can draw particles, transparent streak effects, actual volumetric smoke, god rays, transparent hair, etc in any order I want them to and get a correct color blend between them.

I’ve added a simple console the my in-progress-game that makes it easy to set several balancing parameters and turn off and on debugging features. It’s quite helpful in speeding up development:

Also, looks interesting, theagentd, even though I still don’t get it :wink:

shhhh
:persecutioncomplex:
[spoiler]patent it![/spoiler]
:persecutioncomplex:

I don’t understand much of what you said, theagentd, but it sounds technical and impressive, so have a medal! Good luck trying to find the right people to talk to, hope you aren’t kidnapped and taken to a top secret graphics research center in the middle of nowhere and kept hostage until you spill your guts on your algorithm-do bob-thingy!

:slight_smile:

How does that cube shot look when you have actually translucent and additive particles in mix? There must be something that you are not telling or yet discovered.

Call up John Carmack.

  • Jev

Blogged a little about how great Star Control 2 is, and I added rudimentary weapons and damage to the Coreward prototype. So far it’s working well but missing special effects, and ship damage is not handled completely yet (energy systems stay functional even though they should be damaged):

Added levelling up to my word game Verbal. You can now buy new letters with 30 seconds of time. It makes the game a lot more manic - no more running out of words when you have 130 seconds left on the clock.

Many thanks to richierich for the suggestion - it’s much better than my original idea of just earning extra lives.

Also, I’ve got a new no-timer puzzle-solving mode in the works.

Began rewriting my game , I found that a lot of the features were not how I wanted them to be so im going to reprogram it in a simpler way.

Fixed some bugs to my Ninja vs Zombie Pirates and created my own encryption algorithm :slight_smile:

Accidentally graphed a conic in my voxel experiment:

Woo! Voxels!

http://zippy.gfycat.com/FrenchImprobableAdeliepenguin.gif

I made progress, however it wasn’t in one clear direction:

  • Updated a bukkit plugin that is over a year old (FriendMe)
  • Network routing for a “server map” being sent to client (unfinished)
  • Added [icode]SkeletalSprite[/icode] objects to my game library, where each [icode]Limb[/icode] can individually have a series of Action interface implementations attached to it

more to come!

CopyableCougar4

made a few 2d space filling comparators :

X

Y

z-curve

hilbert-curve

and random ofc

I did some graphics and worked on door animations for Star Four.

I stuck up an example z-curve here: https://github.com/roquendm/JGO-Grabbag/tree/master/src/roquen/math/sfc