Tag Archives: .NET

Gorgon Shaders

So I got custom shaders up and running in Gorgon 2.0.  The new version has always had shader ability because it’s using Direct3D 11, so it’s required to use them.  However, up until now the shader code has been hardcoded to use 3 default shaders.  But after today, there’s an ability to use customized shaders:

In this little sample, there’s a new system at work.  It’s basically a mini effects framework that can do multi-pass rendering and in this video there’s a wave shader and an embossing shader at work on the sprite.  If you want to learn more, click the stupid link below

Continue reading

You’re so primitive.

So, I’m moving to a new place tomorrow and work on Gorgon v2 is going to halt for a bit until I get my life back in order.  In the meantime, here’s a screenshot of the primitives (rectangles, lines, etc…) that have been making me insane (click it to see a larger version):

You can see the line (barely, I know, you can see it when it’s running for sure) and the rectangle, but I’ve gotten ellipses to work as well. Now, what’s the big deal you ask? (You are asking that, I demand it). And I’ll tell you.  Unlike the previous incarnation where the primitives were generated one pixel at a time (very inefficient), this time it’s using polygons to generate the primitives. So a line is using the line drawing on the video card, the rectangle and unfilled ellipse are using the line drawing as well and the filled ellipse is using triangles.  So all in all, they’re MUCH faster than the previous version.   For more details click the thingy at the bottom there…

Continue reading

So, here’s some more proof that I’ve been working on the next version of Gorgon:

https://www.youtube.com/watch?v=GFO6ZMdV2-A

As per the description on the youtubes:

An example showing the new version of Gorgon.

Currently this is just a simple sprite test using 1024 multi-textured sprites via shaders on Direct3D 11 hardware. It also shows a new feature that’s being planned (but not promising anything) to use the 3D stuff to allow perspective corrected sprites.

This video also shows depth for the sprites by walking a camera into the sprite cloud.

Currently getting about 1200 FPS with this (the selective multi-texturing really slows shit down).

MSAA (Gorgon v2.x – Dorian)

So, to prove that I actually do work on stuff, I’ve uploaded a new video to the youtubes.  This one shows off the ability to use MSAA in the new version of Gorgon.

https://www.youtube.com/watch?v=DhqrL3iVjDU

To get this effect, in v1.x of Gorgon, you’d draw a series of fading sprites (Alpha of 0 from the start position to an Alpha of 255 for the current position).  However, in this example I’ve used MSAA to simulate motion blur on a sprite.  Nifty eh?  On top of the nifty effect we also get full screen anti-aliasing, which is something the previous incarnation of Gorgon didn’t have.

Before you ask: no, motion blur will not be included as a function of the library, that’ll be up to the developer to implement.

Issue… where’s my tissue?

I became aware of an issue with the FromStream method on the Image object a few days after I posted the new installer.  It’s been corrected and put in the SVN repository.

Please note that it is not included in the 1.1.4119.34319 installer, and won’t be until I release a new version.  Sorry about that, but I’m a busy boy these days.

New version of Gorgon – 1.1.4119.34319

Yep, finally.  I’ve rolled up all the updates/fixes that were in the subversion repository and put up a new version of Gorgon.  Version 1.1.4119.34319 is the latest version and you can get it from here.  You can view the change log in this forum post.

Enjoy.

Sun

So, I bet you’ve been wondering what I’ve been up to lately…  You haven’t?   You selfish bastard.

 

Anyhow, I’ve gotten around to playing with this library I wrote for a bit.  I do so little programming on my own time these days and honestly, I never much cared for Gorgon (I felt it could have been better), that I haven’t bothered to try and write anything with it. That my users actually say it’s useful and well written comes as a complete shock to me. Anyway, this last week I mustered up some spare time and I created this abomination:

https://www.youtube.com/watch?v=PqPGa6P52LM

It’s not much, but it’s just a little thing I threw together to see if I could get a “bloom” type effect with a star.  I did.  And there it is.  Note how the surface of the star moves around and all that.  Neat hey?  No?  Shut up.

 

I’ve limited it to 60 FPS on purpose, but it is fairly swift.  I think at one point I was getting > 1000 FPS.  However, my vidja card is quite beefy, so take that with a grain of salt.  So… yeah…. that’s all I have to say.

Enjoy.

Kids… take my advice… don’t grow up

I’m sure people think Gorgon is dead.  Well, it’s not dead, but certainly not active either.  I’m pretty much done with writing for it (bugs being an exception).  If you’re interested in helping maintain it, please let me know via the forums.  My day job and my social life (which I’d neglected for too long) are a priority right now and I have very little motivation (or time)  to write anything related to Gorgon (or anything else).

That said, I do check the forums every day (at least twice a day).  So if you have a bug, or need a question answered, I will try to help.  Again, because of my “schedule” I may be a bit late in the replies (although ShadowDust702 has been doing a fine job of answering questions while I’m out drinki… er.. working).

Speaking of forums, forum member Cycor posted some code to convert GIF animations into Gorgon sprite animations.  You can view the code here (sorry for the late acknowledgment).

Moar User Stuff

Well we have another user contribution from forum member domq.  He’s doing a “sort-of” Ultima 6 MMO remake called Britannia On-Line.  Frankly it looks awesome, and I can’t believe Gorgon can be used for stuff like that.  Who knew?  I sure didn’t.

Anyway, I’ve added screenshots of the project to the screenshots gallery under the user contribution gallery.  You can check out more about the project in the forums.

Domq also found an issue with the TextSprite when the bounding rectangle is very small and WordWrap = true.  This has been corrected (by domq) and I’ve put the fixed code into the Subversion repository.

New version: Gorgon v1.1.3638.20767

sitelogoSo I’ve finally gotten off of my lazy ass and uploaded a new version of Gorgon.  This version contains all the bugfixes, and enhancements that have appeared in the Subversion repository over the last few months.

You can read about the changes here.

Then you’ll probably want to download it.

New version tiem! Gorgon v1.1.3436.39405

sitelogoYes, I know I spelled “time” wrong.  Yes, it’s on purpose.

I’ve uploaded  a new version of Gorgon today.  That puts the current release at version 1.1.3436.39405.  You can read what’s changed by heading on over to the forum and reading this announcment.  After you’ve become completely brainwashed by reading that you can download it.

Clearly I’m still working on Gorgon.  I probably will be until the day I expire, which given my healthy intake of McDonald’s, should be any day now.  If someone wants to lend a hand, contact me via the forums.

Edit – May 29/2009

Because I’m very dumb, I released Gorgon with a nasty bug in the Batch sprite object.  When you use the batch sprite it will complain that it can’t find the vertex declaration for PositionNormalDiffuseTexture1 or some such nonsense.  This of course just totally breaks the Batch sprite.  It’s been fixed and the new version (v1.1.3436.39405) is uploaded.

Sorry about that folks, sometimes Tape_Worm is stupid like ox.

Batches of hate

sitelogoSo I’ve been a busy little bee the last couple of days adding a couple new features to Gorgon.

One of the things I’ve been wondering about is how I could possibly improve performance.  To understand, I should explain how Gorgon does its “thing”.  When you draw a sprite to the screen using the Draw() method the actual data doesn’t go to the current render target (screen for our purposes) right away.  What happens is the vertices for that sprite are added to a dynamic vertex buffer.  If the next sprite you draw has the same texture and states as the previous (which will most likely be the case if you perform batching properly) it will just add that sprite to the dynamic buffer and the process continues over and over until the end of the frame.  When the end of frame is reached the buffer is drawn to the screen and the buffer is ‘reset’, that is, all data in it is overwritten with our next frame.  This is all well and good if you only use the same texture and render states (Smoothing, Blending, etc…)   But let’s say we have 3 sprites.  The first 2 sprites share a texture and the last uses a seperate texture.  When the first two are drawn they get added to the vertex buffer and then when the 3rd sprite is drawn the system detects a change in state (in this case it’s the texture) and the buffer is flushed and process starts over with our third sprite.  As you can imagine this can be very inefficient, but if you batch sensibly you’ll see excellent speeds.

Continue reading