Mivvo

Mivvo Rendering Engine (Caspertech, Graphics programmer using C++ / HLSL)

I've always enjoyed 3D graphics technically, such as how 3D objects are created and then displayed in different situations. I was hired to undertake research & development on the best rendering solution for the social game engine in development, Mivvo. Working within a team of two and working with base C++ and the DirectX/OpenGL apis.

Project Brief

Mivvo's brief was to become a social game engine. Meaning that like the platform Second Life, it'd offer the tools and power of a game engine in an easy to use sharable platform.

For my part, I was hired to create the rendering component of the game engine from the ground up. Mivvo initially had a basic rendering component that was able to handle showing an imported model. It was not a scalable complex solution capable of rendering vast numbers of lights and objects with techniques such as parallax occlusion mapping or adaptive tessellation.

Being a complex subject with several solutions, I independently had to research and practically implement existing rendering techniques (Forward / Deferred / Clustered) to understand the best solution for this project.

Challenges faced

-Research of existing rendering techniques
A key question of a rendering engine is how it understands lights, materials and objects and presents them. Each technique has its pros and cons. To find the most suitable technique I implemented Forward, Deferred and Clustered lighting techniques within the engine and analyzed their performance with likely customer use.

-A chosen rendering technique
Clustered lighting was chosen to be the best solution given the specification. The key arguing point was that being a game engine that would have vastly different visual styles created for it. It would benefit customers to have simple shaders with different types of BRDF and light interactions.

-Interacting with future content partners
Being a content platform, Mivvo needed active users early on in it's development that would create great content to attract other users. To this end, forum communication, blog posts and virtual gathering on Second Life were attended to help and attract content partners with Mivvo.

Lessons Learnt

  • Mivvo had a developing specification that had a few set concepts but had developing aims in engine specifics. Some design changes with the engine structure was required when the rendering technique was chosen. This means that the initial engine design had to be changed and replaced with how it handled the rendering component.
  • Implementing rendering techniques myself took longer than just downloading an existing sample. But it did provide great research and analysis that led the final technique to be adapted to fit our requirements with elements of the other techniques learnt from their implementation.

Share by: