# ssloy/tinyrenderer

A brief computer graphics / rendering course

Repository: https://github.com/ssloy/tinyrenderer
Canonical: https://ross.abutalabs.com/products/tinyrenderer
Homepage: https://haqr.eu/tinyrenderer/
Language: C++
License: NOASSERTION
License Family: other
Topics: opengl, c-plus-plus, picture, graphics, software-rendering, shaders, rendering, learning, fun, images, pixels, computer-graphics, rasterizer, rendering-engine, rendering-pipeline, engine, tutorial, 3d, 3d-graphics, cpp
Last push: 2026-07-29T12:13:12+00:00

## Health v2 (maintenance only)
Score: 75/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 95, release rhythm 35, longevity 100
- inputs: {"age_days": 4246, "days_push": 35, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 24146, forks 2295 (observed 2026-08-28T04:11:35.744354+00:00)

## What it is
A hands-on computer graphics course that teaches how 3D rendering APIs like OpenGL and Vulkan work by building a software renderer from scratch in about 500 lines of bare C++ with no third-party libraries. It covers line drawing, triangle rasterization, z-buffering, camera transforms, shading, normal mapping, shadow mapping, and ambient occlusion through a series of guided articles.

## Use cases
- learn how 3D graphics APIs work under the hood
- implement a software rasterizer from scratch in C++
- understand triangle rasterization and z-buffering
- learn shading, normal mapping, and shadow mapping fundamentals
- prepare for writing efficient GPU applications with OpenGL or Vulkan
- teach a computer graphics course with hands-on exercises

## When to choose
- you want to deeply understand how rendering pipelines work rather than just use a GPU API
- you prefer learning by implementing everything yourself with minimal dependencies
- you are a student or self-learner looking for a structured graphics course
- you want a small, readable codebase (~500 lines) to study rendering concepts

## When to avoid
- you need a production-ready rendering engine or GPU-accelerated library
- you want to learn GPU programming or shader authoring for real hardware
- you need a graphical interface or interactive 3D viewer
- you want a maintained library to depend on rather than educational material

## Facets
- artifact type: learning-resource
- maturity: stable
- function: graphics, image-processing, developer-tools
- domain: computer-vision, graphics, education, tutorials
- platform: cpp, cross-platform, cli
- tags: software-rendering, computer-graphics, rasterizer, shaders, 3d-graphics, tutorial, course, opengl-internals

## Member repositories
- ssloy/tinyrenderer (main) score 75

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:11:35.744354+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T16:56:17.192375+00:00, confidence not recorded.
  - readme: https://github.com/ssloy/tinyrenderer (fetched 2026-08-28T04:11:35.744354+00:00, sha 3a355b5f6529)
  - homepage: https://haqr.eu/tinyrenderer/ (fetched 2026-08-29T07:53:42.456629+00:00, sha f51f32ee1331)
- Data as of 2026-08-30T08:39:29.467469+00:00.
