Skip to content
This repository has been archived by the owner on Jan 15, 2024. It is now read-only.

jamornsriwasansak/wurstrenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wurstrenderer (as of 2019)

t2

t1

WurstRenderer is a CPU-based rendering system I made in early 2019. It focuses on experimentability and readability. For instance, the length of the bidirectional path tracer code is only 430 lines long (included comments, debug code, a lot of blank lines). All integrators (3d) are compared against reference generated from Mitsuba. The result of convergence plots indicates that the implementation of all integrators is correct.

To avoid accidentally releasing code written by collaborators or sensitive code, all changes after mid 2019 were removed.

Implemented:

In this framework, it supports:

Note: It seems that homogeneous volumetric rendering is broken again...

Flatland?:

Flatland is the world where two-dimensional creatures live in. It is quite useful for understanding complicated algorithms. The renderer supports two integrators:

  • Flatland Path Tracing
  • Flatland PSSMLT

It simply takes the 3d scene and automatically take a slice along Z-Axis to create a 2d scene.

For flatland integrator, it can preview path density as well. I found it is very helpful for understanding MCMC & path guiding experiments.

pt bdpt pt2d visualize
Path Tracing NEE + MIS Bidirectional Path Tracing Path Tracing in Flatland Path Density Visualization

Scene format example:

{
    "viewer" : true,
    "camera" : 
    {
        "pos" : [4, 1, -2],
        "lookat": [-1, 1, 0],
        "up" : [0, 1, 0],
        "resolution" : [1024, 512],
        "fovy": 50
    },
    "meshes" : 
    [
        {
            "path" : "fireplace_room/fireplace_room.obj"
        }
    ],
    
    "render" : [
        {
            "integrator" : "nextevent_path_tracer",
            "output": "pt_result.pfm",
            "num_spp" : 100
        },
        {
            "integrator" : "bidirectional_path_tracer",
            "output": "bdpt_result.pfm"
        }
    ]
}

Misc

It uses its own math library and automatically switch to SIMD if your CPU supports. It strictly use double only. The performance is not its forte.

About

personal CPU-based offline renderer focusing on experimentability and readability

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published