Giter VIP home page Giter VIP logo

pbr's Introduction

pbr: a Physically-Based Renderer in Go

Package pbr implements Physically-Based Rendering with a Monte Carlo path tracer. [ Documentation ] [ Github ]

Render

  • Unbiased Monte-Carlo integration
  • Adaptive sampling
  • Russian roulette
  • Parametric shapes (spheres, cubes)
  • Transformation matrices (translate, rotate, scale)
  • Physically-based materials
    • Fresnel reflection, transmission, absorption, diffusion
    • Color, refractive indices, gloss, transparency, separate fresnel channels, metals
  • Arbitrary light sources ('everything is a light')
  • Environment maps
  • Physically-based cameras
    • Sensor, aperture, focus, depth-of-field
  • Supersampled anti-aliasing
  • Fully concurrent with a sequential API

Hello, world

$ go get -u github.com/hunterloftis/pbr/pbr
$ cd $GOPATH/src/github.com/hunterloftis/pbr
$ ./hello

Hello, world render

func main() {
	scene := pbr.EmptyScene()
	camera := pbr.NewCamera(960, 540)
	sampler := pbr.NewSampler(camera, scene)
	renderer := pbr.NewRenderer(sampler)

	scene.SetSky(pbr.Vector3{256, 256, 256}, pbr.Vector3{})
	scene.Add(pbr.UnitSphere(pbr.Plastic(1, 0, 0, 1)))

	for sampler.PerPixel() < 200 {
		sampler.Sample()
		fmt.Printf("\r%.1f samples / pixel", sampler.PerPixel())
	}
	pbr.WritePNG("hello.png", renderer.Rgb())
}

Other examples

$ ./cubes
$ ./render

Testing

$ go test ./pbr

pbr's People

Contributors

17twenty avatar hunterloftis avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.