[2.x] Wish list

Design / architecture / roadmap discussions related to future of Ogre3D (version 2.0 and above)
al2950
OGRE Expert User
OGRE Expert User
Posts: 1131
Joined: Thu Dec 11, 2008 7:56 pm
Location: Bristol, UK
x 51

[2.x] Wish list

Post by al2950 » Thu Aug 02, 2018 12:03 pm

Hi all

I would quite like to put a poll together to see what features developers would like to see implemented next in Ogre 2.x. I have been working on bits a here and there, one of which is the particles systems, but nothing really usable yet. So if there was some clear direction from the community it may help motivate me to finish these sort of things. Also it would just be useful to see what the community need!

Anyway ill start a list here, once its got enough stuff in it ill create a poll, so please add anything you may need/want now or in the distant future
  • GPU Particles systems
  • GUI System
  • Reverse depth buffers
  • Velocity buffer (eg for motion blur)
  • Volumetric lighting
  • Per pixel reflection probes
  • Area lights (I have not looked into the recently added 'Fake' area lights)
  • Deferred decals
  • Android support (Although not even Epic can get this right!)
  • Order Independent Transparency
Many of these can be implemented as samples of how to do a certain technique using ogre, but do shape the engine as a whole. For example to have GPU particle systems, requires some core engine changes.
2 x

xrgo
OGRE Expert User
OGRE Expert User
Posts: 910
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 50

Re: [2.x] Wish list

Post by xrgo » Thu Aug 02, 2018 4:38 pm

My wishlist in priority order:
  • Every VR optimization known to mankind
  • GPU particles (I need nice and cheap rain asap xD)
  • Per pixel reflection probes
  • Android Support
  • Volumetric lighting (a very cheap one)
2 x

hyyou
Gremlin
Posts: 154
Joined: Wed Feb 03, 2016 2:24 am
x 2

Re: [2.x] Wish list

Post by hyyou » Fri Aug 03, 2018 2:56 am

My wishlist :-
  • Custom HLMS implementation tutorial : create PBS from scratch
  • a way to let me sort Ogre::Item myself (e.g. for custom depth-sort)
Edit: strike out. Thank to al2950 for the information (2 post below). XD
Last edited by hyyou on Fri Aug 03, 2018 12:36 pm, edited 1 time in total.
0 x

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Fri Aug 03, 2018 8:08 am

My wishlist:
  • Deferred decals
  • Per pixel reflection probes
  • Temporal Anti-Aliasing(TAA), which requires Velocity buffer
  • Improve Screen-Space Reflection with TAA
  • Volumetric lighting
  • Subsurface scattering (SSS)
  • Dedicated Cloth BRDF
1 x

al2950
OGRE Expert User
OGRE Expert User
Posts: 1131
Joined: Thu Dec 11, 2008 7:56 pm
Location: Bristol, UK
x 51

Re: [2.x] Wish list

Post by al2950 » Fri Aug 03, 2018 10:34 am

hyyou wrote:
Fri Aug 03, 2018 2:56 am
My wishlist :-
  • Custom HLMS implementation tutorial : create PBS from scratch
  • a way to let me sort Ogre::Item myself (e.g. for custom depth-sort)
Hi

Thank you for your input. I am a little curious of a couple of things. When you say Custom HLMS implementation tutorial, is the Terrain sample not good enough or missing specific things, or perhaps over complicated? Admittedly its not advertised as a custom HLMS sample, but it is!

Your second option should actually be very easy it just requires adding another option to the sort enum and storing a function pointer in RenderQueue :D
0 x

hyyou
Gremlin
Posts: 154
Joined: Wed Feb 03, 2016 2:24 am
x 2

Re: [2.x] Wish list

Post by hyyou » Fri Aug 03, 2018 12:34 pm

al2950 wrote:
Fri Aug 03, 2018 10:34 am
... is the Terrain sample not good enough or missing specific things, or perhaps over complicated? Admittedly its not advertised as a custom HLMS sample, but it is! ...
Whoop, I looked at its name, and thought it is a terrain editor.
Sorry for my neglect, I will need time to study the sample. I have edited my previous post.
Thanks for the information! You are a good admin of this thread.
0 x

User avatar
TaaTT4
OGRE Contributor
OGRE Contributor
Posts: 138
Joined: Wed Apr 23, 2014 3:49 pm
x 4

Re: [2.x] Wish list

Post by TaaTT4 » Fri Aug 03, 2018 6:55 pm

My two cents (in no specific order):
  • Velocity buffer
  • TAA
  • Reversed depth buffer
  • Auto calculation of optimal render distance (eg based on pixel coverage)
  • VR optimizations
1 x
Senior game programmer at Vae Victis
Working on Racecraft

User avatar
Mako_energy
Greenskin
Posts: 125
Joined: Mon Feb 22, 2010 7:48 pm
x 4

Re: [2.x] Wish list

Post by Mako_energy » Sun Aug 05, 2018 10:32 pm

  • Integration of a gltf 2.0 importer in OgreMain with UnitTests/Samples to enforce regular compatibility updates.
  • Volumetric Lighting
  • GPU particles
  • Android support
  • Completion and integration of the 2013 GSOC resource system redesign.
  • Lastly, integration of a gltf 2.0 importer in OgreMain with UnitTests/Samples to enforce regular compatibility updates.
I'm not going to give it a bullet point, because I am very ignorant to the actual process with which this takes place, but I've been noticing more and more games using many materials on individual models with great performance. I've heard some (namely from the devs of Star Citizen in ATV/RTV) say they are blending the materials together somehow. Whatever that magic is, I'd like that. But maybe Ogre already has that in some form. I don't know.

Oh, did I mention integration of a gltf 2.0 importer in OgreMain with UnitTests/Samples to enforce regular compatibility updates?
1 x

Lax
Gnome
Posts: 311
Joined: Mon Aug 06, 2007 12:53 pm
Location: Saarland, Germany
x 4

Re: [2.x] Wish list

Post by Lax » Mon Aug 06, 2018 1:19 pm

Hi all,

I read a bit about Google's new graphics engine Filament (https://google.github.io/filament/Filament.md.html).
There are some nice articles about pbs/materials etc.
Especially the chapter 2.3 Cloth model is interesting... This feature for PBS would be really cool!

Best Regards
Lax
0 x

al2950
OGRE Expert User
OGRE Expert User
Posts: 1131
Joined: Thu Dec 11, 2008 7:56 pm
Location: Bristol, UK
x 51

Re: [2.x] Wish list

Post by al2950 » Mon Aug 06, 2018 3:21 pm

Mako_energy wrote:
Sun Aug 05, 2018 10:32 pm
I'm not going to give it a bullet point, because I am very ignorant to the actual process with which this takes place, but I've been noticing more and more games using many materials on individual models with great performance. I've heard some (namely from the devs of Star Citizen in ATV/RTV) say they are blending the materials together somehow. Whatever that magic is, I'd like that. But maybe Ogre already has that in some form. I don't know.
This could be talking about several things. Firstly just PBS, which we already have, as it allows you to define a wide range of different material using the same shader, and so you can combine multiple meshes together that previously required multiple shaders and therefore multiple draw calls to render.

Secondly it could be talking about blending different BRDF's together. This is less likely but an example is rendering clear coat materials that have a 'clear coat' layer on top of a base material
Lax wrote:
Mon Aug 06, 2018 1:19 pm
I read a bit about Google's new graphics engine Filament (https://google.github.io/filament/Filament.md.html).
There are some nice articles about pbs/materials etc.
Especially the chapter 2.3 Cloth model is interesting... This feature for PBS would be really cool!
This is the best documentation I have seen on PBS... ever! Different BRDF's are not hard to add to Ogre. Just need to make sure users understand that different BRDF's means more shader permutations, which means more state changes, more draw calls and therefore less performance!
0 x

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Wed Aug 08, 2018 2:31 pm

al2950 wrote:
Mon Aug 06, 2018 3:21 pm
This is the best documentation I have seen on PBS... ever! Different BRDF's are not hard to add to Ogre. Just need to make sure users understand that different BRDF's means more shader permutations, which means more state changes, more draw calls and therefore less performance!
Wow! I'm interested in different BRDF too, in particular cloth (section 3.11) and clear coat(section 3.8). However, by only implementing BRDFs you only get direct lighting. In most literatures I can find (like filament, Frostbite's course notes in 2014 and Unreal's course notes in 2013), specular reflection of light probes is calculated with pre-filtered importance sampling and split-sum approximation, which is not implemented in Ogre (is Ogre using a simplfied appraoch of doing IBL?).

I don't know how much it affects the render quality, but since it's mentioned a lot of times, it would be great if anyone can implement them (each BRDF needs to be implemented differently, as described in filament) for Ogre. Since you mentioned "per-pixel reflection", I think you might be interested too :-D
0 x

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Wed Aug 08, 2018 2:33 pm

TaaTT4 wrote:
Fri Aug 03, 2018 6:55 pm
My two cents (in no specific order):
  • Velocity buffer
  • TAA
  • Reversed depth buffer
  • Auto calculation of optimal render distance (eg based on pixel coverage)
  • VR optimizations
I'm interested in TAA too. But there are so many literatures so I'm not sure which one suites Ogre best. Do you have any suggestions? Personally I like this one: https://github.com/playdeadgames/temporal
0 x

User avatar
TaaTT4
OGRE Contributor
OGRE Contributor
Posts: 138
Joined: Wed Apr 23, 2014 3:49 pm
x 4

Re: [2.x] Wish list

Post by TaaTT4 » Wed Aug 08, 2018 7:29 pm

rujialiu wrote:
Wed Aug 08, 2018 2:33 pm
I'm interested in TAA too. But there are so many literatures so I'm not sure which one suites Ogre best. Do you have any suggestions? Personally I like this one: https://github.com/playdeadgames/temporal
I'm sorry but I didn't have time to study the subject in yet (for the moment, I'll stick with MSAA + SMAA).
Thanks for sharing that link, I didn't know it! Other interesting resource about the topic are https://assetstore.unity.com/packages/e ... tack-83912 (if you want to lurk a bit from the latest iteration of Unity) and https://developer.nvidia.com/postworks for a pre-built solution.
0 x
Senior game programmer at Vae Victis
Working on Racecraft

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Thu Aug 09, 2018 6:47 am

TaaTT4 wrote:
Wed Aug 08, 2018 7:29 pm
I'm sorry but I didn't have time to study the subject in yet (for the moment, I'll stick with MSAA + SMAA).
Thanks for sharing that link, I didn't know it! Other interesting resource about the topic are https://assetstore.unity.com/packages/e ... tack-83912 (if you want to lurk a bit from the latest iteration of Unity) and https://developer.nvidia.com/postworks for a pre-built solution.
Thanks! We're also using MSAA + SMAA now. I've studied a bit on this subject, but not enough to implement it 8-)
0 x

User avatar
spookyboo
Silver Sponsor
Silver Sponsor
Posts: 1139
Joined: Tue Jul 06, 2004 5:57 am
x 15
Contact:

Re: [2.x] Wish list

Post by spookyboo » Thu Aug 09, 2018 3:49 pm

  • Divide Ogre even more into a small core + (supported) components (resource system, ...)
0 x

al2950
OGRE Expert User
OGRE Expert User
Posts: 1131
Joined: Thu Dec 11, 2008 7:56 pm
Location: Bristol, UK
x 51

Re: [2.x] Wish list

Post by al2950 » Thu Aug 09, 2018 3:54 pm

spookyboo wrote:
Thu Aug 09, 2018 3:49 pm
  • Divide Ogre even more into a small core + (supported) components (resource system, ...)
Ambitious! I think you might be talking about a Ogre V3.x!
0 x

xrgo
OGRE Expert User
OGRE Expert User
Posts: 910
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 50

Re: [2.x] Wish list

Post by xrgo » Mon Aug 13, 2018 4:39 pm

0 x

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Wed Sep 12, 2018 4:34 pm

More wishes:
  • LTC-based area lights
  • Lights with IES profiles
  • Improved GI
By IES lights I mean this:
https://docs.unrealengine.com/en-us/Eng ... htProfiles

By LTC-based area lights, I mean this:
https://eheitzresearch.wordpress.com/415-2/
The link above is the original paper. It's then further optimized and solved many practical issues:
https://blog.selfshadow.com/publication ... -advances/
In 2017 it even supports disks and line lights, but I only need quad lights for now :)

The math may look scary but the implementation is short.

For GI, currently we have Instant Radiosity but Irradiance Volumes, but we want better fully-dynamic GIs. Good candidates include:
  • Light Propagation Volumes
  • Many-lights GI
  • Voxel Cone Tracing
Here "Many-lights GI" includes many techniques, including RSM, ISM etc.
A good introduction: http://drz.disneyresearch.com/~jnovak/p ... index.html
0 x

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3772
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 131
Contact:

Re: [2.x] Wish list

Post by dark_sylinc » Fri Sep 14, 2018 5:10 am

Regarding Screen Space Decals:




Now what's missing is to port these shaders to HLSL & Metal, merge with 2.1 and then port to 2.2.
3 x

rujialiu
Greenskin
Posts: 131
Joined: Mon May 09, 2016 8:21 am
x 9

Re: [2.x] Wish list

Post by rujialiu » Fri Sep 14, 2018 11:19 am

Yeah!!!
0 x

xrgo
OGRE Expert User
OGRE Expert User
Posts: 910
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 50

Re: [2.x] Wish list

Post by xrgo » Sun Sep 16, 2018 4:16 pm

