Page 1 of 11

[GSoC 2012] Complete the DirectX 11 render system

Posted: Mon Apr 02, 2012 11:48 pm
by robert_sasu
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.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 1:26 pm
by Xavyiy
Hi robert_sasu!

I'm really happy to see this GSoC proposal, I've been (and the whole Ogre community I think) waiting for this since a very long time ago(even previous years GSoC) ! That's definitevely a really really important project for Ogre.

I suggest you to read every Assaf Raman post related to the DX11 RS: http://ogre3d.org/forums/viewtopic.php?f=4&t=36493, and also contact boyamer for his Ogre fork, since he has already implemented tessellation(although he says it was all very hackly): http://www.ogre3d.org/forums/viewtopic.php?f=11&t=67370

Also, try to get familiar with current Ogre RS architecture and the work done by Assaf/boyamer, add more details to your planning, since in my opinion this proposal can't be rejected, this is what Ogre needs, and I sincerely think I'm speaking for the big part of the Ogre community.

Btw, it'll be very cool if Assaf can be the mentor, he is the most indicated person and his amazing work on the topic will definitively be a huge knowledge source! Also, the fact that you've done a previous GSoC project(so you've experience) last year is a big plus for such an "important" project like this one.

Xavier

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 2:18 pm
by spacegaier
Assaf is indeed planning be a mentor this year, so this could really be a good match.

And as Xavyiy already said, try to read up as much as you can to detail out your proposal and to show us that you can handle the topic and have a good overview about the tasks at hand. Would be great to have a project covering DX11!

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 8:58 pm
by Assaf Raman
robert_sasu wrote: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.

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.)
I think that the topic list is too big.

Here is what I think should be the topics:
Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader. - this is the top priority as I see it. I would also love it if you can add the same support to the GL render system + some basic demo.

Multi window support - Should already work - valid point to test, not a big task.

Multi device support. - This is a good feature, you can copy the work done in the d3d9 render system I guess. A sort of a big feature.

RT shader system support for shader model 4/5 with dynamic linking - This can also be nice, do you really think we need it?

Multithreaded Rendering - support for deferred rendering. - No - I don't think we need it - so skip this.

Floating-point viewports. - I am not sure we need it, can anyone give some good reasons for it?

Seems like a valid project, did you get the latest OGRE code from the trunk, run it, and seen that your computer can run the d3d11 render system?

I am going the be the mentor for this - if we select it.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 9:05 pm
by masterfalcon
As far as adding tessellation support to GL, do you think it would be worthwhile to add support to the existing rendersystem or just to GL3Plus? It would end up coinciding with my planned summer work(on the render system, not specifically tessellation).

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 9:16 pm
by Assaf Raman
Well, I don't know, we can decide later.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 03, 2012 11:32 pm
by robert_sasu
I've read every post related to DirectX 11 render system forum topic you suggested. I've downloaded the latest Ogre code from bitbucket via mercurial and started to get familiar with the current rendering system.I am planning to test the d3d11 render system on my computer wednesday morning.

About boyamer's work: his repository on bitbucket is no more available for public. I've also looked over the patches sent by Evandro Millian (hope I spelled the name correctly).

The list I've written was just a raw list with the possible features, which can be implemented.I thought I will start with one feature, after I finish will start working with the next feature, doing so all summer for GSoC project. After the deadline of GSoC (8.24) I would continue to work on the features which were not implemented yet.

First of all I would work(finish) the Tessellation feature with full support for new pipeline stages, hull-shader and domain-shader, as Assaf Raman said this would be the top priority. Next I would deal with testing the multi window support - it would be a minor task after finishing the above mentioned feature. I would also copy the Multi device support from the d3d9 render system with some adjustments and test it.
Finally, if there is time remaining, I would implement 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 will add more details for my planning and my project proposal wednesday night, and probably also send the first scratch of proposal to the google-melange page.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 04, 2012 7:38 am
by boyamer
Implement DX11 features into Ogre means, to break lot of stuff, Ogre was designed (from my point of view) to be more FFP oriented and for old hardware, so implementing DX11 features means to rewrite some core logic to directly support them.

Into AlimerEngine we deprecated DX9 support as we focus more on DX11 (DX11 already has back support for DX9 devices with feature levels), OpenGL 2.0+ and OpenGLES 2.0, so lot of things were changed into Ogre core, for example instead of having single state for Blending Stage, we created immutable BlendState and its created only whether needed, Tessellation is perform for LOD and its used even for tessellated terrain and ocean, hopefully i'll show you a demo soon.

Amer

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 04, 2012 4:45 pm
by robert_sasu
I've compiled and built the latest OGRE code from the trunk and run it. I am using Windows7 64bit and Visual Studio 2010 Ultimate version.
I've also tested the d3d11 render system on my computer and it is working well.

I've downloaded the directX 11 SDK and read a lot of tutorials about the rendering system. Also read a lot of documentation about the tessalation functionality, the possibility of supporting new pipeline stages, and about the Hull and Domain Shaders. I've also get used with ogre's current rendering system, and read/studied the code of the multi device support from the d3d9 render system. Also studied the code of the multi window support feature.

Do you have any suggestions where should I look forward for more documentation, what should I read exactly next a.s.f ?

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 04, 2012 5:08 pm
by bstone
Do you think it would be a good idea to copy the multiple device logic from D3D9? I'm asking because it's clearly the only reason behind the D3D9 implementation keeping redundant vertex/index buffers in system memory (even though they are in the managed pool by default!) thus bloating the working set (no matter if there are multiple devices or only one is used per resource allocation policy). Since D3D11 will require substantial reworking anyway, I'd rather think about cloning the buffers created for the first device when that's really needed.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 04, 2012 7:34 pm
by robert_sasu
I would copy just the raw idea of implementing the multiple device logic from D3D9, since there are some adjustments to make for D3D11. Copying from D3D9 would ease the work and it could be implemented more faster (this meaning I can have more time for other features). I would implement this feature in the way the community needs it. I am really happy to read reactions and opinions about any feature implementation. I take everything in consideration and try to make my work in a way that is good.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Thu Apr 05, 2012 3:54 am
by Assaf Raman
Add your project to here before student application deadline.‬

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Thu Apr 19, 2012 8:02 am
by robert_sasu
Over the last 2 weeks I have read about how was D3D11 render system implemented in Irrlicht graphic engine, also read about the implementation over the AlimerEngine. For Irrlicht I downloaded the code from bitbucket, posted by Evandro Millian (hope the I spelled correct). I've read through the commits, and also studied the code intensely.
I've made a lot of tests using Ogre's render systems (mostly DirectX9 and DirectX11), and get used to Ogre core, coding style, methods a.s.f. I've studied almost every bit of the D3D11 implementation for Ogre (the work done till now), and put some comments and TODO's in the code. I would have started coding unless I would have not to do so much work for school (2 projects for every week). I have got documented over D3D11, about its methods of creating effects, support, tessellation(over hardware) and so for.
I will continue reading and documenting, and will start some easy coding in the comming weeks.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Mon Apr 23, 2012 9:20 pm
by robert_sasu
Thank the community for accepting me, Congratulates to PhilipLB, Xiao Xianquan and Karol Badowski!

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Mon Apr 23, 2012 9:25 pm
by Assaf Raman
Happy to have you aboard. :wink:

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 24, 2012 11:24 pm
by robert_sasu
I might ask who my mentor is, but as Assaf Raman mentioned in an other topic there are just 3 of them. Reading the GSoC topics I found out that everyone knows who is his mentor. What about my guys ? :)

Thanks,
Robert :)

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Tue Apr 24, 2012 11:27 pm
by spacegaier
Since Assaf was the one originally starting with the DirectX11 topic, he is naturally the one mentoring you :) (as well a Karol with his Off-Screen Particles).

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 25, 2012 12:17 am
by Beauty
Congratulation!
Thanks for your motivation on this topic, Robert. :D

Most interesting:
The first post of a new user (=Robert) is an accepted GSoC proposal. :lol:

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 25, 2012 5:58 am
by Assaf Raman
Yes, I am the mentor, sorry if it wasn't clear, I will write more - later today.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 25, 2012 12:46 pm
by Assaf Raman
See the guide here by Mattan and create a fork and such: http://www.ogre3d.org/forums/viewtopic. ... 60#p456560

Before we get started - can you:
1. Look at the last post on this thread by Eugene , review his changes in his fork, and tell me what you think about it.
2. Look at our open patches list and see if any of them are relevant to your project.

Write back what you find out and we can talk about it.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 25, 2012 2:58 pm
by robert_sasu
I have 2 major projects to finish till tomorrow night for university (backgammon game - expectminimax + a problem with TCP Multiplexing). I've done a quick read over the threads and the patches, I have also subscribed for the topic DirectX 11 - work in progress. I've cloned the code from bitbucket. I will create a fork following the guide made by Mattan on Friday, and I will also give detailed answers and reviews on Friday morning.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Wed Apr 25, 2012 5:38 pm
by Assaf Raman
Thanks, sounds good to me.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Thu Apr 26, 2012 2:59 pm
by Mattan Furst
Hello robert_sasu

About working with bitbucket, I forgot to mention that it is best that you use TortiseHG (http://tortoisehg.bitbucket.org/) to work with bitbucket. And once you install TortiseHG you need to configure it according to Ogre's specifications. otherwise problems such as inconsistent encoding can ensue.Configuration page can be found here:
http://www.ogre3d.org/tikiwiki/Getting+ ... TortoiseHG

Also please start every changeset comment with "[Project Title]: " in this case "Direct3d11: " or "D3d11: ". This way once we merge everything to Ogre it will be easier to understand Ogre's changeset history.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Sun Apr 29, 2012 5:54 pm
by spacegaier
Hi Robert, I created an empty wiki page for your project:
http://www.ogre3d.org/tikiwiki/SoC2012+ ... evelopment

Please use that to present your project, keep some sort of change log / updates and draft versions of any sort of documentation needed for the community to keep track of your work and test it. Thanks!

PS: For ideas / examples compare the wiki pages of previous GSoC projects.

Re: [GSoC 2012] Complete the DirectX 11 render system

Posted: Mon Apr 30, 2012 7:21 am
by Assaf Raman
robert_sasu wrote:I have 2 major projects to finish till tomorrow night for university (backgammon game - expectminimax + a problem with TCP Multiplexing). I've done a quick read over the threads and the patches, I have also subscribed for the topic DirectX 11 - work in progress. I've cloned the code from bitbucket. I will create a fork following the guide made by Mattan on Friday, and I will also give detailed answers and reviews on Friday morning.
Any news about the "detailed answers and reviews on Friday morning"?