This semester I'll be creating my own rendering engine to experiment with advanced graphics techniques and cloud based rendering.
It will start off fairly simple. Using either Vulcan or DirectX to create a basic rendering engine for displaying models and a basic scene. There should also be a object manager to handle object placement in the world, and describe simple functionality, such as an animated camera. There will also be a simple shader system, that can allow for various interesting graphic systems to be applied. Then I want to create an exporter that can save individual frames as images from a scene's camera. Right now, there are no plans to include a video encoder, but each frame should be able to be linked together to create a coherent video in another program. That is what I would consider my minimal viable product, the absolute minimum for this project to be satisfactory.
Going forward from that, I would want to integrate some form of advanced rendering techniques, potentially ray tracing or subsurface scattering. Then, I would want to pair this with a system to send raw input data to a cloud server to calculate the lighting information, which would be sent back and applied to the output frame render.
My current plan is to use AWS EC2 instances to process those large calculations. This allows for the hardware that the engine instance is running on to be lightweight, and handle more immediate processes. This is a practice currently used by many companies, both large and small, to mitigate overhead costs of server maintenance and provide a scalable solution.
My "end goal" is to display a comparison of the output video, one with the cloud rendering, and one without. The time it takes to complete rendering all the frames should be significantly lower on the video that used cloud servers. Another option is to show a complex scene being rendered on a very low spec machine, since the actual heavy lifting will be handled by the cloud instances.
Some potential technical risks up front are: creating an output system for the individual frames, the integration with AWS EC2 instances, and building a proper, but rather simple version of a complex graphics practices. To try to mitigate these risks, I will most likely be hard coding some of the data that will be displayed, and greatly limiting the flexibility of formats. I will also most likely not be creating a preview window of sorts, instead almost running a console application to render the scene.
Initially, I decided that since the issue of using a cross platform capable IDE was important only if the working environment changed, all I needed to do was retain the exact same environment. Thus a remote desktop would be perfect, since from any platform it could be connected into, and wouldn't need any amount of set up for different development platforms.
However since that solution would lead to an inability for grading my work, I've elected to use CLion. It has intelligent code completion and can easily work on any OS right out of the box.