/abc-wave

3D vaporwave screensaver made for the Computer Graphics course

Primary LanguageC++MIT LicenseMIT

A B C    W A V E

Interact online at https://pi-etro.github.io/abc-wave
Allow Autoplay to listen to the classic vaporwave music
リサフランク420 / 現代のコンピュ by Macintosh Plus (Ramona Xavier).

Name RA
Pietro Di Consolo Gregorio 11038416
Beatriz Libanio de Araujo Yordaky 11013714

Table of Contents

About

A B C    W A V E   is a 3D vaporwave screensaver developed with the ABCg framework for the Computer Graphics course at UFABC.

The project is inspired by the Vaporwave art style, that emerged in the early 2010s and was inspired by the pop culture, surrealism and 1990s aesthetics.


Figure 1. Vaporwave image example (font).


Implementation

The screensaver consists of four instances of the model class: head of Michelangelo's David, Greek pillar, palm tree and a tile. Each of this models can be displayed one or more times in the scene, as seen for all models, with exception for the head of David.


Figure 2. 3D models used in the scene.


The openglwindow class is responsible for creating, updating and displaying all scene and models with their corresponding textures. The floor animation is managed by this class and is implemented in a way that when a tile is behind the camera, it is translated to the back of the scene, creating a treadmill effect. This effect was implemented only on local build, due the inefficiency of the WebAssembly build with textures, which decreases the framerate of the application.


Figure 3. Treadmill effect on local build.


Three different shaders were used in the scene: the texture shader with mesh mapping was used on the palm trees and with spherical mapping on the pillars, the "pure" blinnphong was used on the tiles (using the material's properties to colour them) and the normal shader, which colors the model based on its normals, was used on the head of David to give it an iridescent look.


Figure 4. Textures used on the pillars and the palm trees, respectively.


Finally, the camera class is a implementation of a LookAt Camera that can be moved with WASD or ↑←↓→ keys, making it possible to "walk" through the scene.

The main libraries used by ABCg are: SDL to handle inputs and outputs, GLEW to access the OpenGL graphical API and emscripten to generate the application's WebAssembly.

Releases

Version 2.0

  • User interaction
  • Model texture
  • Scene lighting
  • Improved treadmill effect

Version 1.0

  • Basic scene composition and design
  • Scene animation

Usage

Build the application with build.sh (Linux/macOS) or build.bat (Windows) and run the executable file created at abcg/build/bin/abc-wave.

License and credits

ABCg is a framework developed by Harlen Batagelo for the Computer Graphics course at UFABC, and is licensed under the MIT License. See LICENSE for more information.