Skip to content

pszemsza/graphics_challenges

Repository files navigation

Computer Graphics Challenges

What it is?

A collection of computer graphics-related projects ideas. Intended for bored programmers looking for a small side project, and for people interested in learning more about the computer graphics in general.

Each project consists of a series of steps designed to guide you through the implementation process. The steps also include images and/or videos presenting the desired end result.

Projects

Constructive Solid Geometry (CSG) is a modeling technique in computer graphics that represents complex shapes by combining simple geometric shapes (spheres, cubes, etc.) using Boolean operations. It allows to create intricate and detailed objects by combining and manipulating basic shapes in a hierarchical manner.
Boids is an artificial life program simulating the flocking behavior. A couple of simple rules governing individual boids behavior yield realistically looking emergent behavior.
Strange attractors are a family of fractals characterized by their complex and infinitely intricate shapes, despite being described by relatively simple equations. These fractals emerge from the dynamics of chaotic systems.
Explore Julia sets, a family of fractals emerging from iterating a simple equation in the complex numbers plane.
A simple 3D renderer implemented from scratch, using only a "draw pixel" method. The renderer features scene rotation, a lightning model, ortographic and perspective projection, depth buffer, and others.
Simulating and visualizing plane boarding using different boarding methods.
A bite-sized project demonstrating convolution filters used for edge detection.

What it isn't?

Tutorials. There are much better and much more detailed tutorials and articles covering the topics presented here than I could ever create. I will guide you on what to implement, not how to implement it line by line. You are encouraged to search online for in-depth resources, sample implementations, or to read more about the topics at hand.

How does it work

Each project is split into a number of smaller steps, representing incremental progress towards a complete project. Most steps are accompanied by images and/or videos showcasing the expected end result, along with a list of keywords that can be used to search for online resources.

If you find yourself stuck, example solutions for all steps are available as a reference.

Additionally, most projects include a "Next steps" section outlining potential improvements and new features if you wish to further develop your project.

Recommended language/framework

I recommend using Processing. It works on all major operating systems, has modes for Python, Java and JavaScript, and it allows you to start writing graphical apps with a minimal setup.

That being said, you are free to use any language and tools that you prefer. You don't need advanced 2D or 3D capabilities; most projects simply require you to draw single pixels with a specified color.

About

Repository of computer graphics challenges

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages