[Accepted] Ogre Material Editor
- Hudson
- Halfling
- Posts: 60
- Joined: Thu Sep 14, 2006 2:46 pm
- Location: NY
- Contact:
[Accepted] Ogre Material Editor
Some discussion on this has begun through GSoC application channels, but I am posting it here as well.
A better formatted copy of this description, complete with figures, can be found at http://www.hudsonb.com/GSoC/ogre_material_editor.pdf
Synopsis
The goal of this project is to develop an editor for Ogre’s Material Framework. The Ogre Material Editor will provide the developer with Material Script and Shader editors, and allow them to enable/disable Passes and Techniques enabling rapid prototyping of new Materials. The Ogre Material Editor will be similar in appearance and functionality to the ATI RenderMonkey™ Toolsuite.
Project Details
In Ogre, all aspects of an objects visual appearance are encapsulated in a Material. The Ogre Material Framework is a robust system allowing the programmer to define one or more rendering passes and optionally, techniques for degrading gracefully based on a number of factors such as system hardware and/or level of detail.
The goal of this project is to enable the rapid prototyping of Ogre Materials through the development of an Ogre Material Editor. The Ogre Material Editor will allow a user to create a new Material, and add/remove/edit one or more Passes and Techniques. Users will be able to quickly select which Passes and Techniques are active, as well as modify parameters and view the effects of these changes in real time within the Ogre Material Editor Preview Pane.
ATI has developed the RenderMonkeyâ„¢ Toolsuite to address a similar need for the rapid prototyping of GPU Shaders. The features and appearance of the RenderMonkeyâ„¢ Toolsuite will be used as a model for the Ogre Material Editor.
The Ogre Material Editor will be developed using wxWidgets and Ogre. Both wxWidgets and Ogre are cross-platform therefore enabling the Ogre Material Editor to run on multiple platforms as well. If the Ogre teams prefers, the use of wxWidgets could be abandoned and it could instead be built with the user interface library of their choice. For example, with CEGUI albeit with some limitations, or possibly as a plug-in for the RenderMonkeyâ„¢ Toolsuite or Code::Blocks.
Benefit to the Ogre Community
One of the greatest advances in computer graphics has been the advent of programmable GPU Shaders. Ogre helps developers leverage this new technology through their Material Framework. The Ogre Material Editor will take this one step further by providing the Ogre community with a standard tool which allows them to quickly and easily prototype new Ogre Materials for use within their projects.
Deliverables
During development a weekly progress report will be submitted to my assigned Ogre Google Summer of Code (GSoC) Mentor. These progress reports will summarize the progress made towards the project schedule that is described in detail below. Based on these progress reports, my Ogre GSoC Mentor and I can work collaboratively to refine our goals for the following week.
This project will have two scheduled deliverables; a midterm deliverable on July, 9th 2007 and final deliverable on August, 20th 2007. The number and frequency of deliverables can be increased if desired by the Ogre team.
The midterm deliverable will be uploaded to code.google.com/hosting on July, 9th 2007. The midterm deliverable of the Ogre Material Framework is expected to provide the user with the ability to create and modify the material used on an “ogre headâ€
A better formatted copy of this description, complete with figures, can be found at http://www.hudsonb.com/GSoC/ogre_material_editor.pdf
Synopsis
The goal of this project is to develop an editor for Ogre’s Material Framework. The Ogre Material Editor will provide the developer with Material Script and Shader editors, and allow them to enable/disable Passes and Techniques enabling rapid prototyping of new Materials. The Ogre Material Editor will be similar in appearance and functionality to the ATI RenderMonkey™ Toolsuite.
Project Details
In Ogre, all aspects of an objects visual appearance are encapsulated in a Material. The Ogre Material Framework is a robust system allowing the programmer to define one or more rendering passes and optionally, techniques for degrading gracefully based on a number of factors such as system hardware and/or level of detail.
The goal of this project is to enable the rapid prototyping of Ogre Materials through the development of an Ogre Material Editor. The Ogre Material Editor will allow a user to create a new Material, and add/remove/edit one or more Passes and Techniques. Users will be able to quickly select which Passes and Techniques are active, as well as modify parameters and view the effects of these changes in real time within the Ogre Material Editor Preview Pane.
ATI has developed the RenderMonkeyâ„¢ Toolsuite to address a similar need for the rapid prototyping of GPU Shaders. The features and appearance of the RenderMonkeyâ„¢ Toolsuite will be used as a model for the Ogre Material Editor.
The Ogre Material Editor will be developed using wxWidgets and Ogre. Both wxWidgets and Ogre are cross-platform therefore enabling the Ogre Material Editor to run on multiple platforms as well. If the Ogre teams prefers, the use of wxWidgets could be abandoned and it could instead be built with the user interface library of their choice. For example, with CEGUI albeit with some limitations, or possibly as a plug-in for the RenderMonkeyâ„¢ Toolsuite or Code::Blocks.
Benefit to the Ogre Community
One of the greatest advances in computer graphics has been the advent of programmable GPU Shaders. Ogre helps developers leverage this new technology through their Material Framework. The Ogre Material Editor will take this one step further by providing the Ogre community with a standard tool which allows them to quickly and easily prototype new Ogre Materials for use within their projects.
Deliverables
During development a weekly progress report will be submitted to my assigned Ogre Google Summer of Code (GSoC) Mentor. These progress reports will summarize the progress made towards the project schedule that is described in detail below. Based on these progress reports, my Ogre GSoC Mentor and I can work collaboratively to refine our goals for the following week.
This project will have two scheduled deliverables; a midterm deliverable on July, 9th 2007 and final deliverable on August, 20th 2007. The number and frequency of deliverables can be increased if desired by the Ogre team.
The midterm deliverable will be uploaded to code.google.com/hosting on July, 9th 2007. The midterm deliverable of the Ogre Material Framework is expected to provide the user with the ability to create and modify the material used on an “ogre headâ€
Last edited by Hudson on Mon Apr 16, 2007 1:33 pm, edited 1 time in total.
- Assaf Raman
- OGRE Team Member
- Posts: 3092
- Joined: Tue Apr 11, 2006 3:58 pm
- Location: TLV, Israel
- x 76
Nice idea. Let me suggest an improvement to it.
Well, I think that instead of writing ATI Render Monkey once more – it might be a better idea to write a "Render Monkey file format to ogre material converter", and a Render Monkey plug-in that will be able to show you how the shader looks in OGRE straight from Render Monkey.
More about Render Monkey plug-ins can be found here:
http://ati.amd.com/developer/gdc/Tatarc ... keySDK.pdf
I think that writing a new "OGRE based Render Monkey" is the same as inventing the wheel.
Well, I think that instead of writing ATI Render Monkey once more – it might be a better idea to write a "Render Monkey file format to ogre material converter", and a Render Monkey plug-in that will be able to show you how the shader looks in OGRE straight from Render Monkey.
More about Render Monkey plug-ins can be found here:
http://ati.amd.com/developer/gdc/Tatarc ... keySDK.pdf
I think that writing a new "OGRE based Render Monkey" is the same as inventing the wheel.
Watch out for my OGRE related tweets here.
-
- Google Summer of Code Student
- Posts: 78
- Joined: Tue Mar 29, 2005 3:35 pm
- Location: USA
most interesting is that there is one (actually, two, one is complete rewritement from scratch) available for quite some time, even supports preview and python scripting: http://www.ogre3d.org/wiki/index.php/SoC2006_RmExporter and some people (non-author) were even able to extend it to support glslang shaders, http://www.ogre3d.org/phpBB2/viewtopic. ... 004#205004 .Assaf Raman wrote: Well, I think that instead of writing ATI Render Monkey once more – it might be a better idea to write a "Render Monkey file format to ogre material converter", and a Render Monkey plug-in that will be able to show you how the shader looks in OGRE straight from Render Monkey.
- Assaf Raman
- OGRE Team Member
- Posts: 3092
- Joined: Tue Apr 11, 2006 3:58 pm
- Location: TLV, Israel
- x 76
Good point buddy.
Then my suggestion is also not relevant.
Then my suggestion is also not relevant.
Watch out for my OGRE related tweets here.
-
- Ogre Magi
- Posts: 1266
- Joined: Tue Aug 12, 2003 1:53 am
- Location: Melbourne, Australia
- x 1
- Contact:
-
- Halfling
- Posts: 57
- Joined: Wed Jul 14, 2004 10:12 am
- Location: Berlin
FX Composer 2 from NVidia will ship with a free Mental Mill version. Mental Mill allows to compose shaders using graphs. At the end of my blog entry you will find links to the PDF and press releases.
Maybe you can save effort & time if you can partly rely on this and nail down a solid pipeline by writing the tools and converters it needs to fit the gaps between Mental Mill, FX Composer2 and OGRE ?
Maybe you can save effort & time if you can partly rely on this and nail down a solid pipeline by writing the tools and converters it needs to fit the gaps between Mental Mill, FX Composer2 and OGRE ?
- Assaf Raman
- OGRE Team Member
- Posts: 3092
- Joined: Tue Apr 11, 2006 3:58 pm
- Location: TLV, Israel
- x 76
Port it to mono and it will be multi platform.big_o wrote:Ogre studio is now open source and already has a mostly functional material editor, and it builds with SharpDevelop. It is c# though, so it is pretty much Windows only.
http://www.mono-project.com/Main_Page
Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications.
Watch out for my OGRE related tweets here.
- Hudson
- Halfling
- Posts: 60
- Joined: Thu Sep 14, 2006 2:46 pm
- Location: NY
- Contact:
I believe NVidia's FXComposer 1.8 only supported HLSL, will 2.0 support multiple languages? The PDF you provded doesn't mention it but the Mental Mill articles say Mental Mill does.
FXComposer2 is supposed to provide a plugin-in SDK, hopefully I can get a hold of it early next month to see what is possible.
This project was inspired by the Project Offset Editor, and the Crysis "Sandbox" Editor.
The Crysis GDC "Sandbox" videos are what really sparked my interest in this project. If you haven't seen the videos I suggest you check them out here.
You can see their integrated material editor in action at 7:10 in this video: http://server1.crysis-online.com/video/ ... 20Demo.wmv.
FXComposer2 is supposed to provide a plugin-in SDK, hopefully I can get a hold of it early next month to see what is possible.
This project was inspired by the Project Offset Editor, and the Crysis "Sandbox" Editor.
The Crysis GDC "Sandbox" videos are what really sparked my interest in this project. If you haven't seen the videos I suggest you check them out here.
You can see their integrated material editor in action at 7:10 in this video: http://server1.crysis-online.com/video/ ... 20Demo.wmv.
- Praetor
- OGRE Retired Team Member
- Posts: 3335
- Joined: Tue Jun 21, 2005 8:26 pm
- Location: Rochester, New York, US
- x 3
- Contact:
I don't want to sway overall judgment in regards to this being an SoC project, but I will say a few general things. I welcome all types of editors, and material editors I think are especially important. Since I made the editor in Ogre Studio I can say honestly that it has been put on hold. For how long I can't say. While it is "functional" I would say it is far from where I'd want it to be. I'd love to see a well-crafted, useful material editor. I like the setup of RenderMonkey, so I agree it is a good base or model for it.
- Assaf Raman
- OGRE Team Member
- Posts: 3092
- Joined: Tue Apr 11, 2006 3:58 pm
- Location: TLV, Israel
- x 76
I think that a good result required a bigger commitment then the scope of time that the summer of code allows. A good material editor is a big project (at least if you want to build a better tool then the existing one by Praetor). When you look at last year projects – the only finished projects were the infrastructure ones – not the tools. A tool is not a static thing – it needs to be adapted and developed constantly. I maintain a small tool (much smaller then the one suggested here) and I can tell you that it is a never ending job.Praetor wrote:I'd love to see a well-crafted, useful material editor. I like the setup of RenderMonkey, so I agree it is a good base or model for it.
After the summer Hudson will go back to study (as he should) and the tool will freeze. (Same as the billboard cloud tool from last year).
I think that a possible project that Hudson CAN do is – to be mentored by Praetor – and they will both define goals to improve the editor in Ogre Studio.
Praetor is here to stay – so he will be able to help with adapting the tool to the next versions and fixing minor bug in the future.
Watch out for my OGRE related tweets here.
- syedhs
- Silver Sponsor
- Posts: 2703
- Joined: Mon Aug 29, 2005 3:24 pm
- Location: Kuala Lumpur, Malaysia
- x 51
- jacmoe
- OGRE Retired Moderator
- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
I second that! I think that this project could do a lot for the Ogre content creation pipe-line!Praetor wrote:I'd love to see a well-crafted, useful material editor. I like the setup of RenderMonkey, so I agree it is a good base or model for it.
And it looks like it's on!
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- Praetor
- OGRE Retired Team Member
- Posts: 3335
- Joined: Tue Jun 21, 2005 8:26 pm
- Location: Rochester, New York, US
- x 3
- Contact:
- smernesto
- Halfling
- Posts: 78
- Joined: Wed Jan 03, 2007 12:49 am
- Location: Bogota, Colombia
Take a look, this is the material editor of Unreal Engine 3
http://www.unrealtechnology.com/screens ... Editor.jpg
The source: http://www.unrealtechnology.com/html/te ... ue30.shtml
Ernesto Gutierrez
http://www.unrealtechnology.com/screens ... Editor.jpg
The source: http://www.unrealtechnology.com/html/te ... ue30.shtml
Ernesto Gutierrez
- Hudson
- Halfling
- Posts: 60
- Joined: Thu Sep 14, 2006 2:46 pm
- Location: NY
- Contact:
Thanks for the link smernesto.
I've seen a similar type of interface in Project Offset's Offset Editor:
http://www.projectoffset.com/images/sha ... _large.jpg
It's definetely something I woud love to add, in fact I elude to it in the "Future Work/Graphical Material Composer" section of the proposal posted above.
I've seen a similar type of interface in Project Offset's Offset Editor:
http://www.projectoffset.com/images/sha ... _large.jpg
It's definetely something I woud love to add, in fact I elude to it in the "Future Work/Graphical Material Composer" section of the proposal posted above.
-
- Kobold
- Posts: 39
- Joined: Sat Sep 23, 2006 10:09 am
I think this is the most important! Have you thought at QT for the interface?syedhs wrote:Make it small, but 100% achievable. If it sounds too safe, then probably we will need to have development iteration. Upon completion of first development, then estimate the time for the next. What is important is for the project to be usable and useful after SoC completes.
- Hudson
- Halfling
- Posts: 60
- Joined: Thu Sep 14, 2006 2:46 pm
- Location: NY
- Contact:
I've never used QT. I have some experience with wxWidgets, which elminates the learning curve. This really makes it the best choice for me given the amount I would like to accomplish in a relatively short amount of time.
Additionally, sinbad has stated in the past, and recently reiterated on his blog, that any cross platform tools his creates would use wxWidgets. So I'm hoping that by using wxWidgets now I may ease the pain of integrating with any future (or past) tools that might pop up for Ogre.
Additionally, sinbad has stated in the past, and recently reiterated on his blog, that any cross platform tools his creates would use wxWidgets. So I'm hoping that by using wxWidgets now I may ease the pain of integrating with any future (or past) tools that might pop up for Ogre.
Last edited by Hudson on Tue Apr 17, 2007 5:17 pm, edited 1 time in total.
- jacmoe
- OGRE Retired Moderator
- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
That's right.
WxWidgets is used by a lot of Ogre coders, which means that you don't have to reinvent much.
WxWidgets is used by a lot of Ogre coders, which means that you don't have to reinvent much.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- CaseyB
- OGRE Contributor
- Posts: 1335
- Joined: Sun Nov 20, 2005 2:42 pm
- Location: Columbus, Ohio
- x 3
- Contact:
- Kencho
- OGRE Retired Moderator
- Posts: 4011
- Joined: Fri Sep 19, 2003 6:28 pm
- Location: Burgos, Spain
- x 2
- Contact:
May I suggest to add all the features as a list in the wiki page? That should be a reference for all the future planning and priorisation.
The idea is that you have those features (requirements), define small tasks to get those features working, and develop each task in small time but completely. That's one of the principles of agile development, by the way, so if you're interested in Scrum/XP, these kind of habits will help you a lot.
Also, by having the project info placed at a single location helps finding the info and enhances visibility for both the developers, other projects' developers, and every of us!
The idea is that you have those features (requirements), define small tasks to get those features working, and develop each task in small time but completely. That's one of the principles of agile development, by the way, so if you're interested in Scrum/XP, these kind of habits will help you a lot.
Also, by having the project info placed at a single location helps finding the info and enhances visibility for both the developers, other projects' developers, and every of us!
- milliams
- Gremlin
- Posts: 172
- Joined: Fri Feb 16, 2007 1:47 am
- Location: Portsmouth, UK
- Contact:
Maybe have a look at http://www.unrealtechnology.com/screens ... Editor.jpg. Of course it looks similar to the rest of them but it might be good for ideas.
- Game_Ender
- Ogre Magi
- Posts: 1269
- Joined: Wed May 25, 2005 2:31 am
- Location: Rockville, MD, USA
If there is an official SOC project for this I should really get my cross platform wxOgre (it aisctually works on Linux!) control out and we also need support for parent/external windows handles on the Mac platform.
Good luck on your editor, and wxWidgets a great choice.
Good luck on your editor, and wxWidgets a great choice.
Robotics @ Maryland AUV Team - Software Lead