Engine Nine is breathtaking

Oct 1, 2011 at 2:16 AM

I've been away from the XNA scene for a while (working my full time job kept me busy), but been watching the community mature.

Engine Nine has grown nicely and it's a great engine to work with.
I made a few test games quickly and easily with your easy to use framework.

As always, I try to provide helpful feedback to make it even better...

So, here are the issues I encountered while testing:

  • Particles 
    The depth values of each particle billboard's transparent pixels are written to the depth buffer causing the particles to be incorrectly rendered.
    One solution is to use a two pass rendering technique. In the first pass render the non-transparent pixels of the particle billboards with blending
    disabled and alpha-testing enabled, then in the second pass render the transparent pixels of the billboards with blending enabled and depth buffer
    writes disabled. 
    to reproduce this issue: create 2 different smoke plume particles on a floor plane with some distance between them, then rotate the camera until
    the smoke plume drawn first is in front of the one drawn last.  You will notice 
    the one drawn last will always be drawn over the first one. 

  • Deferred lighting
    In the Deferred lighting example, if you zoom in close to surface where the lights are casting, then rotate the camera at an angle towards the lights,
    they start to crop or disappear completely.   Not sure what is causing this.
  •  Suggestion
    Add Cascade Shadow Maps. Please.


Hope this helps.  I can't wait to see the games created with this engine.

Great work!
forgive the typos, It's been a long day.

Nelxon - www.nelxon.com

Oct 1, 2011 at 5:02 AM

Thanks Nelxon, welcome back!

I've also noticed the problems with particles and deferred lighting.  I'll try to fix the particle depth problem using the proposed 2 pass technique.

The problem with deferred lighting is that when the eye position is far away from the light geometry (sphere in case of point light), the sphere is rendered using CCW backface culling, when the eye is within the light geometry, it is rendered using CW culling, so that each pixels on the screen is lit only once. But there are cases when the eye position is outside the light geometry and part of view frustum near plane resides inside the sphere, in this case, the geometry is culled and lights are cropped or disappeared. The artifact won't be noticable for games where the camera is far away from the lights, so I'm not putting much effort fixing it. I'm currently doing a simple point vs light geometry containment test, to resolve this, near plane vs light geometry intersection test is needed.

And cascade shadows, yeah, they are cool to have, but you still have plain PCF shadows before that. I think I'm going to finish the material system right now before I dive into other areas.