Space-Shooter project, six days to go

Published February 21, 2011
Advertisement
Ok, so... starting a full post-process system implementation when there's only seven days till deadline might not have been the smartest move I've made... Well, at least I knew that when I started, guess I don't take no for an answer! If nothing else, I resisted the urge of creating a new PostProcess XML format that would make the definition of post processes more data-driven...

though, I did integrate it fully with my Entity and Material XML format :P That was kind of cool, because it allowed me to integrate it "rather" fast without too many hacks... well, without enormous amounts of hacks at least... so now my Materials support definition of "generated" textures and one can define them as RTT materials. Further, one can set which order the material should get in the MaterialManager's list of RTT materials... because, of course, when you're rendering a RTT texture attached to a fullscreen quad, that has to go through my Material system...

Though it did take a while longer to implement than I thought, it wasn't too bad to wrap my head around... though I do see that I have some refactoring to do on my design once the exam is over :P

So, behold! I expected my scene to turn up with a really nice bloom post-process filter...
screen0018.png


I really, really love it when OpenGL throws these things at me... the rendering "kind of works"... but not really :P So, I fired up gDEBugger, my friend in need when I bump into rendering issues (and it sports a free license at the moment!!!). It told me I was making some redundant and deprecated calls in my FBO code for the post processing, but fixing those up didn't really change anything... so gDEBugger didn't really offer me much support...

so, I found that maybe it was a good idea to check the status of the FBOs after I created them! Finally some progress! The status check was throwing GL_FRAMEBUFFER_UNSUPPORTED at me. A quick google of the web lead me to OpenGL.org's Common Mistakes wiki page, which states the following under it's Render To Texture section:
[quote]
[font="sans-serif"][size="2"]Warning: NVIDIA's OpenGL driver has a known issue with using incomplete textures. If the texture is not texture complete, the FBO itself will be considered GL_FRAMEBUFFER_UNSUPPORTED, or will have GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT. This is a driver bug, as the OpenGL specification does not allow implementations to return either of these values simply because a texture is not yet complete. Until this is resolved in NVIDIA's drivers, it is advised to make sure that all textures have mipmap levels, and that all glTexParameteri values are properly set up for the format of the texture. For example, integral textures are not complete if the mag and min filters have any LINEAR fields.[/font]
[/quote]


Fair enough, so I fixed my issues. I was indeed using LINEAR filtering for my FBO textures, that, when I think about it, doesn't make much sense when you're rendering to a screen sized texture that will only get rendered on a screen sized quad later :P I also added mipmapping (though not sure if that was really required)...

and, magic! It works! :) "Just" one of seven days wasted on a Bloom post-process filter!!! That's pretty amazing waste of time here at the very end... oh well, at least I can show off some sparkling sun reflection on that spaceship metal hull now! That ought to count for something!
screen0019.png
0 likes 2 comments

Comments

Aardvajk
Getting a bloom post-process filter working in a day is good stuff, regardless of the deadline. Looking great.
February 22, 2011 07:01 PM
Trefall
Thanks a lot for the encouragement Aardvajk! Appreciate it :)
February 22, 2011 09:14 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement