All Projects → ssloy → Tinyraycaster

ssloy / Tinyraycaster

Licence: wtfpl
486 lines of C++: old-school FPS in a weekend

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Tinyraycaster

Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+751.48%)
Mutual labels:  fun, engine, opengl, graphics, 3d, rendering, computer-graphics, 3d-graphics, rendering-engine, tutorial, learning, images, picture
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (-64.28%)
Mutual labels:  engine, opengl, graphics, 3d, rendering, 3d-graphics, rendering-engine, tutorial, learning, picture
Tinyraytracer
A brief computer graphics / rendering course
Stars: ✭ 3,971 (+187.13%)
Mutual labels:  fun, graphics, 3d, rendering, computer-graphics, 3d-graphics, rendering-engine, tutorial, learning, images
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+50.18%)
Mutual labels:  fun, graphics, 3d, rendering, computer-graphics, 3d-graphics, rendering-engine, tutorial, learning
Hybridrenderingengine
Clustered Forward/Deferred renderer with Physically Based Shading, Image Based Lighting and a whole lot of OpenGL.
Stars: ✭ 563 (-59.29%)
Mutual labels:  opengl, graphics, 3d-graphics, rendering-engine, learning
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-86.91%)
Mutual labels:  engine, opengl, graphics, 3d, rendering
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (-84.74%)
Mutual labels:  engine, 3d, rendering, 3d-graphics
Softwarerenderer
Software rendering engine with PBR. Built from scratch on C++.
Stars: ✭ 323 (-76.64%)
Mutual labels:  graphics, 3d-graphics, rendering-engine, learning
Fauxgl
Software-only 3D renderer written in Go.
Stars: ✭ 658 (-52.42%)
Mutual labels:  opengl, graphics, 3d, rendering
Exengine
A C99 3D game engine
Stars: ✭ 391 (-71.73%)
Mutual labels:  engine, opengl, 3d, fps
Glsltuto
GLSL shaders tutorial
Stars: ✭ 168 (-87.85%)
Mutual labels:  opengl, rendering, tutorial, learning
Overload
3D Game engine with editor
Stars: ✭ 335 (-75.78%)
Mutual labels:  opengl, graphics, 3d-graphics, rendering-engine
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+641.29%)
Mutual labels:  engine, opengl, graphics, rendering
Graphics Algorithm
3D图形学算法Code。包括软渲染、光线追踪、PBR等等~
Stars: ✭ 67 (-95.16%)
Mutual labels:  opengl, graphics, computer-graphics, rendering-engine
Mini3d
3D Software Renderer in 700 Lines !!
Stars: ✭ 1,320 (-4.56%)
Mutual labels:  opengl, graphics, 3d, picture
Physics3d
A 3D physics engine
Stars: ✭ 101 (-92.7%)
Mutual labels:  engine, opengl, graphics, rendering
Yocto Gl
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics
Stars: ✭ 1,391 (+0.58%)
Mutual labels:  graphics, rendering, computer-graphics, 3d-graphics
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+323.72%)
Mutual labels:  opengl, 3d, rendering, computer-graphics
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+745.84%)
Mutual labels:  opengl, graphics, 3d, 3d-graphics
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (-1.23%)
Mutual labels:  graphics, 3d, rendering, 3d-graphics

Project based learning: build your own 3D shooter in a weekend

Check the wiki for the detailed description of what is under the hood. Screw the source code, read the wiki.

If you are interested by this project, you might want to check my other tiny* repositories, they were fun for me to make, I hope it will be fun for you to read.


This video shows what lies in this repository: TinyRayCaster

At the time I write this text, the repository contains mere 486 lines of code:

[email protected]:~/tinyraycaster$ cat *.cpp *.h | wc -l
486

Few things tinyraycaster is NOT:

  • it is NOT a game, it is a mere stub;
  • it is NOT even a 3d engine;
  • it is NOT a place for design patterns lectures;
  • it is NOT a competitor for id Software products. People, please, I am not John Carmack and neither my students are. Focus on the word "initiation".

Few things tinyraycaster IS:

  • it IS fun;
  • it IS a blank you can start from;
  • it IS created in one day, check the commit history. I broke my leg, so I wrote some code instead of walking!
  • it IS a project you can participate to, pull requests are welcome, and anyone can edit the wiki;
  • it IS full of bugs. Bugreports are welcome!

As an example, here are the sources for the game made by my students Salih Nascimento and Stephane Hulot, also check the following youtube video for a preview:

Thanksgiving party

Compilation

sudo apt install -y libsdl2-dev git
git clone https://github.com/ssloy/tinyraycaster.git
cd tinyraycaster
mkdir build
cd build
cmake ..
make

You can open the project in Gitpod, a free online dev environment for GitHub:

Open in Gitpod

On open, the editor will compile & run the program as well as open the resulting image in the editor's preview. Just change the code in the editor and rerun the script (use the terminal's history) to see updated images. Note how awesome Gitpod is, it allows to run SDL2 games directly in the browser!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].