https://github.com/rouming/yart
Yet Another Ray Tracing renderer (boosted by OpenCL)
https://github.com/rouming/yart
opencl raytracing raytracing-render renderer
Last synced: 3 months ago
JSON representation
Yet Another Ray Tracing renderer (boosted by OpenCL)
- Host: GitHub
- URL: https://github.com/rouming/yart
- Owner: rouming
- Created: 2020-12-24T21:09:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-12-29T20:43:06.000Z (over 2 years ago)
- Last Synced: 2025-01-04T14:14:36.420Z (5 months ago)
- Topics: opencl, raytracing, raytracing-render, renderer
- Language: GLSL
- Homepage:
- Size: 3.25 MB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# YART
YART is a just Yet Another Ray Tracer renderer boosted by OpenCL
based on lessons from http://scratchapixel.com and http://pbr-book.orgThe main goal is nothing but to learn ray tracing algorithms and
implement C code which can be compiled on host and simultaneously
compiled and loaded by OpenCL framework.# HOWTO
Compilation is very simple: do just make.
By default YART loads itself (yart.c source) as OpenCL program and the
whole ray tracing is executed on GPU. In order to disable OpenCL
accelaration --no-opencl option can be provided.When the scene is loaded and the window is opened you can observe with
the mouse and walk with WASD keys.## Example 1

```
# Four different spheres on a plane under a distant light
# (inspired by scratchapixel.com)
$ ./yart --object type=sphere,radius=0.3,pos=-3,1,0,Ks=0.05 \
--object type=sphere,radius=0.5,pos=-2,1,0,Ks=0.08 \
--object type=sphere,radius=0.7,pos=-0.5,1,0,Ks=0.1 \
--object type=sphere,radius=0.9,pos=1.4,1,0,Ks=0.4 \
\
--object type=mesh,file=./models/plane.geo \
\
--light dir=-0.4,-0.8,0.3,type=distant \
\
--backcolor 3cacd7 \
--pitch -10 --yaw -55 --pos 10,3,7
```## Example 2

```
# One sphere under three different point lights
$ ./yart --object type=sphere,radius=0.8,pos=0,1,0,Ks=0.05 \
\
--object type=mesh,file=./models/plane.geo \
\
--light pos=-2,2,1,type=point,intensity=200,color=ff0000 \
--light pos=0,4,1,type=point,intensity=190,color=00ff00 \
--light pos=2,5,1,type=point,intensity=420,color=0000ff \
\
--backcolor 3cacd7 \
--pos=0,1,8
```## Example 3

```
# Four glasses of water (inspired by scratchapixel.com)
$ ./yart --object type=mesh,file=./models/glasses.geo,material=reflect-refract,ior=1.3,smooth-shading=1,scale=0.1 \
--object type=mesh,file=./models/backdrop1.geo,albedo=0.18,smooth-shading=1,scale=0.1,pattern=line[scale=0.06,angle=45] \
\
--light type=distant,dir=0,-1,-0.5,intensity=1.6 \
\
--pos 0,3,8 --pitch -13 --backcolor 3cacd7
```## Example 4

```
# Just a cow (model taken from scratchapixel.com)
./yart --object type=mesh,file=./models/cow.obj,smooth-shading=0 \
\
--light dir=-1,0,-1,type=distant \
\
--pos 29,23,38 --pitch -19 --yaw -37.5 \
--fov 27 --backcolor 3cacd7
```## Example 5

```
# Smooth-shaded cyborg (model taken from learnopengl.com)
./yart --object type=mesh,file=./models/nanosuit.obj,smooth-shading=1 \
\
--light dir=-1,0,-1,type=distant \
\
--pos 29,23,38 --pitch -19 --yaw -37.5
```## Example 6

```
# One glass on a reflective surface (inspired by scratchapixel.com)
./yart --object type=mesh,file=./models/cylinder.geo,material=reflect-refract,ior=1.3,smooth-shading=1,scale=0.1,0.3,0.1 \
--object type=mesh,file=./models/backdrop1.geo,albedo=0.18,r=0.1,smooth-shading=1,scale=0.1,pattern=check[scale=0.1,angle=45] \
\
--light type=distant,dir=0,-1,-0.5,intensity=1.6 \
\
--pos 0,3,8 --pitch -13 --backcolor 3cacd7
```## Example 7

```
# Glass of water with a pen (inspired by scratchapixel.com)
./yart --object type=mesh,file=./models/backdrop.geo,smooth-shading=1,pattern=line[scale=0.1,angle=-45] \
--object type=mesh,file=./models/cylinder.geo,smooth-shading=1,material=reflect-refract,ior=1.5 \
--object type=mesh,file=./models/pen.geo \
\
--light type=distant,dir=-0.5,-1,0.5,intensity=2 \
\
--pos 7,22,-30 --pitch -27 --yaw -164 --backcolor 3cacd7
```## Example 8

```
# Red ball, check plane under a point light
./yart --object type=sphere,radius=0.3,pos=0,0.3,0,Ks=0.1,Kd=0.9,0.01,0.01 \
--object type=plane,Ks=0.05,Kd=0.8,pattern=check \
\
--light pos=1,2,0,type=point,intensity=400 \
\
--pitch -20 --yaw -5 --pos 0,2,5
```## Example 9

```
# Two metal shiny balls under four point lights on a reflective surface
./yart --object type=plane,Ks=0.05,Kd=0.8,r=0.4,pattern=check \
--object type=sphere,radius=1,pos=0,1,0,Ks=0.5,Kd=0.6,r=0.2,n=500 \
--object type=sphere,radius=0.5,pos=-1,0.5,-1.5,Ks=0.5,Kd=0.6,r=0.2,n=500 \
\
--light type=point,pos=-2,2.5,0,intensity=300,color=b2994c \
--light type=point,pos=1.5,2.5,-1.5,intensity=200,color=727f99 \
--light type=point,pos=1.5,2.5,1.5,intensity=100,color=b2ccb2 \
--light type=point,pos=0,3.5,0,intensity=300,color=4c4c4c \
\
--pitch -16 --yaw -91 --pos 8,3,-1
```