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 |
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).
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.
- User interaction
- Model texture
- Scene lighting
- Improved treadmill effect
- Basic scene composition and design
- Scene animation
Build the application with build.sh
(Linux/macOS) or build.bat
(Windows) and run the executable file created at abcg/build/bin/abc-wave
.
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.