-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
439 lines (333 loc) · 13.5 KB
/
index.html
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
<meta charset="utf-8" lang="en"><style class="fallback">body{visibility:hidden; max-width: 1000px}</style>
<!-- ============= Google Analytics ============== -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-120007331-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-120007331-1');
</script>
<title>Edoardo Dominici</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab&display=swap" rel="stylesheet">
<style type="text/css">
body {
max-width: 1000px;
font-family: 'Roboto Slab', serif;
font-size: 14px;
}
.md .nonumberh2 {
border-bottom: 0px;
/*margin-top: 0px;
margin-bottom: 0px;
padding-top: 0px;*/
}
.md .nonumberh3 {
border-top: 0px;
padding-top: 0px;
/*margin-top: 0px;
margin-bottom: 0px;
padding-top: 0px;*/
}
a {
font-size: 15px;
font-style: bold;
}
.my_image {
width: 25%;
height:auto;
float:left;
padding-right: 15px;
padding-top: 30px;
}
.my_text {
width: 70%;
height:auto;
float:left;
}
.pub_row {
width:100%;
//height:auto;
}
.pub_row:after {
content: "";
display: table;
clear: both;
}
.pub_image {
width: 15%;
height:auto;
float:left;
margin-right: 15px;
padding-top: 0px;
border-style: solid;
border: 0;
}
.pub_image img {
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}
.pub_text {
width: 80%;
height:auto;
float:left;
}
.code_row {
width:100%;
//height:auto;
}
.code_row:after {
content: "";
display: table;
clear: both;
}
.code_image {
width: 15%;
height:auto;
float:left;
margin-right: 15px;
padding-top: 0px;
border-style: solid;
border: 0;
}
.code_image img {
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}
.code_text {
width: 80%;
height:auto;
float:left;
}
.game_row {
width:100%;
//height:auto;
}
.game_row:after {
content: "";
display: table;
clear: both;
}
.game_image {
width: 30%;
height:auto;
float:left;
margin-right: 15px;
padding-top: 0px;
border-style: solid;
border: 0;
}
.game_image img {
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}
.game_text {
width: 65%;
height:auto;
float:left;
}
</style>
<script type="text/javascript">
function make_me_smile(my_image)
{
my_image.src = 'figs/me_smile.jpeg';
}
function make_me_sad(my_image)
{
my_image.src = 'figs/me_neutral.jpeg'
}
</script>
<!-- It's me! Edoardo! -->
<div>
<div class=my_image><img src="figs/me_neutral.jpeg" border="2" onmouseover="make_me_smile(this)" onmouseout="make_me_sad(this)"></div>
<div class=my_text>
(##) Edoardo Alberto Dominici
email: edoaramis at gmail.com | [Linkedin](https://www.linkedin.com/in/edoardo-a-dominici-63186518b/) | [Resume](downloads/resume.pdf) | [Google Scholar](https://scholar.google.com/citations?user=dZPyoSEAAAAJ&hl=en&oi=ao) | [GitHub](https://github.com/dedoardo)
I am a Rendering Research Engineer at Huawei in Zurich. More stuff to come, stay tuned (:
I have worked on production path tracers at Animal Logic in Sydney (Glimpse), and at Tangent Animation in Toronto (custom fork of Blender Cycles nicknamed Blackbird).
I obtained a Master's from the University of British Columbia and am generally interested in efficient algorithms for image processing and synthesis.<br/>
During my MSc I worked on perception-driven vectorization algorithms under the supervision of [dr. Alla Sheffer](http://cs.ubc.ca/~sheffa) where I also had the amazing opportunity of having a voice in the new video game programming course.
My BSc thesis was on WebGL image retargeting under the supervision of [dr. Marco Tarini](http://tarini.di.unimi.it/). <br/>
<!--I enjoy multiplayer games in my spare time, currently trying to get past [Diamond 3](figs/apex.png) in Apex Legends. I was a 2.4k resto druid in a previous life.-->
</div>
</div>
<br>
<!-- Work experience -->
(##) Work Experience
2023 July - Present <br/>
**Rendering Research Engineer, [Huawei Technologies](https://www.huawei.com/ch-en/)**<br/>
2021 November - July 2023<br/>
**R&D Rendering - Software Engineer, [Animal Logic](https://animallogic.com/)** <br/>
2021 January - 2021 October<br/>
**Rendering Engineer, [Tangent Animation](https://www.linkedin.com/company/tangent-animation)** <br/>
(##) Publications
<div class=pub_row>
<div class=pub_image>
<img src="figs/pubs/dylf_square.gif">
</div>
<div class=code_text>
Real-time Neural Rendering of Dynamic Light Fields<br/>
*Eurographics 2024, Computer Graphics Forum *<br/>
Arno Coomans, **Edoardo A. Dominici**, Christian Döring, Joerg H. Mueller, Jozef Hladky, Markus Steinberger <br/>
[paper](https://arnocoomans.be/data/eg2024_paper.pdf)
</div>
</div>
<div class=pub_row>
<div class=pub_image>
<img src="figs/focus_range.jpg">
</div>
<div class=code_text>
Focus Range: Production Ray Tracing of Depth of Field<br/>
*SIGGRAPH ASIA 2023 Technical Communications*<br/>
**Edoardo A. Dominici**, Emanuel Schrade, Basile Fraboni, Luke Emrose, Curtis Black<br/>
[paper](https://dedoardo.github.io/downloads/focus_range.pdf)
</div>
</div>
<div class=pub_row>
<div class=pub_image>
<img src="figs/pubs/video_decomp_2020_1.gif">
<img src="figs/pubs/video_decomp_2020_0.gif">
</div>
<div class=code_text>
PROVIDE: A Probabilistic Framework for Unsupervised Video Decomposition<br/>
*Uncertainty in Artificial Intelligence 2021, PMLR 161:2019-2028, 2021.*<br/>
Polina Zablotskaia, **Edoardo A. Dominici**, Leonid Sigal, Andreas Lehrmann<br/>
[project](https://proceedings.mlr.press/v161/zablotskaia21a.html)
</div>
</div>
<div class=pub_row>
<div class=pub_image><img src="figs/pubs/polyfit_2020.png"></div>
<div class=code_text>
PolyFit: Perception-Aligned Vectorization of Raster Clip-Art via Intermediate Polygonal Fitting<br/>
*SIGGRAPH 2020, ACM Transactions on Graphics 39(4), DOI: 10.1145/3386569.3392401*<br/>
**Edoardo A. Dominici**, Nico Schertler, Jonathan Griffin, Shayan Hoshyari, Leonid Sigal, Alla Sheffer<br/>
[project](http://www.cs.ubc.ca/labs/imager/tr/2020/ClipArtVectorization) [code](https://github.com/dedoardo/polyfit)
</div>
</div>
<div class=pub_row>
<div class=pub_image><img src="figs/pubs/vectorization_2018.png"></div>
<div class=code_text>
Perception-Driven Semi-Structured Boundary Vectorization<br/>
*SIGGRAPH 2018, ACM Transactions on Graphics 37(4), DOI: 10.1145/3197517.3201312*<br/>
Shayan Hoshyari, **Edoardo A. Dominici**, Alla Sheffer, Nathan Carr, Zhaowen Wang, Duygu Ceylan, I-Chao Shen<br/>
[project](http://www.cs.ubc.ca/labs/imager/tr/2018/PerceptionDrivenVectorization/) [demo](http://www.cs.ubc.ca/labs/imager/tr/2018/PerceptionDrivenVectorization/executable.zip)
</div>
</div>
<!-- Pieces of paper -->
(##) Education
2017-2020 - MSc University of British Columbia<br/>
Thesis: [Perception-Aligned Vectorization of Raster Clip-Art](https://open.library.ubc.ca/cIRcle/collections/ubctheses/24/items/1.0389752)<br/>
Teaching Assistant:
- CPSC314: Computer Graphics (Fall '17)<br/>
- CPSC436D: Video Game Programming (Spring '18, Spring '19)<br/>
2014-2017 - BSc University of Pisa (Erasmus+ University of Stirling)<br/>
Thesis: [Practical Image Retargeting](downloads/bsc_thesis.pdf)
<!-- (more?) Meaningful pieces of paper -->
<!-- Virtual pieces of paper -->
(##) Code
<div class=code_row>
<div class=code_image><img src="figs/code/polyfit.png"></div>
<div class=code_text>
(###) PolyFit - C++14, Eigen
Vectorization research code designed for structured low-resolution clip-art. Works by first computing a perceptually optimal polygonal approximation through a shortest cycle formulation on the raster boundary. This approximation is used to guide the curve fitting and model the supervised primitive classification.
[Github](https://github.com/dedoardo/polyfit)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/subdivide.png"></div>
<div class=code_text>
(###) Loop, Catmull-clark subdivision surfaces - C99, AVX-256
Implementation of surface subdivision schemes for triangular (Loop) and quadrilateral (Catmull-Clark) manifold meshes. Experimenting with SoA layouts and SIMD intrinsics.
[Code](downloads/subdivide.zip)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/terra.JPG"></div>
<div class=code_text>
(###) Monte Carlo path tracer - C99
Unidirectional Monte Carlo path tracer supporting textures, multiple importance sampling, BSDFS (Lambertian, specular, glass) and multi-threaded rendering.
[Github](https://github.com/dedoardo/terra)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/tiled_renderer.png"></div>
<div class=code_text>
(###) Real-time renderer
Forward renderer supporting many lights through screen-space buckets, HDR pipeline with luminosity downsampling and tone mapping, shadows with PCF filtering.
[Github](https://github.com/dedoardo/tiled-renderer)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/motion-graph.gif"></div>
<div class=code_text>
(###) Motion Graphs - Python, OpenGL
Implementation of Motion Graphs [Kovar et al '02]. Capable of loading a BVH motion sequence, correctly rendering it, identify similar motion segments and generate keyframes smoothly interpolating the two segment endpoints.<br/>
(The download is big as it includes part of the BVH CMU dataset)
[Code](downloads/motion-viewer.zip)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/retarget_solve.png"></div>
<div class=code_text>
(###) Interior-point solver for constrained quadratic programming - C++, Eigen
Finds the minimizer of a quadratic function subject to equality and inequality constraints: Newton's method is applied to the KKT conditions to obtain a search direction which is then refined through Mehrotra predictor-corrector logic. I apply it to the relatively simple retargeting problem used in my BSc thesis.
[Code](downloads/retarget-solver.zip) [Course report](downloads/retarget-solver-report.pdf)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/retarget.png"></div>
<div class=code_text>
(###) WebGL image retargeting - C++, Javascript, WebGL
Stores sparse and compact retargeting solutions as EXIF metadata in JPEG images. A client-side scripts extracts the metadata replacing the image with a WebGL canvas which interpolates the closest solutions to retarget the image to the desired resolution (inferred from its style).
[Github](https://github.com/dedoardo/retarget)
</div>
</div>
<div class=code_row>
<div class=code_image><img src="figs/code/salmon_game.JPG"></div>
<div class=code_text>
(###) OpenGL template for video game programming course - C++, OpenGL, GLFW
Skeleton game for UBC's game programming course, used as a first building block for teams games'. You are a majestic salmon on a quest for delicious fish but need to dodge deadly turtles in an impetuous sea.
[Code](downloads/template_salmon.zip)
</div>
</div>
(##) Hackatons
<div class=game_row>
<div class=game_image>
<img src="figs/ggj/soundcube.gif">
</div>
<div class=game_text>
I participated in coding events during high-school and my undergrad studies with various degrees of success:
- [Heuristic web scraper](https://github.com/dedoardo/web2api) Python - Hackcortona 2016 (3rd)
- [SoundCube: 3D sound memory puzzle](downloads/sound_cube.zip) C++, D3D11 - Internet Festival 2015 (2nd)
- [DreamSeeker: 2D maze platformer](https://itch.io/jam/IVgamejam/rate/13476) C++, D3D11 - Indie Vault Game Jam 2015
- [Er Core Che Core: 2D sidescroller](http://2013.globalgamejam.org/2013/er-core-che-core) C++, SFML - Global Game Jam 2013
The D3D11 games were built on top of a [custom "engine"](downloads/stegosaurus.zip).
</div>
</div>
<div class=game_row>
<div class=game_image><img src="figs/ggj/dreamseeker.gif"></div>
<div class=game_image><img src="figs/ggj/rome_2013.png"></div>
</div>
(##) Older code
<div class=game_row>
<div class=game_image>
<img src="figs/code/vector-shooter.gif">
</div>
<div class=game_text>
Some very old projects:
- [Python to HLSL/GLSL transpiler](https://github.com/dedoardo/pysl) - Python, HLSL, GLSL
- [Live reloading of C code through DLL hotswapping](https://github.com/dedoardo/scriptosaurus) - C99 (2015) <br/>
- [Vector Shooter](https://sourceforge.net/projects/vshooter/files/) - C++, D3D11 (2012) <br/>
- [DarkSpark: 2D top-down shooter](http://www.pygame.org/project-Dark-Spark-2388-4046.html) - Python, Pygame (2012)
</div>
</div>
<div class=game_row>
<div class=game_image><img src="figs/code/darkspark.gif"></div>
</div>
*The achievement I am most proud of is [this 2012 (simple) snake game](https://web.archive.org/web/20131117180821/http://pygame.org/project/2447/) which has received 3k+ downloads. Observe the aggressive marketing attempt, despite being probably a bad example on how to write a snake clone. *
<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="https://morgan3d.github.io/markdeep/latest/markdeep.min.js" charset="utf-8"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>