dark_sylinc wrote:
Fri Sep 14, 2018 5:10 am
Regarding Screen Space Decals:
that's pretty exiting =)
are they cheap? can I use 100s.. like for bullet holes?
can they be attached to dynamic objects? (like a car, and if the car moves the decal will stay attached)
cheers!!
0 x

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3772
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 131
Contact:

Re: [2.x] Wish list

Post by dark_sylinc » Sun Sep 16, 2018 8:21 pm

xrgo wrote:
Sun Sep 16, 2018 4:16 pm
Regarding Screen Space Decals:
that's pretty exiting =)
are they cheap? can I use 100s.. like for bullet holes?
I don't know, the code is already working since yesterday so you can just try it!

We're using Forward+ to get the Decals into the shaders, so the same rules apply:
  1. GPU wise, one big decal costs as much as a many small decals distributed across the screen.
  2. CPU wise, more decals = more time culling, but it still helps a lot if they're small.
  3. Different settings for ForwardClustered (width, height, num slices) may give you better/worse performance results, depending on your scene and hardware
  4. Debug mode has a high culling cost in CPU (only Forward Clustered is supported), however it gets better if you enable threading instead of using a single thread. Alternatively you could patch Ogre's build pipeline to force OgreForwardClustered.cpp to be compiled with optimizations even in Debug mode. See override flags for single files.
  5. Decals have width, height and depth, yet decals are 2D. The depth controls how many objects it affects. Try to make them as thin as possible
The math behind it isn't very expensive, so it should run much better than lighting.
In terms of performance cost, emissive < normal < diffuse; i.e. having emissive alone is the cheapest operation. You can have any or all of them enabled depending on what you want to do.
These are global, so e.g. enabling normal mapping for Decals means all decals will pay the price.
xrgo wrote:
Sun Sep 16, 2018 4:16 pm
can they be attached to dynamic objects? (like a car, and if the car moves the decal will stay attached)
cheers!!
Decals derive from MovableObject, which means they can be attached to SceneNodes, thus can move, rotate and translate.
They can also be SCENE_STATIC or SCENE_DYNAMIC.
0 x

User avatar
TaaTT4
OGRE Contributor
OGRE Contributor
Posts: 138
Joined: Wed Apr 23, 2014 3:49 pm
x 4

Re: [2.x] Wish list

Post by TaaTT4 » Wed Sep 26, 2018 1:44 pm

I would like to add another entry to my presents list for dark_SANTACLAUS_sylinc :D
Hashed alpha testing: https://casual-effects.com/research/Wym ... proved.pdf
0 x
Senior game programmer at Vae Victis
Working on Racecraft

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3772
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 131
Contact:

Re: [2.x] Wish list

Post by dark_sylinc » Mon Oct 08, 2018 12:56 am

Per-pixel reflection probes in Ogre 2.2 are coming together nicely.
In terms of internal management they're SO MUCH EASIER. I had to move some code out of ParallaxCorrectedCubemap into a new class called ParallaxCorrectedCubemapBase, and then create ParallaxCorrectedCubemapAuto for per-pixel cubemaps, which is basically ParallaxCorrectedCubemap with almost all the code removed!

These are WIP pics:

There is no fading (fading params must be user defined, although it can be automated), thus the seams are very noticeable.
Notice that even after gradient/fading/blending gets implemented, sometimes the misalignment is going to be there, just not noticeable for the untrained eye

The following pic shows the lack of fading/blending more exaggerated:

There are 3 probes (this is just a slightly modified LocalCubemaps sample) in total you will see 4 lines:
  1. Where probe 0 meets probe 0 & probe 1 active at the same time
  2. Where probe 0 & 1 at the same time meet probe 1
  3. Where probe 1 meets probe 1 & probe 2 active at the same time
  4. Where probe 1 & 2 at the same time meet probe 2
Again, this is only noticeable because there's no blending going (well, there is but it's broken)

There are a few bugs remaining, most noticeable the edge of the windows on the right are showing jarring green/white aliasing pattern. This is caused by the broken blending and will be fixed soon.
1 x

xrgo
OGRE Expert User
OGRE Expert User
Posts: 910
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 50

Re: [2.x] Wish list

Post by xrgo » Mon Oct 08, 2018 3:23 am

:D :D :D :D
Amazing work!
I have a concern: it seems like it's only going to work with parallax corrected probes?
To me the idea would be that you can place any probe and set the influence area at you will, and the parallax correctedness should be just a "checkbox" if I don't set it true it's just a normal spherical probe. I am pretty sure that's how it works in other engines
0 x

Post Reply