Jump to content
  • Advertisement
Sign in to follow this  
  • entries
    56
  • comments
    8
  • views
    26031

About this blog

Full of nub.

Entries in this blog

 

Gorgon v3 – Animation

I got the rework of the animation system for v3 done and up on the git hubs.  Naturally, I took this awesome video of it. It’s a music video. But not just any music video. A very bad, cheesy 80’s music video (the best kind). Of course, the music is metal \m/ (done, very poorly, by yours truly). Anyway, that’s all.   View the full article  

Tape_Worm

Tape_Worm

 

Long time no something, something, something dark side.

So, it’s been a long time since I’ve posted anything here. Mostly because I’ve not been writing much code in the last while and real life has been my focus.  Since I’ve been gone, I’ve become a software architect at my job, and that keeps me quite busy. Gorgon I’ve uploaded Gorgon v2 (such as it is) to Git.  I’m not entirely happy with that version, and frankly I lost my motivation to finish it.  As it is, it’s feature complete, but may have bugs. However, the editor application is in an unfinished state (it’s usable, but it’s got issues). From time to time I toyed with making a new version, but never really had the motivation to go beyond prototyping.  I tried using Unreal and Unity, and while those things are quite impressive, they seem to … I dunno, lack something. Especially in the 2D arena.  Also, as a programmer, and an oldschool one at that, it felt quite unnatural to use an editor like that to build up stuff. However. Lately I’ve been in a fit of watching game documentaries on Youtube (and oddly enough, CBC.ca), and while watching a documentary series on game developers from the 80’s (henceforth known as the best decade), I felt compelled to have another kick at the can. So, how’s it going? Well.. it’s going quite well.  I’ve got the core graphics library done, and the 2D renderer is well under way (I can render text and sprites). I’ve opted to learn how modern rendering engines do their thing to see if I can get some inspiration for performance improvements.  And I did.  The core Gorgon library now renders using a stateless drawing mechanism where an immutable draw call object, configured with immutable pipeline states (similar to how D3D 12 does a PSO). It’s quite a departure from the older versions.  But, I’ve seen some impressive performance gains because of this. I’ve also decided that I absolutely HATE Direct3D 12.  I get it, it’s wonderful for squeezing every last ounce of performance from your machine so you can get incredible visuals.  But it is a complicated beast, leaving it to the developer to control almost every aspect of programming the GPU.  It kind of reminds me of Immediate mode back in the D3D 3.0 days (nowhere near that bad though).  So, to that end, I’ve decided to base Gorgon’s core graphics API on the latest (at least, latest available in SharpDX) version of Direct 3D 11, which is 11.4.  Honestly, from all I’ve seen, Microsoft has no intention of abandoning 11.x since it has a firmly rooted place in development due to how much simpler it is to use over 12.  That may change in the future, but for now it’s good enough for me. And this is likely to piss some people off: This new version of Gorgon requires Windows 10. And no, I don’t care to hear about how I’m being spied on. So, you’re probably wondering hows the performance of the rendering in the 2D API? Well, see the image: Yes, that’s 131072 sprites, plus text, rendering at above 60 FPS. That’s running on a GeForce 1080 GTX.  A pretty high end GPU.  And you might think… “well, for that GPU, 70+ fps isn’t that great”  But keep in mind, those are alpha blended, textured, animated sprites (all 131072 of them).  This little test/example app has been with me since 1.0 and it’s served me well as a quasi benchmark.  To give you an idea of how much of an improvement this is from v1 to now (all on the 1080): V1 – ~15 FPS with the same number of sprites, and a lower window resolution (800×600 vs 1280×800).  This version used D3D 9 V2 – 28-30 FPS.  Same resolution, using D3D 11.0 V3 – Well.. look at the screen shot.  It’s an improvement. So yeah, that’s where I’m at.  Will I keep going and release this?  Who knows… I do have a v3.0 branch up on the GitHub repo, which contains just the core API for now (which, sadly has some bugs that I’ve since patched while creating the 2D API).  So, if you want, you can grab it, and mess around with it. Just keep in mind that I offer no support for that version, and it will change over time and may break your stuff.
View the full article

Tape_Worm

Tape_Worm

 

Forum is going away

Since it’s pretty dead there (not that that’s unexpected, I hardly update the site), I will be shutting down the forums. They will be locked into a read-only mode so that any information required is still available. If you have a pressing Gorgon issue, I recommend using the Github repository, or leaving a comment on the blog (the git hub site is preferable however). As for Gorgon: Believe it or not, I still work on it. Just at an incredibly slow pace. Similar to time dilation in a black hole or something magical like that.
View the full article

Tape_Worm

Tape_Worm

 

Forum is going away

Since it's pretty dead there (not that that's unexpected, I hardly update the site), I will be shutting down the forums.
They will be locked into a read-only mode so that any information required is still available.
If you have a pressing Gorgon issue, I recommend using the Github repository, or leaving a comment on the blog (the git hub site is preferable however).
As for Gorgon: Believe it or not, I still work on it. Just at an incredibly slow pace. Similar to time dilation in a black hole or something magical like that.

Source

Tape_Worm

Tape_Worm

 

Git hub

I've finally given in and become a lemming and followed the rest of the planet to git hub. So, from this point forward, Gorgon's source code will be hosted at Git Hub. The source code currently hosted in the Subversion repository at Google code will remain as-is indefinitely. This means that in order to get the most up-to-date version of Gorgon, you will have to go to the git hub repository.
And here's the link (also posted on the right side bar over there):
https://github.com/Tape-Worm/Gorgon

Source

Tape_Worm

Tape_Worm

 

Git hub

I’ve finally given in and become a lemming and followed the rest of the planet to git hub.  So, from this point forward, Gorgon’s source code will be hosted at Git Hub.  The source code currently hosted in the Subversion repository at Google code will remain as-is indefinitely.  This means that in order to get the most up-to-date version of Gorgon, you will have to go to the git hub repository. And here’s the link (also posted on the right side bar over there): https://github.com/Tape-Worm/Gorgon
View the full article

Tape_Worm

Tape_Worm

 

Font editor

It's been a very long time since I've made an update here. I've been working steadily on the font editor module for the Gorgon editor and it's finally nearing completion (the last 99% of 99% of 99% etc...).
I'm quite proud of this thing. It's supports a pretty well rounded suite of functionality for designing a bitmap font for use with Gorgon. Besides the usual standard stuff like font outlines, font faces, styles, etc... it also supports glyph brushes, custom glyphs, glyph advancement and offset editing and custom kerning pair tables.
Here's a few images:



These show the glyph gradient brush and the custom glyph functionality. Images showing the outline effects can be found in the gallery.
There are 4 supported glyph brush types in the editor:
Solid - Basic coloured brush.
Gradient - An editor linear gradient brush.
Texture - A brush that paints each glyph using the defined texture.
Pattern - Various patterns.

The custom glyph stuff is basically like clipping a sprite from a larger image. And since glyphs can proportional, you obviously need to adjust it so that there's no overlap (unless you want it) with other glyphs in the text. You can clip your custom glyph and adjust its advancement and offset until it mixes in well with your text. If you want really precise control, you can also define kerning pairs (not finished yet) to get better placement depending on the surrounding characters.
And finally, there's a secondary outline colour. This allows us to create interesting effects with the glyphs like glowing letters or hollow letters.
It's come a long way since I last did an update. And I'm pleased with the what I've managed to do with the editor at this point. As always, the code is available on the subversion repository if you want to give it a test run.

Source

Tape_Worm

Tape_Worm

 

Font editor

It’s been a very long time since I’ve made an update here.  I’ve been working steadily on the font editor module for the Gorgon editor and it’s finally nearing completion (the last 99% of 99% of 99% etc…). I’m quite proud of this thing.  It’s supports a pretty well rounded suite of functionality for designing a bitmap font for use with Gorgon.  Besides the usual standard stuff like font outlines, font faces, styles, etc… it also supports glyph brushes, custom glyphs, glyph advancement and offset editing and custom kerning pair tables. Here’s a few images:

These show the glyph gradient brush and the custom glyph functionality.  Images showing the outline effects can be found in the gallery. There are 4 supported glyph brush types in the editor: Solid – Basic coloured brush. Gradient – An editor linear gradient brush. Texture – A brush that paints each glyph using the defined texture. Pattern – Various patterns. The custom glyph stuff is basically like clipping a sprite from a larger image.  And since glyphs can proportional, you obviously need to adjust it so that there’s no overlap (unless you want it) with other glyphs in the text.  You can clip your custom glyph and adjust its advancement and offset until it mixes in well with your text.  If you want really precise control, you can also define kerning pairs (not finished yet) to get better placement depending on the surrounding characters. And finally, there’s a secondary outline colour.  This allows us to create interesting effects with the glyphs like glowing letters or hollow letters. It’s come a long way since I last did an update.  And I’m pleased with the what I’ve managed to do with the editor at this point.  As always, the code is available on the subversion repository if you want to give it a test run.
View the full article

