A downloadable Project

Source Code

This piece of work was one of the submissions for my third year of university, titled 'Advanced Computer Graphics.' Where I was awarded with 80/100 marks.

About the Project

This university unit, titled 'Advanced Computer Graphics,' we were tasked with designing a 3D scene graph from scratch, utilizing the powerful combination of OpenGL and C++ programming language. To facilitate our learning process, our lecturer, Huw Lloyd, provided a custom-written baseline library called 'SOF.' This library simplified the implementation of complex OpenGL tasks by offering pre-built functions, enabling us to focus on shape creation within the scene graph.

Throughout the unit, we had the opportunity to enhance our C++ skills through the development of the scene graph. Additionally, we were introduced to 'HackerRank', an application that put our programming abilities to the test and facilitated our growth with the C++ language. This project marked a significant milestone as it was one of the earliest experiences for many of us with C++, including myself. We learned essential concepts such as polymorphism and the interaction between header and class files. Since then, I have continued to sharpen my programming skills in C++ through further practice on HackerRank.

The project's objective was to develop a 3D scene, implementing the specified requirements outlined in the brief. Using OpenGL and C++, we meticulously designed the scene, incorporating algorithms to plot various indexes. Our work encompassed the following key features, all of which contributed to the overall assessed grade:

  • Organise the 3D scene using a scene graph class, so that it is easy to read the different shapes that are added to the scene.
  • Demonstrate the use of geometry instancing (a single geometry node with multiple transform parents) and hierarchical transforms (multiple objects inheriting from parents).
  • A range of shaders, demonstrating lighting and shading techniques.
  • Procedural geometry (for example geometry primitives with vertex positions, normals, and texture coordinates that are computed at run-time).
  • The use of parametric curves (splines) to animate parts of the scene or render geometry.
  • Collision detection with simple primitives, either for physics simulation, camera collision or both.
  • Broadphase collision such as grid, quadtree or spatial hashing.

To complement this 3D scene, I undertook the challenge of creating a captivating shader using the ShaderToy platform. Leveraging ray-marching techniques, I simulated a mesmerizing 3D animated shader. While the specifications for this piece were fairly vague, the goal was to craft something intricate, animated, and uniquely designed. In preparation for developing our own ray-marched 3D shader, we practiced making shapes, creating patterns, and studying existing ray-marched scenes on ShaderToy to gain inspiration and a deeper understanding of the underlying principles. 

You can find my submission here.

Download

Download
University Submission 176 MB

Install instructions

Download and unpack the WinRAR file and run the solution file using Visual Studio.

Leave a comment

Log in with itch.io to leave a comment.