# Commits

committed ceb6f4a

Part intros have more text.

• Participants
• Parent commits c42906f

# File Documents/Basics.xml

<title>The Basics</title>
</info>
<partintro>
-        <para>These tutorials involve the most basic operations for OpenGL. They deal with the
-            core of the OpenGL pipeline. These provide core information about how OpenGL works,
-            how its pipeline works, what the basic flow of information is within OpenGL.</para>
+        <para>Graphics programming can be a daunting task when starting out. The rendering pipeline
+            involves a large number of steps, each dealing with a variety of math operations. It has
+            stages that run actual programs to compute results for the next. Mastering this
+            pipeline, being able to use it as a tool to achieve a visual effect, is the essence of
+            being a graphics programmer.</para>
+        <para>This section of the book will introduce the basic math necessary for 3D graphics. It
+            will introduce the rendering pipeline as defined by OpenGL. And it will demonstrate how
+            data flows through the graphics pipeline.</para>
</partintro>
<xi:include href="Basics/tutorial 00.xml"/>
<xi:include href="Basics/tutorial 01.xml"/>

# File Documents/Basics/Tutorial 00.xml

<title>Introduction</title>
<para>Unlike most sections of this text, there is no source code or project associated with this
section. Here, we will be discussing vector math, graphical rendering theory, and OpenGL.
-        This serves as a primer to the rest of the tutorials.</para>
+        This serves as a primer to the rest of the book.</para>
<section>
<title>Vector Math</title>
-        <para>This set of tutorials assumes that you are familiar with algebra and geometry, but not
-            necessarily with vector math. Later tutorials will bring you up to speed on more complex
-            subjects, but this will introduce the basics of vector math.</para>
+        <para>This book assumes that you are familiar with algebra and geometry, but not necessarily
+            with vector math. Later material will bring you up to speed on more complex subjects,
+            but this will introduce the basics of vector math.</para>
<para>A <glossterm>vector</glossterm> can have many meanings, depending on whether we are
talking geometrically or numerically. In either case, vectors have dimensionality; this
represents the number of dimensions that the vector has. A two-dimensional vector is
see the faceted silhouette of the object. But they are always made of triangles.</para>
<note>
<para>Some rasterizers use planar quadrilaterals: four-sided objects, where all of the
-                lines lie in the same plane. One of the reasons that hardware-based rasterizers
+                points lie in the same plane. One of the reasons that hardware-based rasterizers
always use triangles is that all of the lines of a triangle are guaranteed to be in
the same plane. Knowing this makes the rasterization process less
complicated.</para>
of a triangle exists in its own clip space.</para>
<para>In clip space, the positive X direction is to the right, the positive Y direction
is up, and the positive Z direction is away from the viewer.</para>
-            <para>The process of transforming vertices into clip space is quite arbitrary. OpenGL
-                provides a lot of flexibility in this step. We will cover this step in detail
+            <para>The process of transforming vertex positions into clip space is quite arbitrary.
+                OpenGL provides a lot of flexibility in this step. We will cover this step in detail
throughout the tutorials.</para>
<para>Because clip space is the visible transformed version of the world, any triangles
that fall outside of this region are discarded. Any triangles that are partially
<note>
<title>Direct3D Note</title>
<para>Direct3D prefers to call this stage <quote>pixel processing</quote> or
-                        <quote>pixel shading</quote>. This is a misnomer, for several reasons.
-                    First, a pixel's final color can be composed of the results of multiple
-                    fragments generated by multiple <emphasis>samples</emphasis> within a single
-                    pixel. This is a common technique to remove jagged edges of triangles. Also, the
-                    fragment data has not been written to the image, so it is not a pixel yet.
-                    Indeed, the fragment processing step can conditionally prevent rendering of a
-                    fragment based on arbitrary computations. Thus a <quote>pixel</quote> in D3D
-                    parlance may never actually become a pixel at all.</para>
+                        <quote>pixel shading</quote>. This is a misnomer for several reasons. First,
+                    a pixel's final color can be composed of the results of multiple fragments
+                    generated by multiple <emphasis>samples</emphasis> within a single pixel. This
+                    is a common technique to remove jagged edges of triangles. Also, the fragment
+                    data has not been written to the image, so it is not a pixel yet. Indeed, the
+                    fragment processing step can conditionally prevent rendering of a fragment based
+                    on arbitrary computations. Thus a <quote>pixel</quote> in D3D parlance may never
+                    actually become a pixel at all.</para>
</note>
<formalpara>
<title>Fragment Writing</title>

# File Documents/Illumination.xml

objects have had a color that is entirely part of the mesh data, pulled from a
uniform variable, or computed in an arbitrary way. This makes all of our objects
look very flat and unrealistic.</para>
-        <para>Properly modeling the interaction between light and a surface is vital in creating
-            a convincing world. Lighting defines how we see and understand shapes to a large
-            degree. This is the reason why the objects we have used thus far look fairly flat. A
-            curved surface appears curved to us because of how the light plays over the surface.
-            The same goes for a flat surface. Without this visual hinting, surfaces appear flat
-            even when they are modeled with many triangles and yield a seemingly-curved
-            polygonal mesh.</para>
-        <para>A proper lighting model makes objects appear real. A poor or inconsistent lighting
-            model shows the virtual world to be the forgery that it is. The tutorials in this
-            section will introduce some light/surface models and explain how to implement
-            them.</para>
+        <para>Properly modeling the interaction between light and a surface is vital in creating a
+            convincing world. Lighting defines how we see and understand shapes to a large degree.
+            The lack of lighting is the reason why the objects we have used thus far look fairly
+            flat. A curved surface appears curved to us because of how the light plays over the
+            surface. The same goes for a flat surface.</para>
+        <para>Without this visual hinting, surfaces appear flat even when they are modeled with many
+            triangles and yield a seemingly-curved polygonal mesh. A proper lighting model makes
+            objects appear real. A poor or inconsistent lighting model shows the virtual world to be
+            the forgery that it is.</para>
+        <para>This section of the book will cover lighting, using a variety of light/surface
+            modelling techniques. It will cover dynamic range and linear colorspaces in lighting
+            equations. Also, it will cover techniques to use lighting to produce entirely fake
+            surfaces.</para>
</partintro>
<xi:include href="Illumination/tutorial 09.xml"/>
<xi:include href="Illumination/tutorial 10.xml"/>

# File Documents/Positioning.xml

<title>Positioning</title>
</info>
<partintro>
-        <para>These tutorials give the reader information about how objects are positioned in 3D
-            graphics and OpenGL. These deal with transforming the position of objects, as well
-            as doing what is necessary to make those objects appear as though they are in a
-            3-dimensional space.</para>
+        <para>Vertex positions are perhaps the most important part of a vertex's information. The
+            only data that a vertex shader must produce is the computation of a clip-space vertex
+            position; everything else is user-defined.</para>
+        <para>Computing proper vertex positions can turn an assemblage of triangles into something
+            that resembles a real object. This section of the book will detail how to make objects
+            move around, as well as presenting them as a three-dimensional object. It covers how to
+            manipulate vertex positions through a series of spaces, to allow for concepts like a
+            change of viewer orientation. And it covers how to position and orient objects
+            arbitrarily, to achieve many different kinds of movement and animation.</para>
</partintro>
<xi:include href="Positioning/tutorial 03.xml"/>
<xi:include href="Positioning/tutorial 04.xml"/>