-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
210 lines (162 loc) · 4.67 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
=======================
CORONA-13
=======================
this is a plain c testbed for global illumination research code, which has been
used for our projects at the computer graphics group at KIT (https://cg.ivd.kit.edu).
=======================
QUICKSTART:
=======================
$ cp arch.example arch
$ cp config.mk.example config.mk
$ git fetch
$ make
$ ./corona regression/0010_pt/test.nra2
keyboard control:
[;.] camera speed -/+ (dvorak)
[ye] camera speed -/+ (qwertz)
[12] exposure time
[34] f-stop
[56] focal len
[78] iso value
[c] save camera position
[l] load camera position
[p] print screenshot
[h] toggle display
quake movement, use left mouse button to turn
=======================
REQUIREMENTS:
=======================
m c dl pthread
optional:
GL SDL OpenVDB X11
=======================
FEATURES:
=======================
ray tracing primitives:
- triangles, quads, cylinders/lines, spheres/points, distance field shells
acceleration structures:
- grid
- qbvh + shadow cache
- qbvh + motion blur
- qbvh + motion blur + parallel build
camera models:
- thinlens + chromatic aberration
- polynomial optics lens
reflection models: programmable shaders with loadable modules:
- dielectric (rough/specular)
- metal (rough/specular)
- heterogeneous medium/openvdb
- homogeneous medium
- texture maps (diffuse, glossy, specular, emission, roughness)
- may be combined in any way (or: write your own)
point sets used for integration:
- simple and fast mersenne twister (SSE)
- halton points
- kelemen metropolis sampling
- veach metropolis sampling:
- large steps/bidirectional mutation
- multi chain
- lens perturbation
- vertex area sampling
- half vector space perturbation
- combined hslt
render modes:
- visibility and aov only
- timing (rdtsc shading)
- global illumination
- gradient domain sampling
- energy redistribution path tracing
sampling methods:
- pt
- ptdl
- lt
- ptlt
- bdpt
- bdpt1
- ppm
- ptmnee
colour management:
- aces
- ergb (smits' srgb adapted to illuminant E)
- rec709
- srgb
- adobergb
- xyz
spectral upsampling:
- smits
- grid
threading:
- pinned pthread pool
- affinity file with list of cores
frontend:
- null: commandline, screenshots
- xorg: x11
- gl : opengl backend
- net : mpeg stream over tcp
screenshots:
- pfm : portable float maps
tools:
- convert pfm2exr, pfm2hdr, exr2dng
- dbor firefly removal
- obj2geo
- netrender viewer
- turntable camera creation
- bsdf battle tester
regression tests
=======================
BUILD AND INSTALL:
=======================
corona-13 follows a compile-your-own build strategy. rather than allowing a lot
of run-time options, most of the flexible modules are fixed at compile time.
you can edit these settings in the file config.mk:
$ cp config.mk.example config.mk
$ cp arch.example arch
and pick the modules you like best. also have a look at the file arch to suit
your hardware.
$ make
mpeg stream rendering:
corona features a render server interface through corona-net, built with
MOD_display=network. to use this, start corona as usual on the server. corona
will block and wait for a client connection. you can initiate one by typing
$ make corona-netrender -C tools/
$ tools/corona-netrender <ip-address or hostname>
client side. maybe you need to tunnel it through a firewall by using ssh before
launching corona-netrender:
$ ssh -f hostname -L 8090:hostname:8090 -N
enjoy!
=======================
ACKNOWLEDGEMENTS:
=======================
contributors:
neospark, daylight model, photon kd,
endless ideas (sky quad sampling, qbvh)
(GPLv3)
leo, halton points
john, pthread-pool
=======================
CHANGES:
=======================
13-th generation rt
(corona-13) : path space api, new geo backend, new threading backend, veach metropolis.
(corona-14) : simulated shading/ray tracing reordering
(corona-12) :
(corona-11) :
(corona-10)
`real-time rayes' : same on GPU with motion blur
(corona-9)
`rayes' : reyes style ray tracing with reordering
(corona-8) : procedural geo voxel octree ray tracing
(corona-7) : triangle mesh voxelized and ray traced
(corona-6)
`radiata' : spectral rendering!
(corona 5)
`riot' : ray i/o tracer, optimized for SIMD and FPGA
(corona 4)
`mod-rt' : c99, cp inheritance, unbiased light transport: pt, ptdl, lt
(corona 3)
`int-rt' : c99, cpp inheritance, lafortune-style bdpt, integer arith
(corona 2)
`spiessert': C++ inheritance, ray packets, boring state-of-the-art:
bih, kd[-ondemand] (parallel)
(corona 1)
`rearview' : npr, realtime, voxel based