Skip to content

Commit

Permalink
Extend documentation
Browse files Browse the repository at this point in the history
Write about use case yet another time
  • Loading branch information
StuckiSimon committed Aug 12, 2024
1 parent d2a23ee commit 52214f5
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
2 changes: 1 addition & 1 deletion website/docs/advanced/_category_.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"label": "Advanced",
"position": 3,
"position": 4,
"link": {
"type": "generated-index"
}
Expand Down
31 changes: 31 additions & 0 deletions website/docs/information.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
sidebar_position: 3
---

# Information

**tl;dr** `strahl` is a WebGPU Path Tracer for the web.

strahl is a path tracing library for web applications. Path tracing is a technique based on ray tracing to render 3D models to images with realistic reflections and ambient occlusion without the need for pregenerated artifacts. strahl leverages WebGPU for optimal performance and is based on the OpenPBR surface shading model.

:::note
The [master thesis report](https://github.com/StuckiSimon/strahl/blob/report/report.pdf) contains a thorough introduction into the use cases, ray tracing and path tracing and a comparison to rasterization. This serves as a very brief summary.
:::

## Real-time Rendering with Rasterization

Rasterization is the predominant technique to perform real-time rendering on the web. If you're familiar with [Three.js](https://threejs.org/) or [Babylon.js](https://www.babylonjs.com/) you most likely already used rasterization.

However, rasterization has limitations when it comes to implementing effects such as shadow casting, reflections, color bleeding, and ambient occlusion. These are subtle effects which are crucial for high-fidelity rendering.

## Ray Tracing

Ray tracing inherently addresses these limitations but at the cost of increased rendering time. `strahl` is a library which leverages ray tracing to generate interactive 3D renderings in the browser.

:::note
Path tracing is a specific implementation of ray tracing and describes the chosen algorithm.
:::

## Use Case

`strahl` is designed to be used to for use cases where near real-time rendering performance is sufficient, pregenerated artifacts are hard to obtain, and visual fidelity is important. The demo from the start page is one such example of a complex CAD model which consists of one million triangles and is derived from production CAD data.
8 changes: 6 additions & 2 deletions website/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@ sidebar_position: 1
The tutorial is not yet finished and will be following in the upcoming weeks.
:::

## Where to find what
If you want to get started as quick as possible, take a look at the [Getting Started](/docs/tutorial-basic) tutorial. If you're interested in some more information about what `strahl` is, check out [information](/docs/information) first.

This is the minimal getting started documentation focusing on hands-on technical documentation. It is suitable if you are interested in creating renderings with `strahl`. However, if you're more interested in how it could be used, what the design decisions were and the internal working of the path tracer, there is a report with more extensive information available on the [Github](https://github.com/StuckiSimon/strahl) repository. If you're unsure about whether this is interesting to you, there is a short paper which gives a brief introduction into the topic available on [arXiv](https://arxiv.org/abs/2407.19977).
## Quick Links

- [arXiv short paper](https://arxiv.org/abs/2407.19977) — summary of the work
- [report](https://github.com/StuckiSimon/strahl/blob/report/report.pdf) — master thesis report with full details
- [npm package](https://www.npmjs.com/package/strahl) — installable `strahl` package

## Browser Support

Expand Down

0 comments on commit 52214f5

Please sign in to comment.