https://github.com/ww92030-storage/vsc
Portable 3D Real-Time Rendering Engine in C++
https://github.com/ww92030-storage/vsc
3d-graphics graphics graphics-engine protogen rasterization rasterizer render rendering rendering-engine
Last synced: 10 months ago
JSON representation
Portable 3D Real-Time Rendering Engine in C++
- Host: GitHub
- URL: https://github.com/ww92030-storage/vsc
- Owner: WW92030-STORAGE
- License: agpl-3.0
- Created: 2025-01-30T21:50:25.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-04-03T21:37:53.000Z (10 months ago)
- Last Synced: 2025-04-03T22:24:50.011Z (10 months ago)
- Topics: 3d-graphics, graphics, graphics-engine, protogen, rasterization, rasterizer, render, rendering, rendering-engine
- Language: C++
- Homepage:
- Size: 2.52 MB
- Stars: 106
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# VSC
"I might have to wait, I'll never give up. I guess it's half timing, and the other half is luck..." -Michael Buble
VSC (VOUGA-SHREINER-CANTH) Verified is A real-time 3D rendering engine written _entirely using software_ with the intention of being portable.
Inspired by DoomGeneric with its rather novel approach to separating the backend from the frontend.
Also self-inspired by my (NormalExisting's) other C++ backends mostly for games/clones such as The Witness and Chess.
This is a rasterizer. It uses computational techniques to approximate the reality of lights, shadows, textures, and materials.
If you want a raytracer stay tuned for the sequel FINAL DESTINATION coming soon to theaters near you in the `src/raytracer` directory.
# CREDITS
Everything in here is based on the book Mathematics for 3D Game Programming and Computer Graphics (Third Edition) by Eric Lengyel, as well as various other resources including CS354H (UT Austin Computer Graphics Honors) and other online resources on graphics.
Mathematics for 3d Game Programming will be dubbed as the "Skeleton Book" because of its cover. All files were written primarily by NormalExisting using the Skeleton Book (et al.) as basis and inspiration.
# DEDICATIONS
Etienne Vouga (Graphics Professor at UT Austin, some of his teachings influences this work)
Dave Shreiner (Author of the Official OpenGL Guide)
Coela Canth (Creator of another rendering engine actually a raytracer)
VSC Verified is a community-made level created and completed ("verified") by player nSwish in the game Geometry Dash, intended to be a joke but also happens to be extremely challenging. It uses the song "Haven't Met You Yet" by Michael Buble as the background music, and requires several perfectly timed inputs to various rhythms presented by the song.
# HOW TO USE THIS
Look in the `examples` folder for some example runner code. Or you can modify `main.cpp` as the runner. The Makefile provided is a template that builds and runs `main.cpp` and then the `render.py` which renders the contents of the output buffer (The buffer to render is to be specified in `render.py`).
There is also code in `ESP32` that makes this compatible with your ESP32.
Be aware that the API is constantly changing as this is in development. However the changes should not need to be too severe.
Rudimentary documentation can be found in the `.docs` subdirectory.
# HOW TO RECREATE THIS
Follow the Skeleton book until the end of chapter 5. Some linear algebra background is recommended.
After chapter 5 we make the actual renderer that has the basic rendering abilities of single-color triangles and meshes under a directional light.
And then after that we go into the more juicy stuff such as texturing, clipping, visibility culling, and the like.
There is a document named `NOTES.md` that holds notes that might be useful. It's like playing a game of Super Metroid.
# QUESTIONS/CONCERNS/ISSUES
Feel free to push an issue, do a pull request, or simply contact me (NormalExisting on Discord, Bluesky, and Telegram).
# SHOWCASE!
| | |
| ------------- | ------------- |
|
|
|
|
|
|