Tape_Worm

Tape_Worm

 

Cameras

In the 2.x version of Gorgon I wanted to add cameras. It was most tedious before when you wanted to translate an entire scene by an arbitrary amount. So when I started this thing, I created an Orthographic camera object. The previous version of Gorgon used an Orthographic camera internally and this was never exposed to the user. But in this case, I exposed the camera so that the user can define their own viewing mechanism.
There's more info and a video inside...

For the last few days I've been perfecting my camera object, particularly the Orthographic camera, so that you can define any coordinate system you need. By default, Gorgon uses a screen space coordinate system. This is a comfortable system that many users are familiar with: 0,0 is the upper left, and Width, Height is the lower right. But sometimes that just doesn't cut it. What if you want everything relative and resolution independent? Well with the new camera object you can define your viewing area using a relative unit system by telling it to use -1, -1 as the upper left and 1,1 as the lower right (this would be a rectangle with an offset of -1, -1 and width and height of 2). Now when you place a sprite and assign it the coordinate of 0.5f, 0.5f, it will place it 480x320 on a 640x480 screen or at 768x576 on a 1024x768 screen. Perfect when your resolution is no longer at a fixed size.
So that's nice. But wait, there's more:

What's that in the video? Well, there's also a perspective camera. For those instances where you want to add a 3D component to your sprites. Using the perspective camera, the Depth property now sends the sprite deeper into the view space and perspective is correctly applied to the movement of the camera relative to the objects. In the video we see the ship pushed into the background and when we move the camera, the ship moves in perspective.
Also note that everything is relative to the camera. If you follow the green icon (and not the mouse cursor arrow), you'll notice that the ship is moving relative to the camera. In the code, only the camera is changing position. The ship is at the exact same coordinates it was assigned and was never moved. This is where a camera really shines.
So, I know it's been ages since I typed anything here. But as you can see, I'm still working on Gorgon. The refactoring process is nearly complete, and the 2D portion is nearly done. Once the editor is cleaned up and finished it'll be ready for release... I hope. I can't give an estimate on when that will be. It certainly won't be soon as I am only one man.

Source

Tape_Worm

Tape_Worm

 

Cameras

In the 2.x version of Gorgon I wanted to add cameras.  It was most tedious before when you wanted to translate an entire scene by an arbitrary amount.  So when I started this thing, I created an Orthographic camera object.  The previous version of Gorgon used an Orthographic camera internally and this was never exposed to the user.  But in this case, I exposed the camera so that the user can define their own viewing mechanism. There’s more info and a video inside… For the last few days I’ve been perfecting my camera object, particularly the Orthographic camera, so that you can define any coordinate system you need.  By default, Gorgon uses a screen space coordinate system.  This is a comfortable system that many users are familiar with:  0,0 is the upper left, and Width, Height is the lower right.  But sometimes that just doesn’t cut it.  What if you want everything relative and resolution independent?  Well with the new camera object you can define your viewing area using a relative unit system by telling it to use -1, -1 as the upper left and 1,1 as the lower right (this would be a rectangle with an offset of -1, -1 and width and height of 2).  Now when you place a sprite and assign it the coordinate of 0.5f, 0.5f, it will place it 480×320 on a 640×480 screen or at 768×576 on a 1024×768 screen.  Perfect when your resolution is no longer at a fixed size. So that’s nice.  But wait, there’s more: What’s that in the video?  Well, there’s also a perspective camera.  For those instances where you want to add a 3D component to your sprites.  Using the perspective camera, the Depth property now sends the sprite deeper into the view space and perspective is correctly applied to the movement of the camera relative to the objects.  In the video we see the ship pushed into the background and when we move the camera, the ship moves in perspective. Also note that everything is relative to the camera.  If you follow the green icon (and not the mouse cursor arrow), you’ll notice that the ship is moving relative to the camera.  In the code, only the camera is changing position.  The ship is at the exact same coordinates it was assigned and was never moved.  This is where a camera really shines. So, I know it’s been ages since I typed anything here.  But as you can see, I’m still working on Gorgon.  The refactoring process is nearly complete, and the 2D portion is nearly done.  Once the editor is cleaned up and finished it’ll be ready for release… I hope.  I can’t give an estimate on when that will be.  It certainly won’t be soon as I am only one man.
View the full article

Tape_Worm

Tape_Worm

 

Clearly I’ve not been posting

But I have been doing stuff. I’ve been spending my time refactoring and just cleaning up the code in Gorgon.  I made the mistake of getting Resharper and it put me on this crusade of cleaning up the code because apparently I’m just awful.  Also, I’ve been finishing up the primary graphics API (not the 2D stuff) by adding a bunch of new things to it like geometry shaders, compute shaders, and hull/domain shaders for tesselation (this one is cool, if not a little baffling).  I also made the API a little closer to Direct 3D 11 by adding views to resource object types. Wait, what are views?  Well, I’m glad you didn’t ask.  Basically it’s a view of a resource from the shader.  You can take view of a resource, or just a piece of the resource and even change the resource format (a little, not very much, basically if you have R8G8B8A8 you can do R8G8B8A8_Float or R8G8B8A8_UInt, but it’s better than nothing).  You can also create multiple views for a resource and for shader resource views you can bind them at the same time (provided it’s a different sub resource).  Included with these are shader resource views which allow us to bind a texture or buffer to a shader (even vertex/index buffers).  You can also create unordered access views which allow you to write back to the resource.  This allows for some fun things with textures.  Then there’s also a render target view which are used with render target textures, but can also be used with buffers and finally depth stencil views. The render target system got an overhaul.  Render targets are now inherited from textures and you can have 1D/2D/3D render targets (or render targets that use an arbitrary buffer).  These targets can be casted between the texture type and the render target type.  Swap chains are a special case and can be used as a render target view and casted to a render target/2D texture. The depth/stencil buffers also got an overhaul and 1D/2D depth/stencil buffers are inherited from 1D/2D textures and can be casted between textures and depth/stencil types. Render targets, textures, buffers and swap chains are also implicitly castable to views because they can be created with default views (textures/render targets always have one unless they’re staging resources). This was/is a monumental amount of work, and is not done yet.  I have most of the D3D 11 API mapped to my graphics API and I have 2 major features to put in: Stream output – Allows the sending of geometry data back to a buffer. Deferred contexts – Allows the graphics commands to be deferred until they’re needed, thereby saving some performance. Once that’s done I plan on getting back to finishing up my code clean up in the other APIs, finishing up the editor and adding examples to the library.  Hopefully it’ll be done before Microsoft fucks everything else up and we’re all off using Linux or some other equally nightmarish operating system.  
View the full article

Tape_Worm

Tape_Worm

 

More the editor

Here's a another screenshot of the editor. This time with the Font editor plug-in in action. Note that this is very very very incomplete and may not look like this when everything is said and done.


Source

Tape_Worm

Tape_Worm

 

More the editor

Here’s a another screenshot of the editor.  This time with the Font editor plug-in in action.  Note that this is very very very incomplete and may not look like this when everything is said and done.
View the full article

Tape_Worm

Tape_Worm

 

The editor

So I've been busy working on building the editor for creating the content for Gorgon. I know I posted a screenshot of a very old initial version of the editor way back:

Ugly.
Anyway, I totally scrapped that old thing and restarted. And here's a more up to date (but not even close to being done) screen shot:

A little better.
This new editor is going to be a replacement for all the tools in the previous version of Gorgon. It will handle file management duties (File System Editor in v1.x), sprite editing (Sprite Editor in v1.x) and atlasing (Atlas tool in v1.x). It will also add font editing. The big thing about this editor is that it's entirely plug-in based. Meaning that the font editor, sprite editor, etc... are/will be DLLs that are loaded/unloaded as needed. What this means for you: You can write your own plug-in modules for it. Want to build a map editor and integrate it with the rest of your content? With the plug-in system in the editor, you can write your own map editor and host it right in the editor interface (if anything the minimized tedium of having to write UI code is worth it). Want to write out your content data as encrypted data? You can extend the file writing functionality to write out encrypted file data.
Unlike the sprite editor in the previous version, the files are no longer saved as loose files on your hard drive that require a separate utility (file system editor) to pack into a single compressed file. This editor now outputs data as a packed file (of course, this can be modified with a plug-in) so you don't have to come up with a strategy to update your content, allowing you to edit directly. This is where it takes over from the file system editor and like the old file system editor this one is capable of importing files by either clicking on an Import menu item, or dragging and dropping directly from explorer. And, obviously, there'll be a way to extract the files to your harddrive should you wish to do so.
I have several plans for plug-in modules for the editor including a sprite editor, image editor (a very very very very simple editor, use photoshop or paint.net if you want high detail stuff), a font editor and a shader editor (maybe).
FYI, the window will look like that in Windows 7 as well (i.e. no aero glass). I've modified it to look like the Zune window by including a new object in Gorgon.Common.Dll called ZuneForm. Basically you inherit this form instead of a System.Windows.Forms.Form and then you get a Zune-looking window.

Source

Tape_Worm

Tape_Worm

 

The editor

So I’ve been busy working on building the editor for creating the content for Gorgon.  I know I posted a screenshot of a very old initial version of the editor way back: Ugly. Anyway, I totally scrapped that old thing and restarted.  And here’s a more up to date (but not even close to being done) screen shot: A little better. This new editor is going to be a replacement for all the tools in the previous version of Gorgon.  It will handle file management duties (File System Editor in v1.x), sprite editing (Sprite Editor in v1.x) and atlasing (Atlas tool in v1.x).  It will also add font editing.  The big thing about this editor is that it’s entirely plug-in based.  Meaning that the font editor, sprite editor, etc… are/will be DLLs that are loaded/unloaded as needed.  What this means for you:  You can write your own plug-in modules for it.  Want to build a map editor and integrate it with the rest of your content?  With the plug-in system in the editor, you can write your own map editor and host it right in the editor interface (if anything the minimized tedium of having to write UI code is worth it).  Want to write out your content data as encrypted data?  You can extend the file writing functionality to write out encrypted file data. Unlike the sprite editor in the previous version, the files are no longer saved as loose files on your hard drive that require a separate utility (file system editor) to pack into a single compressed file.  This editor now outputs data as a packed file (of course, this can be modified with a plug-in) so you don’t have to come up with a strategy to update your content, allowing you to edit directly.  This is where it takes over from the file system editor and like the old file system editor this one is capable of importing files by either clicking on an Import menu item, or dragging and dropping directly from explorer.  And, obviously, there’ll be a way to extract the files to your harddrive should you wish to do so. I have several plans for plug-in modules for the editor including a sprite editor, image editor (a very very very very simple editor, use photoshop or paint.net if you want high detail stuff), a font editor and a shader editor (maybe). FYI, the window will look like that in Windows 7 as well (i.e. no aero glass).  I’ve modified it to look like the Zune window by including a new object in Gorgon.Common.Dll called ZuneForm.  Basically you inherit this form instead of a System.Windows.Forms.Form and then you get a Zune-looking window.
View the full article

Tape_Worm

Tape_Worm

 

DEATH TO D3DX!

FINALLY. I'VE FINALLY DONE IT! It took weeks of work, but I managed to exorcise D3DX from Gorgon. Behold my video playing an animated GIF using a 2D texture array:

I've provided extensive info after the jump thingy.
In case you're wondering (and you know that you are), I used the D3DX utility library to handle some horrible jobs in Gorgon. Namely saving and loading textures and importing GDI+ (System.Drawing) bitmaps into textures. But with the abomination that is Windows 8, and DirectX 11.1 (which, just to be clear, Gorgon is NOT using), D3DX has been left to rot. Fine by me, one less dependency (and hopefully no more d3dx4312318793728.dll was not found errors).
So, how am I performing texture loading/saving? Well, being the daft bastard that I am, I created a rather complicated (for me) imaging system to handle loading, saving and manipulation of image data. The last part is underlined because Gorgon 1.x had very limited capability in that area. It's all based on the toolkit code in SharpDX by Alexandre Mutel and the DirectXTex library by Chuck Walbourn. I seriously wouldn't have been able to get anywhere if those guys hadn't done as much work as they did.
That said, it was still no walk in the park. The SharpDX toolkit code is fairly basic, and the DirectXTex library is in C++ (I now remember exactly why I don't use that bastard of a language anymore).
With all that said, here's what's new with texture loading/saving:
Image data is now manipulated through the GorgonImageData object. This allows us direct access to the pixels of an image on any texture array (or depth slice if using volume textures) index and mip map level. It breaks the indices and mips into parts that can be indexed like a collection and provides data streams to allow reading/writing of data into those buffers. All requisite information is included, such as row pitch, slice pitch (= image width * height * bytes/pixel). All in all, it makes accessing the data pretty easy.
Images can be loaded directly into the image data using FromFile/Stream methods. This is pretty straightforward. Image data can also be saved to a file/stream.
The image data object can perform conversion on several (but not all) formats. Plus it'll do resizing of images.
That's the image data object... is that a texture? No, it is not a texture. It is the data that a texture can use however. You may create textures by loading them directly from a file/stream, or into an image data object and then pass that image data object into the texture creation methods. Or even create an empty texture and copy the data in later. The two object types are related, but different. One is for low level image manipulation, the other is for dumping that image data into your video card.

Codecs... Gorgon now has several objects called codecs. These are used to decode/encode image data from a file/stream. Codec objects are passed to load/save methods whenever texture or image data objects are loaded/saved. Currently Gorgon has support for:

DDS - This was a bastard to write.
TGA
GIF - This was a bastard too
PNG
TIFF
BMP
WMP


Codecs are objects. Not enumeration types like the previous versions of Gorgon. Why? Because each codec has a set of properties which allow you to alter how images are decoded and encoded based on the codec you're using. This allows us to do transformation of image data as it's brought in.
Codecs are custom objects. That is, you, yes you, can write your own by inheriting from GorgonImageCodec and you'll be able to save/load your very own file format. Because the world needs more file formats.


Currently GIF, PNG, BMP, WMP, and TIFF are using the Windows Imaging Component API to encode/decode the data for those file formats. This requires that WIC be installed on your system if you plan on using those formats. However, this shouldn't be an issue because Windows 7 should have it installed already. Also, because codecs can be created by users, you can always write your own PNG codec and not use my crappy version.
Anyway, that's about as much as I care to babble on about this.

Source

Tape_Worm

Tape_Worm

 

DEATH TO D3DX!

FINALLY.   I’VE FINALLY DONE IT!  It took weeks of work, but I managed to exorcise D3DX from Gorgon.  Behold my video playing an animated GIF using a 2D texture array: I’ve provided extensive info after the jump thingy. In case you’re wondering (and you know that you are), I used the D3DX utility library to handle some horrible jobs in Gorgon.  Namely saving and loading textures and importing GDI+ (System.Drawing) bitmaps into textures.  But with the abomination that is Windows 8, and DirectX 11.1 (which, just to be clear, Gorgon is NOT using), D3DX has been left to rot.  Fine by me, one less dependency (and hopefully no more d3dx4312318793728.dll was not found errors). So, how am I performing texture loading/saving?  Well, being the daft bastard that I am, I created a rather complicated (for me) imaging system to handle loading, saving and manipulation of image data.  The last part is underlined because Gorgon 1.x had very limited capability in that area.  It’s all based on the toolkit code in SharpDX by Alexandre Mutel and the DirectXTex library by Chuck Walbourn.  I seriously wouldn’t have been able to get anywhere if those guys hadn’t done as much work as they did. That said, it was still no walk in the park.  The SharpDX toolkit code is fairly basic, and the DirectXTex library is in C++ (I now remember exactly why I don’t use that bastard of a language anymore). With all that said, here’s what’s new with texture loading/saving: Image data is now manipulated through the GorgonImageData object.  This allows us direct access to the pixels of an image on any texture array (or depth slice if using volume textures) index and mip map level.  It breaks the indices and mips into parts that can be indexed like a collection and provides data streams to allow reading/writing of data into those buffers.  All requisite information is included, such as row pitch, slice pitch (= image width * height * bytes/pixel).  All in all, it makes accessing the data pretty easy. Images can be loaded directly into the image data using FromFile/Stream methods.  This is pretty straightforward.  Image data can also be saved to a file/stream. The image data object can perform conversion on several (but not all) formats.  Plus it’ll do resizing of images. That’s the image data object… is that a texture?  No, it is not a texture.  It is the data that a texture can use however.  You may create textures by loading them directly from a file/stream, or into an image data object and then pass that image data object into the texture creation methods.  Or even create an empty texture and copy the data in later.  The two object types are related, but different.  One is for low level image manipulation, the other is for dumping that image data into your video card. Codecs… Gorgon now has several objects called codecs.  These are used to decode/encode image data from a file/stream.  Codec objects are passed to load/save methods whenever texture or image data objects are loaded/saved.  Currently Gorgon has support for: DDS – This was a bastard to write. TGA GIF – This was a bastard too PNG TIFF BMP WMP Codecs are objects.  Not enumeration types like the previous versions of Gorgon.  Why?  Because each codec has a set of properties which allow you to alter how images are decoded and encoded based on the codec you’re using.  This allows us to do transformation of image data as it’s brought in. Codecs are custom objects.  That is, you, yes you, can write your own by inheriting from GorgonImageCodec and you’ll be able to save/load your very own file format.  Because the world needs more file formats. Currently GIF, PNG, BMP, WMP, and TIFF are using the Windows Imaging Component API to encode/decode the data for those file formats.  This requires that WIC be installed on your system if you plan on using those formats.  However, this shouldn’t be an issue because Windows 7 should have it installed already.  Also, because codecs can be created by users, you can always write your own PNG codec and not use my crappy version. Anyway, that’s about as much as I care to babble on about this.
View the full article

Tape_Worm

Tape_Worm

 

<p><img class="alignleft size-full wp-image-8" ...

So I’ve been adding examples to the new version of Gorgon for the last week or so.  The latest one shows how to use the new input system to use a Raw Input mouse, keyboard and joystick (if present, and is actually not using Raw Input as such).  It’s a pretty silly example, but shows how to get the input plug-ins loaded, how to create an input factory and how to create the objects used to represent the various input devices. You want pictures though.  I have one.  And it is here.
View the full article

Tape_Worm

Tape_Worm

 

Boing!

Well, it's been a while. I've been busy. You've been busy.
Anyway, I actually took some time to test out a piece of functionality for the new version of Gorgon. This new version of Gorgon will have a graphics API separate from the 2D renderer (the 2D renderer uses the graphics API however). This is unlike the previous version where the renderer was pretty much all you had access to. I had a user ask me a long time ago if it were possible to access the underlying renderer to render 3D along with the 2D. At first, it did not, but I did hack in a way to access SlimDX directly through a plug-in and it was awful.
So, in this version I decided to give the developer access to the full graphics API under the renderer. This allows the user to switch between 2D graphics and whatever they want. And here's the results of my intense labour pain:

Yep, it's a clone of the old Amiga demo "Boing". As you can see, there are 2D elements (the text and the logo) along with the 3D elements (which were all done manually I might add, Gorgon does NOT have a 3D renderer so don't get too excited). I've decided to include the code as an example program for the new Gorgon.
Rejoice.

Source

Tape_Worm

Tape_Worm

 

Boing!

Well, it’s been a while.  I’ve been busy.  You’ve been busy. Anyway, I actually took some time to test out a piece of functionality for the new version of Gorgon.  This new version of Gorgon will have a graphics API separate from the 2D renderer (the 2D renderer uses the graphics API however).  This is unlike the previous version where the renderer was pretty much all you had access to.  I had a user ask me a long time ago if it were possible to access the underlying renderer to render 3D along with the 2D.  At first, it did not, but I did hack in a way to access SlimDX directly through a plug-in and it was awful. So, in this version I decided to give the developer access to the full graphics API under the renderer.  This allows the user to switch between 2D graphics and whatever they want.  And here’s the results of my intense labour pain: Yep, it’s a clone of the old Amiga demo “Boing”.  As you can see, there are 2D elements (the text and the logo) along with the 3D elements (which were all done manually I might add, Gorgon does NOT have a 3D renderer so don’t get too excited).  I’ve decided to include the code as an example program for the new Gorgon. Rejoice.
View the full article

Tape_Worm

Tape_Worm

 

.NET 4.5 – Visual Studio 2012

So, I got myself a copy of Visual Studio 2012 Pro.  It’s pretty nice, except for the shitty all-caps menus (which you can turn off with the registry hack located here).  I really didn’t have any plans on moving Gorgon v2.x to .NET 4.5/VS2012 until I saw this: No more PIX! I can barely contain myself. This is a big deal to me. I can’t begin to tell you how much I hated PIX (the graphics debugger from the Direct X SDK). When I could get it working, it was painful because I had to run it outside of Visual Studio and even then a lot of stuff failed in PIX and/or crashed PIX.  And don’t even bother trying to do graphics debugging with a 64 bit application in PIX…  Anyway, being able to debug my shaders and stuff in Visual Studio makes me a happy boy. One other really neat thing I noticed (and it’s about time) is that I could open up the Visual Studio 2010 solution/project files and it didn’t try to convert them, meaning that I could make changes to the 2010 files in VS2012, and still open them in VS2010.   This means I only need to keep -1- copy of Visual Studio and it’ll work when updating the 1.x and 2.x versions and won’t screw up the files.   I am pleased. So, yeah, I’m moving version 2.x to Visual Studio 2012/.NET 4.5.  Hopefully this won’t be a painful thing for people, and it shouldn’t be:  By the time Gorgon 2.x is released, we’ll probably be on to Visual Studio 2112/.NET Temple of Syrinx Edition (a little Rush joke) and it’ll be moot.  So, to reiterate: going forward you’ll require Visual Studio 2012 to compile/use Gorgon 2.x. I know people might hem and haw over this… “But Tape, I can’t afford to remove my other kidney and sell it on the black market so I can afford the newest Visual Studio!  I already sold my first one because I needed to get Visual Studio 2008 (or 2010)”   And to you I say, fret not.  As with previous versions of Gorgon, this version works just fine with the Express edition of Visual Studio 2012 (I tested tonight), which is free… well, free as in you’ll have to give Microsoft your precious personal information to register it, which is a joke really… anyway, it won’t cost you money.  Just your soul. And now, this part, because I can only assume someone’s going to ask about it:  Gorgon 1.x (i.e. the one that actually works and is available for you to use) will remain as a Visual Studio 2010 project  and I have no plans to migrate that version.  So, if you’re that hell bent on staying with Visual Studio 2010, then that’s the version of Gorgon you want.   Plus, it’s the only version that’s available right now… so… yeah, you don’t have much choice in the matter. That is all.
View the full article

Tape_Worm

Tape_Worm

 

Gorgon in text mode

Yep. Console window actually. Exciting. Just a silly example program showing how to use some of the functionality from the common library.
You can go back to sleep now.

Text mode. Now you too can write state-of-the-art adventure games. N, E, LOOK, INV, instant death... good times.

Source

Tape_Worm

Tape_Worm

 

Gorgon in text mode…

Yep.  Console window actually.   Exciting.  Just a silly example program showing how to use some of the functionality from the common library. You can go back to sleep now. Text mode. Now you too can write state-of-the-art adventure games. N, E, LOOK, INV, instant death… good times.
View the full article

Tape_Worm

Tape_Worm

 

FYI… Logitech…

Is awesome.  Seriously.  You should buy their products whenever possible. Best. Customer. Service. Ever.
View the full article

Tape_Worm

Tape_Worm

 

Windows 8

So I’m trying out Windows 8 (yes, it’s not released to the public, and yes I have it legally). Dear God, what a mess this whole Metro/desktop thing is.  Someone over at Microsoft must have split personality disorder or something.  How in hell did they think that was a good idea?? Anyway, the OS does have some really nice improvements and it’s very responsive (except when it’s not… I get random freezes once in a while, apparently it’s something to do with my Intel SSD).  And more importantly, after installing VS2010, and the June 2010 DirectX SDK, the new (and presumably old since I haven’t tried it yet) Gorgon works fine.  What I knew, and was hoping I was wrong, is that they took out the D3DX library for the new DirectX, and as such things broke horribly under Gorgon because SharpDX uses the D3DX libraries to load/save textures.  After installing the June 2010 DXSDK, everything worked again, so there’s that. I really really really don’t like this metro thing.  It’s just horrible with a mouse/keyboard and while I was ambivalent towards the Start Menu in previous versions, I really miss that I can’t group my applications (and I have a lot) under folders.  This made everything really horrible to organize, especially with how obsessive I am about organization on my machine. That said, the desktop is real nice.  Love the new task manager, love the new copy/delete dialogs.   I even like the new look they put in (they got rid of Aero, or probably more likely, the glass effect). Sadly, I now have to figure out how in hell I’m going to make Gorgon work without relying on D3DX (yes, I know, I could keep with developing for the June 2010 SDK, but at some point you know they’re going to drop that).  Apparently I can use WIC (Windows Imaging Component), but it looks pretty convoluted and I need something that’ll give me AnyCPU support. All in all, the awfulness of Windows 8 outweighs its benefits in my opinion.  Someone really needs to kick Ballmer (I blame him wholeheartedly for this mess) out of that company and install someone with a fucking clue (i.e. we don’t all use/want a tablet, nor do we all want to develop for them). Anyway, I am not dropping support for Windows 7/Vista from Gorgon.  So don’t ask about it. That’s all for now.  Gorgon is still being worked on, a little, here and there.  It’ll be ready by 2213.
View the full article

Tape_Worm

Tape_Worm

Sign in to follow this  
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!