starting the graphics book project
authorJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 22 Mar 2024 20:18:56 +0000 (22:18 +0200)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Fri, 22 Mar 2024 20:18:56 +0000 (22:18 +0200)
38 files changed:
.gitignore [new file with mode: 0644]
Makefile [new file with mode: 0644]
gfxbook.tex [new file with mode: 0644]
gl1/drawing.tex [new file with mode: 0644]
gl1/glext.tex [new file with mode: 0644]
gl1/hiddensurf.tex [new file with mode: 0644]
gl1/meshes.tex [new file with mode: 0644]
gl1/setup.tex [new file with mode: 0644]
gl1/shading.tex [new file with mode: 0644]
gl1/spaces.tex [new file with mode: 0644]
gl1/texmap.tex [new file with mode: 0644]
gl2/bump.tex [new file with mode: 0644]
gl2/deferred.tex [new file with mode: 0644]
gl2/envmap.tex [new file with mode: 0644]
gl2/fbo.tex [new file with mode: 0644]
gl2/gamma.tex [new file with mode: 0644]
gl2/pbr.tex [new file with mode: 0644]
gl2/psys.tex [new file with mode: 0644]
gl2/shaders.tex [new file with mode: 0644]
gl2/shadows.tex [new file with mode: 0644]
overview.tex [new file with mode: 0644]
rt1/accel.tex [new file with mode: 0644]
rt1/intro.tex [new file with mode: 0644]
rt1/isect.tex [new file with mode: 0644]
rt1/math.tex [new file with mode: 0644]
rt1/meshes.tex [new file with mode: 0644]
rt1/refract.tex [new file with mode: 0644]
rt1/shading.tex [new file with mode: 0644]
rt1/shadrefl.tex [new file with mode: 0644]
rt2/montecarlo.tex [new file with mode: 0644]
rt2/path.tex [new file with mode: 0644]
sw/clip.tex [new file with mode: 0644]
sw/pipeline.tex [new file with mode: 0644]
sw/polyfill.tex [new file with mode: 0644]
sw/proj.tex [new file with mode: 0644]
sw/texaffine.tex [new file with mode: 0644]
sw/texpersp.tex [new file with mode: 0644]
sw/wire.tex [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..88d3579
--- /dev/null
@@ -0,0 +1,5 @@
+*.swp
+*.pdf
+*.aux
+*.log
+*.toc
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..6cbb78f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,12 @@
+name = gfxbook
+pdf = $(name).pdf
+tex = $(name).tex
+
+$(pdf): $(tex)
+       xelatex $<
+
+.PHONY: clean
+clean:
+       rm -f $(pdf) $(name).toc
+       find . -name '*.aux' | xargs rm
+       find . -name '*.log' | xargs rm
diff --git a/gfxbook.tex b/gfxbook.tex
new file mode 100644 (file)
index 0000000..e9530f7
--- /dev/null
@@ -0,0 +1,68 @@
+\documentclass[a4paper]{book}
+
+\title{TODO}
+\author{John Tsiombikas}
+\date{}
+
+\begin{document}
+\maketitle
+
+\frontmatter
+\tableofcontents
+
+%\listoffigures
+%\listoftables
+
+\include{overview.tex}
+
+\mainmatter
+
+\part{Introduction to realtime rendering with OpenGL}
+\include{gl1/setup.tex}
+\include{gl1/spaces.tex}
+\include{gl1/hiddensurf.tex}
+\include{gl1/shading.tex}
+\include{gl1/texmap.tex}
+\include{gl1/meshes.tex}
+\include{gl1/drawing.tex}
+\include{gl1/glext.tex}
+% also hierarchical transformations somewhere?
+
+\part{Ray-tracing: an alternative rendering approach}
+\include{rt1/intro.tex}
+\include{rt1/math.tex}
+\include{rt1/isect.tex}
+\include{rt1/shading.tex}
+\include{rt1/shadrefl.tex}
+\include{rt1/refract.tex}
+\include{rt1/meshes.tex}
+\include{rt1/accel.tex}
+
+\part{Advanced realtime rendering with OpenGL}
+\include{gl2/shaders.tex}
+\include{gl2/envmap.tex}
+\include{gl2/bump.tex}
+\include{gl2/shadows.tex}
+\include{gl2/psys.tex}
+\include{gl2/pbr.tex}
+\include{gl2/fbo.tex}
+\include{gl2/gamma.tex}
+\include{gl2/deferred.tex}
+% more?
+
+\part{Physically-based ray-tracing}
+\include{rt2/montecarlo.tex}
+\include{rt2/path.tex}
+% TODO more
+
+\part{Software rendering pipeline from scratch}
+\include{sw/pipeline.tex}
+\include{sw/wire.tex}
+\include{sw/polyfill.tex}
+\include{sw/proj.tex}
+\include{sw/clip.tex}
+\include{sw/texaffine.tex}
+\include{sw/texpersp.tex}
+% TODO more
+
+\end{document}
diff --git a/gl1/drawing.tex b/gl1/drawing.tex
new file mode 100644 (file)
index 0000000..d185b1e
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Drawing performance}
diff --git a/gl1/glext.tex b/gl1/glext.tex
new file mode 100644 (file)
index 0000000..5c6e0df
--- /dev/null
@@ -0,0 +1 @@
+\chapter{OpenGL extensions}
diff --git a/gl1/hiddensurf.tex b/gl1/hiddensurf.tex
new file mode 100644 (file)
index 0000000..344b691
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Hidden surface removal}
diff --git a/gl1/meshes.tex b/gl1/meshes.tex
new file mode 100644 (file)
index 0000000..b3f2cad
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Meshes}
diff --git a/gl1/setup.tex b/gl1/setup.tex
new file mode 100644 (file)
index 0000000..707f395
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Setup \& hello world}
diff --git a/gl1/shading.tex b/gl1/shading.tex
new file mode 100644 (file)
index 0000000..42c9ff6
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Shading \& reflectance models}
diff --git a/gl1/spaces.tex b/gl1/spaces.tex
new file mode 100644 (file)
index 0000000..7940ef3
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Transformations \& coordinate systems}
diff --git a/gl1/texmap.tex b/gl1/texmap.tex
new file mode 100644 (file)
index 0000000..51d1b44
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Detail with texture mapping}
diff --git a/gl2/bump.tex b/gl2/bump.tex
new file mode 100644 (file)
index 0000000..1b80fd0
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Bump mapping}
diff --git a/gl2/deferred.tex b/gl2/deferred.tex
new file mode 100644 (file)
index 0000000..426cb40
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Deferred rendering}
diff --git a/gl2/envmap.tex b/gl2/envmap.tex
new file mode 100644 (file)
index 0000000..e76c00d
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Environment mapping}
diff --git a/gl2/fbo.tex b/gl2/fbo.tex
new file mode 100644 (file)
index 0000000..e370fb5
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Render to texture}
diff --git a/gl2/gamma.tex b/gl2/gamma.tex
new file mode 100644 (file)
index 0000000..367f115
--- /dev/null
@@ -0,0 +1,3 @@
+\chapter{Color spaces}
+
+% reminder: gamma correction, HDR, tone mapping
diff --git a/gl2/pbr.tex b/gl2/pbr.tex
new file mode 100644 (file)
index 0000000..d2b30e8
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Physically-based rendering}
diff --git a/gl2/psys.tex b/gl2/psys.tex
new file mode 100644 (file)
index 0000000..e91fe10
--- /dev/null
@@ -0,0 +1,2 @@
+\chapter{Particle systems}
+% possible tile: fuzzy phenomena .... blah blah
diff --git a/gl2/shaders.tex b/gl2/shaders.tex
new file mode 100644 (file)
index 0000000..dcaf7d0
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Programmable shaders}
diff --git a/gl2/shadows.tex b/gl2/shadows.tex
new file mode 100644 (file)
index 0000000..8b60410
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Shadows}
diff --git a/overview.tex b/overview.tex
new file mode 100644 (file)
index 0000000..165150a
--- /dev/null
@@ -0,0 +1,5 @@
+\chapter{Overview}
+
+\section{Goals \& Methods}
+
+Lorem ipsum foobar placeholder placeholder.
diff --git a/rt1/accel.tex b/rt1/accel.tex
new file mode 100644 (file)
index 0000000..39f7197
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Accelerating ray intersections}
diff --git a/rt1/intro.tex b/rt1/intro.tex
new file mode 100644 (file)
index 0000000..a4b15ee
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Introduction to ray-tracing}
diff --git a/rt1/isect.tex b/rt1/isect.tex
new file mode 100644 (file)
index 0000000..c8d5580
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Intersection testing: spheres \& planes}
diff --git a/rt1/math.tex b/rt1/math.tex
new file mode 100644 (file)
index 0000000..28192fc
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Mathematics of computer graphics}
diff --git a/rt1/meshes.tex b/rt1/meshes.tex
new file mode 100644 (file)
index 0000000..a877d52
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Intersection testing: polygon meshes}
diff --git a/rt1/refract.tex b/rt1/refract.tex
new file mode 100644 (file)
index 0000000..d39da05
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Refraction}
diff --git a/rt1/shading.tex b/rt1/shading.tex
new file mode 100644 (file)
index 0000000..ce21d14
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Shading \& direct illumination}
diff --git a/rt1/shadrefl.tex b/rt1/shadrefl.tex
new file mode 100644 (file)
index 0000000..4631e12
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Shadows \& reflections}
diff --git a/rt2/montecarlo.tex b/rt2/montecarlo.tex
new file mode 100644 (file)
index 0000000..628b629
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Monte-carlo methods}
diff --git a/rt2/path.tex b/rt2/path.tex
new file mode 100644 (file)
index 0000000..e9fb23f
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Path tracing}
diff --git a/sw/clip.tex b/sw/clip.tex
new file mode 100644 (file)
index 0000000..a2acba4
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Polygon clipping}
diff --git a/sw/pipeline.tex b/sw/pipeline.tex
new file mode 100644 (file)
index 0000000..d2d4dbf
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Implementing the rendering pipeline}
diff --git a/sw/polyfill.tex b/sw/polyfill.tex
new file mode 100644 (file)
index 0000000..066a411
--- /dev/null
@@ -0,0 +1,3 @@
+\chapter{Polygon filling}
+
+% reminder: flat/gouraud, texmapping is later
diff --git a/sw/proj.tex b/sw/proj.tex
new file mode 100644 (file)
index 0000000..c918c94
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Projection}
diff --git a/sw/texaffine.tex b/sw/texaffine.tex
new file mode 100644 (file)
index 0000000..5b8f9ad
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Affine texture mapping}
diff --git a/sw/texpersp.tex b/sw/texpersp.tex
new file mode 100644 (file)
index 0000000..c4ed28a
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Perspective-correct texture mapping}
diff --git a/sw/wire.tex b/sw/wire.tex
new file mode 100644 (file)
index 0000000..d458de4
--- /dev/null
@@ -0,0 +1 @@
+\chapter{Line drawing \& wireframe rendering}