Archive for December, 2008


still alive

December 30, 2008

I’m doing science and I’m still alive!

really, I’m just in a funk, so I haven’t posted lately.


lighting problems: resolved

December 27, 2008

Just a quick post: lighting issues are RESOLVED.  When you set the ambient source to color for Direct3D it multiplies and OpenGL adds.  So I just have to do that part manually for Direct3D and everyone’s happy as a clam.


RAVEN materials + inhuman art + freaky art

December 26, 2008

I have to say it’s quite awesome that my Grey fanart wound up on the Inhuman site’s fanart page.  I did a thing with grey killing people/trees with a menorah.  That’s because he loves the slaughter portion of the holiday season.  heah yo go my buddayo…

Okay then.  Now that that’s over with, let me tell you about a sweetass development with the engine.

I got simple materials and lighting to work in Direct3D and OpenGL!  Transparent in terms of which API of course.

This next screenshot is simple proof you can choose which:

u can choose d3d or gl zomg

u can choose d3d or gl zomg

NOW.  Direct3D:

Direct3D 9 HW L&T in RAVEN

Direct3D 9 HW L&T in RAVEN

And in OpenGL.  OpenGL’s glColorMaterial(GL_AMBIENT_AND_DIFFUSE) appears to give me a slightly brighter ambiance than Direct3D’s D3DRS_COLORVERTEX and D3DRS_AMBIENTMATERIALSOURCE / D3DRS_DIFFUSEMATERIALSOURCE set to the first vertex color FVF.  Not sure why, maybe it has to do with how D3D mixes the ambient color?  Or is that part of the HW L&T pipeline?  I can’t remember T_T.  Whatever, I’ll get this figured out.



Oh hey.  I made another art picture yay!

Gynophobia by ~ninjarat1 on deviantART


physics talk abstract and slides

December 25, 2008

So now that my talk is done and over with, I guess I promised earlier to post my abstract/slides. SO IM POSTING THEM JESUS DONT KILL ME OKAY KAYTHX.

They’re here, and you must use the video signal analysis in your brain to interpret the pictures. No one ever gets that and they’re all like ROFLMAO I CANT SEE WTF. silly silly people.

download: physics_talk_08_ccis.7z

That takes care of that.


new artwork – Anima Supremacist

December 23, 2008

I have slaved for…time…or something like that, to bring you all a new piece of artwork! I haven’t been in a terribly artistic mood for quite a long while, probably not since before I started this blog! Well. I am now officially done with a new piece. The first piece to be posted on the intarwebs really. Be kind.

It is called Anima Supremacist. I was thinking about Jungian psychology again, and I do that quite often as the crazy parts tend to apply to me, (PTSD here yay,) when I had an idea for a picture. Basically it would be kind of an archetypal breakdown of the concept of the Anima or Animus destroying the mask of our selves, the False Self. The self is basically characterized by Jung as the Anima (masculine) or Animus (feminine) and each of us have both, a man’s feminine side and a woman’s masculine side.  The False Self is quite simply an impostor Anima generated for the purpose of politics, left hemisphere communication which mostly involves language skills, fabrication, and parroting. The False Self is especially necessary in a closed in and unkind society wherein conformity is required, and even to a small extent in simple social exchanges such as the common:

Dude 1: How are you?

Dude 2: Fine.

Dude 2 may have been miserable, but more important than the communique of the Anima is the socially conformant dialogue, so there is no social faux paw.  I must admit, I DETEST this kind of cheap talk with no meaning or content that is required to exist in a society.  My perfect world is one where we are all wetwired in to a server hub which can relay pure data untranslated from one brain to the next, moving only concepts as data packets, and the need for language is diminished entirely.

But psychologists agree that there is such a thing as an unhealthy False Self.  I think it is a spectrum, where the mental health damage caused by the False Self is directly proportional to it’s size and control over the Anima.  Therefore I have worked long and hard to kill my False Self, and I think I am finally gaining some ground.  The phrase “be your self” is quite profound, and it kills me inside to hear it used by all these rediculous pop icons and teeny boppers when they really mean “be your self by asserting your independent ability to act like everyone else or you’re not cool.”  Of course this is THE EXACT OPPOSITE of being your self.  *spits*  I actually just spat right then.

But on to the artwork.  It’s this awesome eye thing consuming a comm tower. And before anyone asks me, yes, the tower was somewhat influenced by the Citadel from HL2.  Now, without further ado, the image.

Anima Supremacist by ~ninjarat1 on deviantART

I hope you enjoy it.  🙂


omg done lol

December 23, 2008



so, yeah, read the article.


new article wip Direct3D 9 on the fly geometry

December 22, 2008

I’m commencing work on a cool article regarding on-the-fly geometry code. In OpenGL it’s really a snap (glBegin(), glEnd(), glVertex(), glNormal(), etc.) but in Direct3D it’s fucking impossible. You cannot do any of it on the fly. You consolidate everything down to a single call, (a few complex ones for vertex buffers) that requires all this pain-in-the-ass setup, and it’s STILL less efficient. I don’t get you fucking people at M$. ARB can do it, so you definitely can.

But anyway… I created a little class called GeometryInterfaceD3D9. It takes OpenGL style on-the-fly commands, then does the work for you. It’s not really fully optimized to the extent you can with D3D, but it works, and emulates OpenGL very well. Just avoid quads at all costs, because while I technically added emulation for them (quad primitives not available in D3D9 wtf?) they are DEADLY SLOW. I could fix this with a bit more preprocessing, but for now it just does multiple calls to RenderPrimitiveUP(), so it is, as I said, ridiculously slow. THIS IS NOT THE FINAL ITERATION, I WILL FIX IT KAY ZOMG.

The reason was that the main Renderer class and children RendererOpenGL and RendererD3D9 were initially designed for these calls. Then I eventually realized that this is not how you do it at all with Direct3D. But I firmly believe that these on-the-fly geometry instructions are the clean way of doing the API. So, I accepted a less efficient implementation on RendererD3D9. Don’t worry about the lack of efficiency there. Just as VertexBuffer and VertexBufferVBO are efficiency optimized for OpenGL, VertexBufferD3D9 will be optimized for Direct3D. And of course, all the specific implementations are invisible to the user of the library, so it is important to add layers that unify the API. So far this is going well.

Anyway. I will add most of this above text to the article page, and also the code. Please check it out when it is complete.