Main Features

This page contains a high-level feature list that is accurate as of the start of this project. Whilst I would like to get all of these features into the final sample we all know how things change!

Graphical Features

  • Rendering Paradigm
    • Forward Rendering: This is the standard approach most graphics samples use so isn't strictly a feature, but w.r.t. the following item, it is a useful base/reference.
    • Deferred Shading: Due to the potential for overdraw as well as the interest in multiple lighting a deferred rendering path is of significant interest. Direct3D 9 allowed deferred shading but placed various limitations (e.g. no MSAA) that should be overcome via D3D10.
  • Geometry Processing
    • Geometry Shader: The D3D10 GS is not particularly useful as a tesselator, but it might be possible to generate pipe segments 'on the fly.' At the very least it is worth exploring what the GS can or can't do - a learning exercise if nothing else.
    • Geometry Instancing: The pipe sections lend themselves towards efficient rendering via GI so this should be an obvious feature.
    • Vertex Blending: The less geometry the CPU has to process or store the better, by using vertex blending it is possible to generate the necessary pipe segments (e.g. corners).
  • Lighting
    • Per-pixel lighting: A number of techniques exist for this, be it simple phong shading through to relief mapping. All of which will set up per-pixel resolution for the lighting computations. Having this as an interchangeable technique will allow for some interesting analysis of forward vs deferred rendering. When using heavy-weight pixel shaders a deferred approach should yield much better performance.
    • Strauss' Model: This lighting model might not add anything fundamentally new, but it is a very usable lighting model - the inputs and characteristics designed to be good for artists rather than scientists. A single model can therefore be used to generate a variety of different results.
    • Multiple light sources: This provides an environment for testing single-pass 'uber shaders' versus multi-pass as well as exploring the advantages of deferred shading over traditional forward rendering.
  • Debug Visualisation
    • Intermediary deferred rendering steps: One of the best received features of my HDRPipeline sample in the DirectX SDK was that you could view the intermediary "behind the scenes" steps involved in creating the final image. I would like to do this again by showing at least the intermediary steps involved in deferred shading.
    • Overdraw measurement: It is expected that overdraw will be quite high in some situations, so a simple stencil-buffer based approach (for example) to demonstrate this characteristic would be interesting.

Application Features

  • Screensaver as well as stand-alone: Given this project is based off the Win95 '3D Pipes' screensaver it would be rude not to make a screensaver build. However for general playing around a stand-alone application form needs to exist.
  • Statistics
    • Profiling: Use of ID3D10Debug and ID3D10InfoQueue as well as PIX traces should be built in from the start to allow for analysis of performance.
    • Information: The application should provide resource statistics (e.g. deferred shading can be a big consumer of VRAM)
  • Pipe Simulation
    • Number of Pipes: The number of pipes should be scaleable according to the user's preference
    • Size of Grid: The height/width/depth of the grid should be scaleable according to the user's preference

Possible Extensions (aka 'future work')

  • Graphical
    • Transparencies: Semi-transparent pipes aren't as straight-forward as they might seem, especially when dealing with deferred shading!
    • Shadows: Not necessarily required for something like this, but can't hurt to add it to the list of future features.
    • Anti-Aliasing: Debatable as to whether this should be an initial or future feature, but either way it's something to investigate.
    • Procedural Textures: If the geometry is partially or totally procedurally generated then it could be interesting to extend this to procedural texturing.
    • High Dynamic Range Rendering: Probably not so important given the unrealistic nature of this whole sample, but can't hurt to investigate whether D3D10 offers anything new for HDRI
    • Post-Processing: Some interesting effects (such as distortion, bluring...) could be added to really make this sample stand-out.
    • Predicated Rendering: A new feature in Direct3D 10 would allow us to cull any occluded pipe segments quickly and efficiently.
  • Application
    • Multi-threading: A key technology these days. Whilst this sample might not be the best use of multi-threading it should be possible to refactor into some sort of multi-threaded MVC design.
    • Grid Shape: The initial release will use a cube shape of regularly spaced nodes that the pipes can traverse between. With a bit of thought there should be no reason why more interesting shapes (e.g. surface of a sphere) can't be implemented...

Last edited Aug 25, 2007 at 1:13 PM by JHoxley, version 8


No comments yet.