# Commits

committed ceb6f4a

Part intros have more text.

# 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"/>`

# 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>`

# 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"/>`

# 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"/>`
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.