or
Neil Toronto
RacketCon 2014
3D Engines
High-level abstraction layer (usually a library)
between program and GPU
3D Engines
High-level abstraction layer (usually a library)
between program and GPU
Program
3D Engine
OpenGL /
Direct3D
GPU
3D Engines
High-level abstraction layer (usually a library)
between program and GPU
Program
3D Engine
OpenGL /
Direct3D
GPU
3D Engines
High-level abstraction layer (usually a library)
between program and GPU
Program
3D Engine
OpenGL /
Direct3D
GPU
3D Engine
Commands
Scene Database
(add-shape! ...)
(move-shape! ...)
(add-light! ...)
(draw-scene!)
Algorithms
High-Powered
Blender
10
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
11
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
12
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
13
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
14
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
15
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
16
Scene Databases
Scene database: a data structure that makes
spatial queries (e.g. point-inside) efficient
17
Computations
(make-shape ...)
(make-light ...)
(scene-union ...)
(scene-transform ...)
(draw-scene! ...)
3D Engine
Combinators
Algorithms
High-Powered
Blender
18
19
20
21
22
23
24
25
26
Demos
27
Design Goals
Make it fast
May require users to tweak, cache, give hints
Makes the high-powered blender unsafe and
impure
28
Design Goals
Make it fast
May require users to tweak, cache, give hints
Makes the high-powered blender unsafe and
impure
Use and allow modern rendering techniques (i.e.
make it cool)
29
Design Goals
Make it fast
May require users to tweak, cache, give hints
Makes the high-powered blender unsafe and
impure
Use and allow modern rendering techniques (i.e.
make it cool)
Minimize confusing surprises
30
Design Goals
Make it fast
May require users to tweak, cache, give hints
Makes the high-powered blender unsafe and
impure
Use and allow modern rendering techniques (i.e.
make it cool)
Minimize confusing surprises
Last two goals are often complementary
31
32
33
34
35
36
37
38
39
40
41
* http://tulrich.com/geekstuff/log_depth_buffer.txt
42
1 millimeter away
43
Multi-Pass Rendering
44
Multi-Pass Rendering
Material: draw shape normals
45
Multi-Pass Rendering
Material: draw shape normals
46
Multi-Pass Rendering
Material: draw shape normals
47
Multi-Pass Rendering
Material: draw shape normals
48
Multi-Pass Rendering
Material: draw shape normals
49
Multi-Pass Rendering
Material: draw shape normals
51
52
53
54
Now What?
Make pict3d work on the three major platforms
55
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
56
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
Game canvases and big-bang-3d (very close)
57
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
Game canvases and big-bang-3d (very close)
Other shapes and shape combinators, textures,
user GPU programs
58
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
Game canvases and big-bang-3d (very close)
Other shapes and shape combinators, textures,
user GPU programs
More modern techniques: shadow mapping,
screen-space ambient occlusion, dynamic
occlusion culling
59
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
Game canvases and big-bang-3d (very close)
Other shapes and shape combinators, textures,
user GPU programs
More modern techniques: shadow mapping,
screen-space ambient occlusion, dynamic
occlusion culling
Cairo rendering (for plot3d output)
60
Now What?
Make pict3d work on the three major platforms
Make pict3d work in untyped Racket
Game canvases and big-bang-3d (very close)
Other shapes and shape combinators, textures,
user GPU programs
More modern techniques: shadow mapping,
screen-space ambient occlusion, dynamic
occlusion culling
Cairo rendering (for plot3d output)
Faster faster faster faster faster
61
Install It Today!
Let pict3d spoon-feed the giant baby for you