Re: [CsMain] GSoC Application
Raymond <[email protected]>
| Newsgroups | gmane.comp.graphics.crystalspace.general |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> 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 ------------------------------------------------------------------------------ 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 [email protected] https://lists.sourceforge.net/lists/listinfo/crystal-main Unsubscribe: mailto:[email protected]?subject=unsubscribe
deffered_shading.txt
(text/plain, 3.8 KB)
== 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