diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 28190df..645ab26 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -54,12 +54,8 @@ jobs:
matrix:
config:
- basic
- - bouncing_spheres
- - earth
- - perlin
- cornell_box
- - smoke
- - quads
+ - sweet_dreams
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
diff --git a/Makefile b/Makefile
index 5f8302b..6cfec1b 100644
--- a/Makefile
+++ b/Makefile
@@ -35,5 +35,20 @@ examples: release
$(RELEASE_DIR)/raytrace --config examples/perlin/render.toml --output examples/perlin/render.png
$(RELEASE_DIR)/raytrace --config examples/quads/render.toml --output examples/quads/render.png
$(RELEASE_DIR)/raytrace --config examples/smoke/render.toml --output examples/smoke/render.png
+ $(RELEASE_DIR)/raytrace --config examples/sweet_dreams/render.toml --output examples/sweet_dreams/render.png
+
+ $(RELEASE_DIR)/raytrace --config examples/primitives/geometry/sphere/render.toml --output examples/primitives/geometry/sphere/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/geometry/cube/render.toml --output examples/primitives/geometry/cube/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/geometry/quad/render.toml --output examples/primitives/geometry/quad/render.png
+
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/lambertian/render.toml --output examples/primitives/material/lambertian/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/metal/render.toml --output examples/primitives/material/metal/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/checkered/render.toml --output examples/primitives/material/checkered/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/dielectric/render.toml --output examples/primitives/material/dielectric/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/light/render.toml --output examples/primitives/material/light/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/noise/render.toml --output examples/primitives/material/noise/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/water/render.toml --output examples/primitives/material/water/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/glass/render.toml --output examples/primitives/material/glass/render.png
+ $(RELEASE_DIR)/raytrace --config examples/primitives/material/texture/render.toml --output examples/primitives/material/texture/render.png
.PHONY: all release build test fmt lint examples
diff --git a/README.md b/README.md
index 84bcdb0..2ac52ff 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,277 @@
-# raytrace
+# Raytrace
+
+Raytrace is a CPU-based ray tracing project implemented in Rust. This project
+serves as both a hands-on experiment to deepen my understanding of ray tracing
+concepts and a personal exploration of the Rust programming language.
+
+The ray tracing techniques and concepts used in this project are inspired by a
+three-part book series on implementing ray tracing with C++.
+[https://raytracing.github.io/](https://raytracing.github.io/)
+
+
+

+

+
+
+## Requirements
+
+- [Rust](https://www.rust-lang.org/)
+- [Make](https://www.gnu.org/software/make/manual/make.html)
+
+## Usage
+
+```Bash
+$ raytrace --help
+Usage: raytrace [OPTIONS] --config
+
+Options:
+ -c, --config Path of toml configuration file
+ -o, --output