OK, I read some source code about shaders of Crystal Space, and here's my
application for a deferred shading system.
On Thu, Apr 1, 2010 at 11:37 PM, res <re...@gmx.ch> wrote:
> On 01.04.2010 16:35, Christian Van Brussel wrote:
> >
> >
> >> Perhaps however, further work on the existing shader system,
> >> such as support for GLSL, would make a good project.
> >
> > Deferred shading is also an interesting topic.
>
> Yeah, deferred shading is definitely a worthwhile SoC project.
>
== About Me
I am a master student of Computer Science in Beihang University,
China. Currently I'm working in State Key Laboratory of Virtual
Reality Technology and Systems. I have done some study on global
illumination and soft shadow rendering and got an essay going to
be published on Computer Study and Development (a famouse Chinese
journal).
I have been using C/C++ and Linux for years. For the time being, I'm
engaged in the development of People's Liberation Army(PLA) Tactical
Simulation Traning System. I've participated a opensource MMORPG
Shadowrun:Awakened which used CS[1] (however, it changed to use Ogre
now). I also managed to create a simple game by myself[3]. What's more, I
submitted a few patches to gnome projects but unfortunately only one
got attention of gnome mentors.
== What to solve
Although Crystal Space's shader system already support lots of shader
features, it still lacks support of deffered shading.
== Project
=== G-Buffer Structure
Simply create G-Buffer for position, normal, diffuse and material
parameter is not a smart idea, as this will consume lots of video
memory and bandwith. Also current hardware don't support mixing
different bit depth for multiple render targets. So the structure of
G-Buffer should be carefully designed, I will reffer to the STALKER[3]
and Shawn Hargreaves's design[4].
As CS must allow deffered shading to be used for many purposes, it
should be a good option to set up several G-Buffer structures and let
user to choose which one to use. For example we offer a option that
does not store vertex position, but calculate the position in the
shading stage to save video memory.
=== Transparent
Transparent have been a big problem for deffered shading for a long
time. Here I plan to draw transparent objects separately after
deffered shading. CS user have to figure out which object is
transparent and the shader system automaticly create a separate
technique for it.
=== Antialiasing
Another big problem for deffered shading. I'll try approtches like
edge-based antialiasing. DirectX 10 now have features to allow
hardware multisample for deferred shading, and I'll check out if
there's such extensions in OpenGL.
=== Optimization
If 256 bits are used per pixel, it will cost 24M memory at 1024x768
even without antialiasing. Many solution can be introduced to solve
this. Material attributes could be palettized and then looked up in a
texture.
=== MRT
Render manager should be modified to support MRT, and maybe more thing
should be refactored to support it.
=== Others
All deffered shading programs have similar G-buffers, so we should let
CS to create theres G-Buffer for users. This can be simply done by
using shader-snippets. And CS should be modified to support G-buffer
creation and seting up MRT by using xml.
== Project Schedule
1st Week(24th May - 30th May):
Prepare the deffered shaders going to be used. Understand those xml
shader files.
2nd to 3rd Week(31st May to 13th June):
Create shader snippets used to store position, normal, diffused color,
etc. Modify the render manager and XML pareser to support MRT.
4th to 6th Week(14th June and 27th June)
Creaet unit test for this project. Write a simple effect based on
deffered shading. Develop routines to deal with transparent objects.
7th to 8th Week(28th June to 4th July):
Implement the edge-based antialiasing algrithm.
9th and 10th Week(12th July to 25th to July):
Tune the code and optimizate memory usage and bandwidth. Write some
demo effects based on deffered shading. Test the whole project and
write documents.
[1] http://awakenedmmo.org/
[2] http://code.google.com/p/rockyray/
[3] Deferred Shading in S.T.A.L.K.E.R.,
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter09.html
[4] Deffered Shading, Shawn Hargreaves, Game Developers Conference
2004
== About Me
I am a master student of Computer Science in Beihang University,
China. Currently I'm working in State Key Laboratory of Virtual
Reality Technology and Systems. I have done some study on global
illumination and soft shadow rendering and got an essay going to
be published on Computer Study and Development (a famouse Chinese
journal).
I have been using C/C++ and Linux for years. For the time being, I'm
engaged in the development of People's Liberation Army(PLA) Tactical
Simulation Traning System. I've participated a opensource MMORPG
Shadowrun:Awakened which used CS[1] (however, it changed to use Ogre
now). I also managed to create a simple game by myself[3]. What's more, I
submitted a few patches to gnome projects but unfortunately only one
got attention of gnome mentors.
== What to solve
Although Crystal Space's shader system already support lots of shader
features, it still lacks support of deffered shading.
== Project
=== G-Buffer Structure
Simply create G-Buffer for position, normal, diffuse and material
parameter is not a smart idea, as this will consume lots of video
memory and bandwith. Also current hardware don't support mixing
different bit depth for multiple render targets. So the structure of
G-Buffer should be carefully designed, I will reffer to the STALKER[3]
and Shawn Hargreaves's design[4].
As CS must allow deffered shading to be used for many purposes, it
should be a good option to set up several G-Buffer structures and let
user to choose which one to use. For example we offer a option that
does not store vertex position, but calculate the position in the
shading stage to save video memory.
=== Transparent
Transparent have been a big problem for deffered shading for a long
time. Here I plan to draw transparent objects separately after
deffered shading. CS user have to figure out which object is
transparent and the shader system automaticly create a separate
technique for it.
=== Antialiasing
Another big problem for deffered shading. I'll try approtches like
edge-based antialiasing. DirectX 10 now have features to allow
hardware multisample for deferred shading, and I'll check out if
there's such extensions in OpenGL.
=== Optimization
If 256 bits are used per pixel, it will cost 24M memory at 1024x768
even without antialiasing. Many solution can be introduced to solve
this. Material attributes could be palettized and then looked up in a
texture.
=== MRT
Render manager should be modified to support MRT, and maybe more thing
should be refactored to support it.
=== Others
All deffered shading programs have similar G-buffers, so we should let
CS to create theres G-Buffer for users. This can be simply done by
using shader-snippets. And CS should be modified to support G-buffer
creation and seting up MRT by using xml.
== Project Schedule
1st Week(24th May - 30th May):
Prepare the deffered shaders going to be used. Understand those xml
shader files.
2nd to 3rd Week(31st May to 13th June):
Create shader snippets used to store position, normal, diffused color,
etc. Modify the render manager and XML pareser to support MRT.
4th to 6th Week(14th June and 27th June)
Creaet unit test for this project. Write a simple effect based on
deffered shading. Develop routines to deal with transparent objects.
7th to 8th Week(28th June to 4th July):
Implement the edge-based antialiasing algrithm.
9th and 10th Week(12th July to 25th to July):
Tune the code and optimizate memory usage and bandwidth. Write some
demo effects based on deffered shading. Test the whole project and
write documents.
[1] http://awakenedmmo.org/
[2] http://code.google.com/p/rockyray/
[3] Deferred Shading in S.T.A.L.K.E.R.,
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter09.html
[4] Deffered Shading, Shawn Hargreaves, Game Developers Conference
2004
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe:
mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe