PawelPleskaczynski / Go Pt

Licence: mit
Path tracer written in Golang

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Go Pt

LumillyRender
Monte Carlo path tracing implementation on Rust
Stars: ✭ 36 (-70.97%)
Mutual labels:  path-tracer, ray-tracing
Ospray
An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
Stars: ✭ 734 (+491.94%)
Mutual labels:  ray-tracing, path-tracer
Yune
GPU based framework for writing Raytracers/Pathtracers. (Pronounced as "Yu-nay")
Stars: ✭ 64 (-48.39%)
Mutual labels:  path-tracer, ray-tracing
Glsl Pathtracer
A GLSL Path Tracer
Stars: ✭ 634 (+411.29%)
Mutual labels:  ray-tracing, path-tracer
C Ray
C-Ray is a small, simple path tracer written in C
Stars: ✭ 323 (+160.48%)
Mutual labels:  ray-tracing, path-tracer
Three.js Pathtracing Renderer
Real-time PathTracing with global illumination and progressive rendering, all on top of the Three.js WebGL framework. Click here for Live Demo: https://erichlof.github.io/THREE.js-PathTracing-Renderer/Geometry_Showcase.html
Stars: ✭ 872 (+603.23%)
Mutual labels:  path-tracer
Miyuki Renderer
Experimental Physically Based Renderer
Stars: ✭ 89 (-28.23%)
Mutual labels:  path-tracer
Rfw Rs
Framework for playing around with rendering libraries in Rust
Stars: ✭ 23 (-81.45%)
Mutual labels:  ray-tracing
Blender
Mirror of the official Blender Git repository. Updated every hour.
Stars: ✭ 609 (+391.13%)
Mutual labels:  ray-tracing
Sparsevoxeloctree
A GPU SVO Builder using rasterization pipeline, a efficient SVO ray marcher and a simple SVO path tracer.
Stars: ✭ 110 (-11.29%)
Mutual labels:  path-tracer
Laravel Tracer
Shows the path of each blade file loaded in a template
Stars: ✭ 96 (-22.58%)
Mutual labels:  path-tracer
Metatrace
Stars: ✭ 67 (-45.97%)
Mutual labels:  ray-tracing
Tofu
Project for an open-source python library for synthetic diagnostics and tomography for Fusion devices
Stars: ✭ 35 (-71.77%)
Mutual labels:  ray-tracing
Monte carlo ray tracer
A program with an implemented Monte Carlo Ray Tracer algorithm for global illumination of a virtual 3D scene.
Stars: ✭ 90 (-27.42%)
Mutual labels:  ray-tracing
Yocto Gl
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics
Stars: ✭ 1,391 (+1021.77%)
Mutual labels:  path-tracer
Rustlight
physically-based rendering engine implemented with Rust.
Stars: ✭ 51 (-58.87%)
Mutual labels:  path-tracer
Ray
Small pathtracing library with GPU and CPU backends
Stars: ✭ 95 (-23.39%)
Mutual labels:  path-tracer
Rgk
Photorealistic physically-based renderer
Stars: ✭ 41 (-66.94%)
Mutual labels:  path-tracer
Basic pathtracer
A basic GPU pathtracer in unity
Stars: ✭ 39 (-68.55%)
Mutual labels:  path-tracer
Go Trace
Implementing a path tracer in Go
Stars: ✭ 77 (-37.9%)
Mutual labels:  path-tracer

go-pt

This project is a Monte Carlo path tracer written in Golang that runs on CPU.

Monkeys

Features

Implemented

  • Parallel processing on multiple CPU cores
  • BVH trees for accelerating intersection tests
  • Positionable camera with adjustable focal length and aperture
  • Transformations (translation, rotation)
  • Materials:
    • universal material with adjustable properties:
      • albedo:
        • texture or color
      • roughness (GGX microfacet model)
      • index of refraction
      • amount of clearcoat
      • roughness of clearcoat
      • metalicity
      • transmission
    • Emission material:
      • emission color
  • Support for OBJ files:
    • loading vertices, texture coordinates and normals
    • triangle fan triangulation of polygons
    • support for materials from MTL files
    • support for image textures
    • normal smoothing
  • Textures
    • Generated textures:
      • checkerboard (based on UVs or coordinates)
      • grid with variable line thickness (based on UVs or coordinates)
    • Image textures
  • Environment textures
    • Can be loaded from normal image files or from Radiance HDR files (loaded using hdr library)
  • Nishita sky model with a sun

To-do

  • Building scenes from files (probably JSON?)
  • More primitives and BVH trees for them
    • Constructive solid geometry
  • Volumetric rendering
  • Importance sampling
  • Spectral rendering

Usage

For now, scene has to be set in main.go file, I'm planning to add support for reading scenes from files in the future. This program has only one external dependency, it's hdr library, to install it, run the following command:

go get github.com/mdouchement/hdr

If you're not planning to use HDRI environment maps, remove the following line from the top of main.go file:

_ "github.com/mdouchement/hdr/codec/rgbe"

To run the program, type the following command:

go run .

Example renders

Some of the models downloaded from Morgan McGuire's Computer Graphics Archive. The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/). The gopher 3D model was made by Takuya Ueda (https://twitter.com/tenntenn). HDRI image used in one of the examples was downloaded from HDRI Haven. Textures used in one of the examples were downloaded from TextureCan and Texture Haven.

Mori knobs - rough copper, rough glass, glossy plastic

Mori knobs

A scene with Nishita sky model with sun (denoised in Blender)

Scene with sky

Render of a scene with materials with different level on roughness from my path tracer on the left and reference render from Blender on the right

Comparison

Four spheres with different textures and materials with HDRI environment map

HDRI example

Cornell box with mirror box

Cornell box

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].