[GSoC 2012] Complete the DirectX 11 render system
Posted: Mon Apr 02, 2012 11:48 pm
Project Proposal
I found that this are the new features which are needed to be done for the next version of ogre.
RT shader system support for shader model 4/5 with dynamic linking.
Multi window support.
Multi device support.
Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader.
Multithreaded Rendering - support for deferred rendering.
Floating-point viewports.
Some demos of the new features.
After discussing about this list, here is the list I would work on (I would work on them on the presented order). I will explain more in the work planning section:
1. Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader
2. Multi-window support
3. Muti-device support
4. RT shader system support for shader model 4/5 with dynamic linking
Questions: Please let me now if you have any suggestions. (Sorry for writing so late, I was sick and lost 10 days in a hospital.)
Here comes my planned work during GSoC:
1. First part (4.3 - 5.21) - time for documentation, discussing about project and easy-coding
In this period of the program I would read as much documentation as needed (even more), discuss about the features in details with community. I would also try to start programming, some basic things (easy-coding), mostly make my detailed planning in code, creating the necessary classes, making the constructors, making header files and adding TODO comments for each section. In this way when I will start hard coding I will know exactly what to do, and will not lose time by thinking about organizing the code and stuff.
2. Second part (5.22 - 7.9) - Summer starts:
5.23 - 6.5 : I would continue to organize what I will do next and also write some raw code for some sections (also write down the major part of the algorithm to files), as tessalation feature has the biggest priority I would start with it.In this period of the year I have my final exam session, I have 6 exams in 3 weeks, so I will not be able to do many things, because I have to focus on school.
6.6 - 7.9 : For this time I would propose to work on the first 2-3 features mentioned above (depending how fast will I be able to complete these). I would leave maximum 3 weeks for the Tessalation feature with its support for the new pipeline stages and for hull-shaders and domain shaders. First working dealing with rendering convex objects, then making a general algorithm for decomposing the concaves shapes in convex object, make a list of them and run the tessalation feature for each created convex object. I will test in paralel of my work, but will make also big test after every week of work, and in case of problems will let 2 days for debugging.
7.2 - 7.5 : Do a lot of testing for the multi window support feature.
7.5 - 7.9 : Start working on the multi-device support (I would leave maximum 14 days for this feature). First I would copy the major parts of this feature from the D3D9 renderer, then will make adjustments to it to work well for D3D11. In these 4 days I would work on copying the major parts and making the code compilable and runnable.
3. Midterm evaluation (7.9 - 7.13) - cleaning up the code, completing the commentaries of the code. I would also make a showcase (probably some demos) and post it to the forum.
4. Second part of the summer program (7.14 - 8.17)
7.14-7.24 In this time I would finalize the work for the multi device support, making all the required adjustments, optimizing the code for D3D11 and adding everything as it will be discussed on the forum. On the last 3 days I would make hard testing for this feature. If I have problems with this feature after testing I will give one more week for debugging.
7.25-8.17: I would start working on the RT shader system support for shader model 4/5 with dynamic linking. This system gives a real boost in time when somebody wants to make 3D graphics, as it generates the code in real time for the objects, it saves development time, and the code created is also reusable and shareble, so you can enjoy the effects created by the community with small adjustions. I would try to do as much as possible on this feature, and if I will not be able to complete it on time, I would continue to work on it after GSoC is over.
5. Final evaluation (8.17 - 8.24) - Finishing the project, cleaning up the code and arranging it in such a way that it can be uploaded for the master branch. I would finalize my showcase of the summer work, post new demos to the forum and make a detailed post about the work I have done through GSoC.
6. After GSoC - 8.25 - undefined : First of all I would implement all the required features I hadn't time to do in the summer project. After this I would ask the community and continue coding in my spare time. I can be really active till October, then I will have to start the 3rd year of my studies, and I will have priority on the university stuff I have to do.
Why You're The Person For This Project
My name is Robert Sasu and I study Computer Science at Polytechnic University of Bucharest, Romania. I had participated to GSoC 2011 at GIMP organization on the project Porting Gimp plug-ins to GEGL. Here is a link to my showcase and code: http://sasurobert.github.com/GSoC-2011/
I would like to participate to GSoC 2012 and I found the project called Complete the DirectX 11 render system interesting. I have strong background in C/C++,C#, Java, Haskel, CLIPS programming, algorithms. I really like mathematics:I recently participated to SEEMOUS (seemous.eu) and I earned a silver medal. Last year I attended a Microsoft course where we learnt how create games, terrains (rendering stuff) using C# with XNA 4.0. It was really fascinating how many things are implemented in this library and how efficient is it working, using the video card to the maximum. Through this course I've also done some basic DirectX 9 and 10 coding, some basic rendering. I've read a lot about this project on this forum and I've also downloaded the code from github. I've made a small game engine for pong games 4 years ago in C. When I was in high school I used Ogre3D for a lot of small projects, mostly because it was a good way to learn about computer graphics.
I am really fascinated by computer graphics, and I know I can learn a lot and to make a good job.
Why OGRE?
OGRE is a great 3D graphics library. The main use case for this project is of course completing the DirectX 11 rendering system, which will be really useful for Windows 8 and all the new videocards which are capable of using DirectX 11.
I found that this are the new features which are needed to be done for the next version of ogre.
RT shader system support for shader model 4/5 with dynamic linking.
Multi window support.
Multi device support.
Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader.
Multithreaded Rendering - support for deferred rendering.
Floating-point viewports.
Some demos of the new features.
After discussing about this list, here is the list I would work on (I would work on them on the presented order). I will explain more in the work planning section:
1. Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader
2. Multi-window support
3. Muti-device support
4. RT shader system support for shader model 4/5 with dynamic linking
Questions: Please let me now if you have any suggestions. (Sorry for writing so late, I was sick and lost 10 days in a hospital.)
Here comes my planned work during GSoC:
1. First part (4.3 - 5.21) - time for documentation, discussing about project and easy-coding
In this period of the program I would read as much documentation as needed (even more), discuss about the features in details with community. I would also try to start programming, some basic things (easy-coding), mostly make my detailed planning in code, creating the necessary classes, making the constructors, making header files and adding TODO comments for each section. In this way when I will start hard coding I will know exactly what to do, and will not lose time by thinking about organizing the code and stuff.
2. Second part (5.22 - 7.9) - Summer starts:
5.23 - 6.5 : I would continue to organize what I will do next and also write some raw code for some sections (also write down the major part of the algorithm to files), as tessalation feature has the biggest priority I would start with it.In this period of the year I have my final exam session, I have 6 exams in 3 weeks, so I will not be able to do many things, because I have to focus on school.
6.6 - 7.9 : For this time I would propose to work on the first 2-3 features mentioned above (depending how fast will I be able to complete these). I would leave maximum 3 weeks for the Tessalation feature with its support for the new pipeline stages and for hull-shaders and domain shaders. First working dealing with rendering convex objects, then making a general algorithm for decomposing the concaves shapes in convex object, make a list of them and run the tessalation feature for each created convex object. I will test in paralel of my work, but will make also big test after every week of work, and in case of problems will let 2 days for debugging.
7.2 - 7.5 : Do a lot of testing for the multi window support feature.
7.5 - 7.9 : Start working on the multi-device support (I would leave maximum 14 days for this feature). First I would copy the major parts of this feature from the D3D9 renderer, then will make adjustments to it to work well for D3D11. In these 4 days I would work on copying the major parts and making the code compilable and runnable.
3. Midterm evaluation (7.9 - 7.13) - cleaning up the code, completing the commentaries of the code. I would also make a showcase (probably some demos) and post it to the forum.
4. Second part of the summer program (7.14 - 8.17)
7.14-7.24 In this time I would finalize the work for the multi device support, making all the required adjustments, optimizing the code for D3D11 and adding everything as it will be discussed on the forum. On the last 3 days I would make hard testing for this feature. If I have problems with this feature after testing I will give one more week for debugging.
7.25-8.17: I would start working on the RT shader system support for shader model 4/5 with dynamic linking. This system gives a real boost in time when somebody wants to make 3D graphics, as it generates the code in real time for the objects, it saves development time, and the code created is also reusable and shareble, so you can enjoy the effects created by the community with small adjustions. I would try to do as much as possible on this feature, and if I will not be able to complete it on time, I would continue to work on it after GSoC is over.
5. Final evaluation (8.17 - 8.24) - Finishing the project, cleaning up the code and arranging it in such a way that it can be uploaded for the master branch. I would finalize my showcase of the summer work, post new demos to the forum and make a detailed post about the work I have done through GSoC.
6. After GSoC - 8.25 - undefined : First of all I would implement all the required features I hadn't time to do in the summer project. After this I would ask the community and continue coding in my spare time. I can be really active till October, then I will have to start the 3rd year of my studies, and I will have priority on the university stuff I have to do.
Why You're The Person For This Project
My name is Robert Sasu and I study Computer Science at Polytechnic University of Bucharest, Romania. I had participated to GSoC 2011 at GIMP organization on the project Porting Gimp plug-ins to GEGL. Here is a link to my showcase and code: http://sasurobert.github.com/GSoC-2011/
I would like to participate to GSoC 2012 and I found the project called Complete the DirectX 11 render system interesting. I have strong background in C/C++,C#, Java, Haskel, CLIPS programming, algorithms. I really like mathematics:I recently participated to SEEMOUS (seemous.eu) and I earned a silver medal. Last year I attended a Microsoft course where we learnt how create games, terrains (rendering stuff) using C# with XNA 4.0. It was really fascinating how many things are implemented in this library and how efficient is it working, using the video card to the maximum. Through this course I've also done some basic DirectX 9 and 10 coding, some basic rendering. I've read a lot about this project on this forum and I've also downloaded the code from github. I've made a small game engine for pong games 4 years ago in C. When I was in high school I used Ogre3D for a lot of small projects, mostly because it was a good way to learn about computer graphics.
I am really fascinated by computer graphics, and I know I can learn a lot and to make a good job.
Why OGRE?
OGRE is a great 3D graphics library. The main use case for this project is of course completing the DirectX 11 rendering system, which will be really useful for Windows 8 and all the new videocards which are capable of using DirectX 11.