Extending Unreal Engine for Academic purposes

Hello everybody! I am a CS student in my final year, and i’m doing my bachelor thesis in Computer Graphics along with a fellow student.
The task that our professor gave us so far is to find out, if we can port our University’s Global Illumination algorithms in Unreal Engine, or if we can implement/improve
lighting algorithms in Unreal Engine in general.

I should note that we are pretty proficient at programming (our starting plan was to start digging the UE source code in GitHub but its huuuge),
and we have basic knowledge in Graphics Programming with OpenGL stuff (although i believe that we will be productive in that area too in the end of the semester).

Also it should be mentioned that we have 0zero absolutely experience using UE.
For now all that we are searching is some simple answers to get a top level image of what can and cannot be done.

Our questions are:

  • Has Unreal Engine some kind of Global Illumination algorithm already in? If so can we tinker with it and how?
  • If Unreal Engine does not have GI, can we implement one? If so with what means can it be done? Does UE has some plugin system that we can use
    or its source code shall be tampered to achieve this goal?
  • How difficult do you believe any of these tasks are (integrating a new lighting algorithm, or tinkering/improving a preexisting one) from a scale of 1 to 10?

Any help is really appreciated.

P.S.
On the case that this thread proves any of the above to be plausible, don’t hesitate to provide any hints/links/resources/guides on UE’s architecture
or things we should read that will help us for our task.

  • It has several.
  • You’ll have to modify the engine source because for now it’s not possible using a plugin

Wow, that’s a lot of useful information!
Now, my only question that remains unanswered is the 3rd one:
How hard do you believe implementing a new GI algorithm can it be? And what knowledge of UE is required to achieve it?
Does anybody have architecture oriented resources of the UE code, or should i just spend a few months digging the code to implement it?

Please note that this is an educated guess.

The C++ portion of the entine is 376 megabytes of code in 30000+ .h/.cpp files.

It’ll take experienced programmer week or two to wrap the head around the way engine internals work in lighting-related section of it.

You should be able to tear apart existing technolgoies linked by previous poster and see at which point they’re interacting with the engine, and use one of them as skeleton for your project.

I’d suppose it could take experienced C++ programmer with zero unreal experience BUT strong 3d-graphic related experience about 6 weeks of time to whip up first prototype if all the mathematical stuff is well established and if he(she?) has access to the domain expert (meaning you or your professor), maybe less, depending on luck. You won’t get first prototype faster than in 2 weeks (writing from scratch) even if you have god of programming working for you.

Experienced means several years of professionally programming in C++.

In case of students I’d generally expect you to be able to produce something in few month’s time. Not sure how realistic that is.

There’s online documentation, but it is rather limited, so I’d advise to dig through the code. Ignore archtiecture and anything that is not related to your immediate problem. You’ll need decent file manager that can quickly naviagate and search through large number of files (something like total commander, midnight commander, far manager, etc. Notepad++ should also work). and preferably can display C++ code with syntax highlighting. Because you definitely won’t get far if you try to plug that into ide and compile it to see “how it works” or (even worse) set up breakpoints and walk through code. You need to hunt down data structures of interest, see how they’re used, get rough overall idea of subsystem you’re going to work with, locate portions of code where other lighting systems are hooked into the engine and then take it from there.

Like NegInfinity said, it will definitely take someone a while to look through the code to wrap their heads around it. Due to the source code being accessible, the only reason you wouldn’t be able to do something is due to possible legal limitations depending on what you want to do.

I suppose also, that we should also at some point become proficient in using it. Do we have any to the point, fast paced, guide manual for this?
Should i read the online docs first, or do you believe that i’ll learn how to operate it efficiently by messing around with it?

I find it easiest to just dig through the code, once you have a general idea of how everything is laid out, its pretty easy to find what you are looking for, implementing things like custom lighting algorithms tho is probably about as difficult as it gets. But there is always other work to look at to help figuring it out, such as Ryan Torants AHR and VXGI, both integrated into separate branches, both have full source available to investigate (Well enough source in the case of VXGI to determine where the important parts are).

Yep, that was my initial thought too!