Unlimited Light Sources with Clustered Forward Shading
- AnyOldName3
- Posts: 2677
- Joined: 26 Nov 2015, 03:25
Re: Unlimited Light Sources with Clustered Forward Shading
To make OpenMW use all lights for everything, the quick thing to do would be to make the light list callback just enable every light and then tweak the shader so it can accept that many lights. It won't quite be the tidiest thing in the world and there'd be some redundant work, but it would be enough to get a ballpark estimate of whether implementing anything fancy and scaleable is worthwhile.
Re: Unlimited Light Sources with Clustered Forward Shading
Yeah all I had tried in the past was set MAX_LIGHTS in the shader to a high number and obviously nothing good happened. It figures there's some hardcoded stuff to tweak as well.
- AnyOldName3
- Posts: 2677
- Joined: 26 Nov 2015, 03:25
Re: Unlimited Light Sources with Clustered Forward Shading
The shader ignores any lights it's told to use beyond that number, but that doesn't mean the engine is bothering to tell it to use any other lights.
It might be a case of tweaking a couple of lines in the light manager, or it might involve moving away from glLight to a custom uniform depending on the maximum fixed function light count of modern GPUs.
It might be a case of tweaking a couple of lines in the light manager, or it might involve moving away from glLight to a custom uniform depending on the maximum fixed function light count of modern GPUs.
Re: Unlimited Light Sources with Clustered Forward Shading
3-month check-in: I'm still interested in updating this thread with examples of clustered shading in the wild as they're found, but there's also the matter of the suggested test using basic forward rendering. Any news on when or if this ballpark estimate can be conducted? I simply don't have the expertise to make the necessary code tweaks, whatever they may be.
- AnyOldName3
- Posts: 2677
- Joined: 26 Nov 2015, 03:25
Re: Unlimited Light Sources with Clustered Forward Shading
It's all still on my to-do list.
With the amount of time it's taking to get around to stuff, it might genuinely be worth your while to learn some OpenGL if you haven't already. I know I've mentioned that before.
With the amount of time it's taking to get around to stuff, it might genuinely be worth your while to learn some OpenGL if you haven't already. I know I've mentioned that before.
- wazabear
- Posts: 96
- Joined: 13 May 2020, 19:31
- Gitlab profile: https://gitlab.com/glassmancody.info
Re: Unlimited Light Sources with Clustered Forward Shading
I went ahead and attempted this by doing just that. The gist of this patch is that I pass a point light count along with a UBO which contains an array holding the point light data. I pass the sun as a separate UBO with respect to a LightManager instance. All calls to gllight* are removed, I was not able to increase the max lights that gl_LightSource holds. Attempts at that simply yielded junk results. If you're interested here is the (very) WIP attempt. It doesn't crash or death spiral, so it's a start. The only change to the LightManager API right now is the special handling of adding a sun. I tried not too meddle too much with how we sort and cull the lights, so it's pretty much the same as it originally was.AnyOldName3 wrote: ↑12 Mar 2019, 14:31 The shader ignores any lights it's told to use beyond that number, but that doesn't mean the engine is bothering to tell it to use any other lights.
It might be a case of tweaking a couple of lines in the light manager, or it might involve moving away from glLight to a custom uniform depending on the maximum fixed function light count of modern GPUs.
The maximum number of lights is set to 16 and is configurable with a setting, let me know what you think of this.
Code: Select all
[Shaders]
max lights = 16
Here is CMAugust flying through the notoriously flickery Ald-Ruhn Mages Guild with the build.
- AnyOldName3
- Posts: 2677
- Joined: 26 Nov 2015, 03:25
Re: Unlimited Light Sources with Clustered Forward Shading
Can you open a draft MR, please? It might be useful if I could review it a bit, but GitLab apparently won't do diffs across forks without an associated MR.
- wazabear
- Posts: 96
- Joined: 13 May 2020, 19:31
- Gitlab profile: https://gitlab.com/glassmancody.info
Re: Unlimited Light Sources with Clustered Forward Shading
Done. https://gitlab.com/OpenMW/openmw/-/merge_requests/618AnyOldName3 wrote: ↑21 Feb 2021, 16:00 Can you open a draft MR, please? It might be useful if I could review it a bit, but GitLab apparently won't do diffs across forks without an associated MR.
- psi29a
- Posts: 5361
- Joined: 29 Sep 2011, 10:13
- Location: Belgium
- Gitlab profile: https://gitlab.com/psi29a/
- Contact:
Re: Unlimited Light Sources with Clustered Forward Shading
You are a hero good sir.