Jason McKesson avatar Jason McKesson committed 5c0b0e1

Added tutorial 5 docs. Minor fixes to others.

Comments (0)

Files changed (7)

Documents/Basics/Tutorial 00.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <?oxygen RNGSchema="http://docbook.org/xml/5.0/rng/docbookxi.rng" type="xml"?>
 <?oxygen SCHSchema="http://docbook.org/xml/5.0/rng/docbookxi.rng"?>
-<chapter xml:id="tut_00" xmlns="http://docbook.org/ns/docbook"
+<article xml:id="tut_00" xmlns="http://docbook.org/ns/docbook"
     xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink"
     version="5.0">
     <title>Introduction</title>
                 </mediaobject>
             </figure>
             <para>To make it easier to use this, OpenGL also offers the guarantee that if you pass
-                the same input vertex data through the vertex processing stage, you will get
-                identical output; this is called the <glossterm>invariance guarantee</glossterm>. So
-                the onus is on the user to use the same input vertices if you want to ensure
-                gap-less scan conversion.</para>
+                the same input vertex data through same vertex processor, you will get identical
+                output; this is called the <glossterm>invariance guarantee</glossterm>. So the onus
+                is on the user to use the same input vertices if you want to ensure gap-less scan
+                conversion.</para>
             <para>Scan conversion is an inherently 2D operation. This process only uses the X and Y
                 position of the triangle in window coordinates to determine which fragments to
                 generate. The Z value is not forgotten, but it is directly part of the actual
             </glossdef>
         </glossentry>
     </glossary>
-</chapter>
+</article>

Documents/Outline.xml

                     <para>Optimization.</para>
                 </glossdef>
             </glossentry>
+            <glossentry>
+                <glossterm>Invariance</glossterm>
+                <glossdef>
+                    <para>Using the <quote>invariant</quote> qualifier to ensure invariance across
+                        shader programs.</para>
+                </glossdef>
+            </glossentry>
         </glosslist>
     </section>
 </article>

Documents/Positioning/Tutorial 03.xml

     <section>
         <title>Moving the Vertices</title>
         <para>The simplest way one might think to move a triangle or other object around is to
-            simply modify the vertex position data directly. From the previous tutorial, we learned
+            simply modify the vertex position data directly. From previous tutorials, we learned
             that the vertex data is stored in a buffer object. So the task is to modify the vertex
             data in the buffer object. This is what <filename>cpuPositionOffset.cpp</filename>
             does.</para>
     <section>
         <title>A Better Way</title>
         <para>This is fine for a 3-vertex example. But imagine a scene involving millions of
-            vertices (and no, that's not an exaggeration for high-end games). Moving objects this
-            way means having to copy millions of vertices from the original vertex data, add an
+            vertices (and no, that's not an exaggeration for high-end applications). Moving objects
+            this way means having to copy millions of vertices from the original vertex data, add an
             offset to each of them, and then upload that data to an OpenGL buffer object. And all of
             that is <emphasis>before</emphasis> rendering. Clearly there must be a better way; games
             can't possibly do this every frame and still hold decent framerates.</para>
             floating-point math. The question is this: what is the cost of doing more complex
             operations in a vertex shader vs. how often those operations need to be done.</para>
         <para>The second vertex shader we use, the one that computes the offset itself, does a lot
-            of complex map. Sine and cosine values are <emphasis>not</emphasis> fast to compute.
-            They require quite a few computations to calculate. And since the offset itself doesn't
-            change for each vertex, it would be best to compute the offset on the CPU and pass the
-            offset as a uniform value.</para>
+            of complex map. Sine and cosine values are not particularly fast to compute. They
+            require quite a few computations to calculate. And since the offset itself doesn't
+            change for each vertex in a single rendering call, performance-wise it would be best to
+            compute the offset on the CPU and pass the offset as a uniform value.</para>
         <para>And typically, that is how rendering is done much of the time. Vertex shaders are
             given transformation values that are pre-computed on the CPU. But this does not mean
             that this is the only or best way to do this. In some cases, it is often useful to
             the position at a particular time or some other parameter. This can be done for particle
             systems based on forces; the vertex shader executes the force functions based on time,
             and is able to thus compute the location of the particle at an arbitrary time.</para>
+        <para>This also has an advantage that we have seen. By passing high-level information to the
+            shader and letting it do complex math, you can affect much more than just a simple
+            offset. The color animation in the fragment shader would not have been possible with
+            just an offset. High-level parameterization gives shaders a great deal of
+            freedom.</para>
     </section>
     <section>
         <title>In Review</title>
         <para>In this tutorial, you have learned about uniform variables in shaders. Uniforms are
             shader variables that change, not with every shader envocation, but between rendering
-            calls. Uniform values are parameters set by the user to control the behavior of the
-            shader. Setting them requires querying a uniform location as well as setting the program
-            to be in use. Uniform state is stored within a program object and preserved until
-            explicitly changed. A uniform that has the same name and type in two different shader
-            stages within the same linked program is the same uniform; setting it will change it for
-            both stages.</para>
+            calls whenever the user chooses to change them. Uniform values are parameters set by the
+            user to control the behavior of the shader. Setting them requires querying a uniform
+            location as well as setting the program to be in use. Uniform state is stored within a
+            program object and preserved until explicitly changed. A uniform that has the same name
+            and type in two different shader stages within the same linked program is the same
+            uniform; setting it will change it for both stages.</para>
         <para>You have also learned a little about how to update the contents of a buffer object,
             though we are <emphasis>far</emphasis> from finished with that subject.</para>
         <section>

Documents/Positioning/Tutorial 04.xml

                     also be wondering, in this modern days of vertex shaders that can do vector
                     divisions very quickly, why we should bother to use the hardware division-by-W
                     step at all. There are two reasons. One we will cover in just a bit when we deal
-                    with matrices; the main one will be covered in the next tutorial. Suffice it to say that there are very good reasons to put
-                    the perspective term in the W coordinate of clip space vertices.</para>
+                    with matrices; the main one will be covered in the next tutorial. Suffice it to
+                    say that there are very good reasons to put the perspective term in the W
+                    coordinate of clip space vertices.</para>
             </note>
         </section>
         <section>
                         above.</para>
                 </listitem>
                 <listitem>
-                    <para>Perspective division term: compute the W value, where Ez is -1.</para>
+                    <para>Perspective division term: compute the W value, where
+                            E<subscript>z</subscript> is -1.</para>
                 </listitem>
             </orderedlist>
             <para>Now that we have all the theory down, we are ready to put things properly in
                 this line:</para>
             <programlisting>clipPos.xy = cameraPos.xy * frustumScale;</programlisting>
             <para>Even if you are familiar with vector math libraries in other languages, this code
-                should be rather odd. Normal vector libraries allow you to write selectors like
+                should be rather odd. Traditional vector libraries allow you to write selectors like
                     <literal>vec.x</literal> and <literal>vec.w</literal> in order to get a specific
                 field from a vector. So what does something like <literal>vec.xy</literal>
                 mean?</para>
                     <para>You cannot do <literal>theVec.zz</literal>.</para>
                 </listitem>
                 <listitem>
-                    <para>You cannot select more than 4 components. So you can't create a non</para>
+                    <para>You cannot select more than 4 components.</para>
                 </listitem>
             </itemizedlist>
             <para>These are the only rules. So you can have a <type>vec2</type> that you swizzle to
                 etc. Anything goes so long as you stick to those rules.</para>
             <para>You should also assume that swizzling is fast. This is not true of most CPU-based
                 vector hardware, but since the earliest days of programmable GPUs, swizzle selection
-                has been a prominent feature. In the early programmable days, sizzles caused
+                has been a prominent feature. In the early programmable days, swizzles caused
                     <emphasis>no</emphasis> performance loss; in all likelihood, this has not
                 changed.</para>
             <para>Swizzle selection can also be used on the left side of the equals, as we have done
                 <emphasis>all</emphasis> of the camera space position components. Most of the terms
             are zero, of course, so they don't contribute to the output. But they do contribute to
             being able to re-express the entire transformation as a single operation.</para>
-        <para>You may be wondering at the multiplication of half of Zclip's value by the camera
-            space W. Well, our input camera space position's W coordinate is always 1. So performing
-            the multiplication is valid, so long as this continues to be the case. Being able to do
-            what we are about to do is part of the reason why the W coordinate exists (the
-            perspective divide is the other).</para>
+        <para>You may be wondering at the multiplication of the additive term of
+                Z<subscript>clip</subscript>'s value by the camera space W. Well, our input camera
+            space position's W coordinate is always 1. So performing the multiplication is valid, so
+            long as this continues to be the case. Being able to do what we are about to do is part
+            of the reason why the W coordinate exists (the perspective divide is the other).</para>
         <para>Let us now re-express this again, using the coefficients of the equation above. You
             may recognize this reformulation, depending on your knowledge of linear algebra:</para>
         <equation>
             version. Fortunately, graphics hardware is designed to make these operations very fast.
             Because each of the multiplications are independent of each other, they can all be done
             simultaneously, which is exactly the kind of thing graphics hardware does fast.
-            Similarly, the addition operations are partially independent; each rows summation
+            Similarly, the addition operations are partially independent; each row's summation
             doesn't depend on the values from any other row.</para>
         <para>We can re-implement the above perspective projection using matrix math rather than
             explicit math. The <phrase role="propername">MatrixPerspective</phrase> tutorial does
         <para>Please note the <emphasis>order</emphasis> of this operation. The matrix is on the
             left and the vector is on the right. Matrix multiplication is <emphasis>not</emphasis>
             commutative, so M*v is not the same thing as v*M. Normally vectors are considered 1xN
-            matrices (where N is the size of the vector). However, when you multiply vectors on the
-            right, GLSL considers it an Nx1 matrix; this is the only way to make the multiplication
-            make sense. This will multiply the single row of the vector with each column, summing
-            the results, creating a new vector. This is <emphasis>not</emphasis> what we want to do.
-            We want to multiply rows of the matrix by the vector, not columns of the matrix. Put the
-            vector on the right, not the left.</para>
+            matrices (where N is the size of the vector). When you multiply vectors on the left of
+            the matrix, GLSL considers it an Nx1 matrix; this is the only way to make the
+            multiplication make sense. This will multiply the single row of the vector with each
+            column, summing the results, creating a new vector. This is <emphasis>not</emphasis>
+            what we want to do. We want to multiply rows of the matrix by the vector, not columns of
+            the matrix. Put the vector on the right, not the left.</para>
         <para>The program initialization routine has a few changes:</para>
         <example>
             <title>Program Initialization of Perspective Matrix</title>
                 <function>glUniformMatrix4fv</function> function. The first parameter is the uniform
             location that we are uploading to. This function can be used to transfer an entire array
             of matrices (yes, uniform arrays of any type are possible), so the second parameter is
-            the number of array entries.</para>
+            the number of array entries. Since we're only providing one matrix, this value is
+            1.</para>
         <para>The third parameter tells OpenGL what the ordering of the matrix data is. If it is
                 <literal>GL_TRUE</literal>, then the matrix data is in row-major order. Since our
             data is column-major, we set it to <literal>GL_FALSE</literal>. The last parameter is
             width to its height. Currently, when you change the window's dimensions, the code calls
                 <function>glViewport</function> to tell OpenGL the new size. This changes OpenGL's
             viewport transform, which goes from normalized device coordinates to window coordinates.
-            NDC space is square; as long as window coordinates are also square, objects that appear
-            square in NDC space will still be square in window space. Once window space became
-            non-square, it caused the transformation to also become not a square.</para>
+            NDC space has a 1:1 aspect ratio; the width and height of NDC space is 2x2. As long as
+            window coordinates also has a 1:1 width to height ratio, objects that appear square in
+            NDC space will still be square in window space. Once window space became non-1:1, it
+            caused the transformation to also become not a square.</para>
         <para>What exactly can be done about this? Well, that depends on what you intend to
             accomplish by making the window bigger.</para>
         <para>One simple way to do this is to prevent the viewport from ever becoming non-square.
                         happens.</para>
                 </listitem>
                 <listitem>
-                    <para>In the section on aspect ratio, we saw a solution to the aspect ratio
-                        problem that modified the projection matrix's aspect ratio, so that it could
-                        render into a non-square viewport. Instead, change this code so that it
-                        modifies the <emphasis>viewport</emphasis> itself, always using the minimum
-                        sized square that will fit within the window's size. Also, add code to
-                        center the viewport within the window.</para>
-                </listitem>
-                <listitem>
                     <para>We made some simplifying assumptions in our perspective transformation
                         algorithm. In particular, we fixed the eye point at (0, 0, 0). and the plane
                         at (0, 0, 1). However, this was not strictly necessary; we could have

Documents/Tutorial Documents.xpr

                         <scenarioAssociation-array>
                             <scenarioAssociation>
                                 <field name="name">
+                                    <String xml:space="preserve">Tutorial to HTML Chunked</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">Tutorials.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Tutorial to HTML Chunked</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">Outline.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
                                     <String xml:space="preserve">Tutorial to HTML</String>
                                 </field>
                                 <field name="type">
                                     <String xml:space="preserve">XSL</String>
                                 </field>
                                 <field name="url">
-                                    <String xml:space="preserve">Basics/Tutorial%2000.xml</String>
+                                    <String xml:space="preserve">Tutorials.html</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/G:/Program%20Files/XMLmind_XML_Editor/demo/docbook-modular-book/chapter.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook XHTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/FirstBook.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter2.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Episode%20I.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook PDF</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter3.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook XHTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter1.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/H:/SM/KotoRII/BasicOutline.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../WritingDesign/TacticalD20/Anime_d20_SRD_v1.0_-_Chap01-12/DocBook/CharacterCreation.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Critiques/Past%20Mistakes%201%20Trouble.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Critiques/Past%20Mistakes%20Prologue.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook PDF</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Projects/DuelingCircle/DC21.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/DoxyFormat.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/OldData/DoxyFormat.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Writing/KotoRII/Novelization/Episode%20II/Chapter1.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook HTML</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/ProgDocSchema.xml</String>
+                                </field>
+                            </scenarioAssociation>
+                            <scenarioAssociation>
+                                <field name="name">
+                                    <String xml:space="preserve">Docbook PDF</String>
+                                </field>
+                                <field name="type">
+                                    <String xml:space="preserve">XSL</String>
+                                </field>
+                                <field name="url">
+                                    <String xml:space="preserve">file:/../Programming/InternalExes/FoMaker/design/FoLoadCodeGen.xml</String>
                                 </field>
                             </scenarioAssociation>
                             <scenarioAssociation>
                                     <String xml:space="preserve">XSL</String>
                                 </field>
                                 <field name="url">
-                                    <String xml:space="preserve">Outline.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Tutorial to HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">Tutorials.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook PDF Printable</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Writing/KotoRII/Adventures%20of%20Bastila%20and%20Mira/Chapter%201.xml</String>
+                                    <String xml:space="preserve">file:/../Design/RenderToDo.xml</String>
                                 </field>
                             </scenarioAssociation>
                             <scenarioAssociation>
                                     <String xml:space="preserve">XSL</String>
                                 </field>
                                 <field name="url">
-                                    <String xml:space="preserve">file:/../Design/RenderToDo.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook PDF</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Programming/InternalExes/FoMaker/design/FoLoadCodeGen.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/ProgDocSchema.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Writing/KotoRII/Novelization/Episode%20II/Chapter1.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/OldData/DoxyFormat.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Programming/ExternalExes/doxygen%20development/Design/DoxyFormat.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook PDF</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Projects/DuelingCircle/DC21.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Critiques/Past%20Mistakes%20Prologue.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../Critiques/Past%20Mistakes%201%20Trouble.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/../WritingDesign/TacticalD20/Anime_d20_SRD_v1.0_-_Chap01-12/DocBook/CharacterCreation.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/BasicOutline.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook XHTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter1.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook PDF</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter3.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Episode%20I.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/Episode%20I/Chapter2.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook XHTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/H:/SM/KotoRII/FirstBook.xml</String>
-                                </field>
-                            </scenarioAssociation>
-                            <scenarioAssociation>
-                                <field name="name">
-                                    <String xml:space="preserve">Docbook HTML</String>
-                                </field>
-                                <field name="type">
-                                    <String xml:space="preserve">XSL</String>
-                                </field>
-                                <field name="url">
-                                    <String xml:space="preserve">file:/G:/Program%20Files/XMLmind_XML_Editor/demo/docbook-modular-book/chapter.xml</String>
+                                    <String xml:space="preserve">file:/../Writing/KotoRII/Adventures%20of%20Bastila%20and%20Mira/Chapter%201.xml</String>
                                 </field>
                             </scenarioAssociation>
                             <scenarioAssociation>
                                     <String xml:space="preserve">XSL</String>
                                 </field>
                                 <field name="url">
-                                    <String xml:space="preserve">Tutorials.html</String>
+                                    <String xml:space="preserve">Basics/Tutorial%2000.xml</String>
                                 </field>
                             </scenarioAssociation>
                         </scenarioAssociation-array>
                                     <field name="paramDescription">
                                     <paramDescriptor>
                                     <field name="localName">
+                                    <String xml:space="preserve">keep.relative.image.uris</String>
+                                    </field>
+                                    <field name="prefix">
+                                    <null/>
+                                    </field>
+                                    <field name="namespace">
+                                    <null/>
+                                    </field>
+                                    </paramDescriptor>
+                                    </field>
+                                    <field name="value">
+                                    <String xml:space="preserve">0</String>
+                                    </field>
+                                    </transformationParameter>
+                                    <transformationParameter>
+                                    <field name="paramDescription">
+                                    <paramDescriptor>
+                                    <field name="localName">
                                     <String xml:space="preserve">toc.max.depth</String>
                                     </field>
                                     <field name="prefix">
                                     <Boolean xml:space="preserve">true</Boolean>
                                 </field>
                                 <field name="outputFile">
-                                    <File xml:space="preserve">${cfd}/${cfn}.html</File>
+                                    <File xml:space="preserve">${cfd}/html/nothing.html</File>
                                 </field>
                                 <field name="openOtherLocationInBrowser">
-                                    <Boolean xml:space="preserve">false</Boolean>
+                                    <Boolean xml:space="preserve">true</Boolean>
                                 </field>
                                 <field name="locationToOpenInBrowserURL">
-                                    <null/>
+                                    <String xml:space="preserve">html/index.html</String>
                                 </field>
                                 <field name="openInEditor">
                                     <Boolean xml:space="preserve">false</Boolean>
                                     <field name="paramDescription">
                                     <paramDescriptor>
                                     <field name="localName">
+                                    <String xml:space="preserve">base.dir</String>
+                                    </field>
+                                    <field name="prefix">
+                                    <null/>
+                                    </field>
+                                    <field name="namespace">
+                                    <null/>
+                                    </field>
+                                    </paramDescriptor>
+                                    </field>
+                                    <field name="value">
+                                    <String xml:space="preserve">/svn/OpenGL Tutorial/Documents/</String>
+                                    </field>
+                                    </transformationParameter>
+                                    <transformationParameter>
+                                    <field name="paramDescription">
+                                    <paramDescriptor>
+                                    <field name="localName">
                                     <String xml:space="preserve">chunk.quietly</String>
                                     </field>
                                     <field name="prefix">
                                     <String xml:space="preserve">1</String>
                                     </field>
                                     </transformationParameter>
+                                    <transformationParameter>
+                                    <field name="paramDescription">
+                                    <paramDescriptor>
+                                    <field name="localName">
+                                    <String xml:space="preserve">html.stylesheet</String>
+                                    </field>
+                                    <field name="prefix">
+                                    <null/>
+                                    </field>
+                                    <field name="namespace">
+                                    <null/>
+                                    </field>
+                                    </paramDescriptor>
+                                    </field>
+                                    <field name="value">
+                                    <String xml:space="preserve">../chunked.css</String>
+                                    </field>
+                                    </transformationParameter>
+                                    <transformationParameter>
+                                    <field name="paramDescription">
+                                    <paramDescriptor>
+                                    <field name="localName">
+                                    <String xml:space="preserve">keep.relative.image.uris</String>
+                                    </field>
+                                    <field name="prefix">
+                                    <null/>
+                                    </field>
+                                    <field name="namespace">
+                                    <null/>
+                                    </field>
+                                    </paramDescriptor>
+                                    </field>
+                                    <field name="value">
+                                    <String xml:space="preserve">0</String>
+                                    </field>
+                                    </transformationParameter>
                                     </list>
                                 </field>
                                 <field name="cascadingStylesheets">
             <file name="Positioning/Tutorial%2005.xml"/>
         </folder>
         <file name="Building%20the%20Tutorials.xml"/>
+        <file name="chunked.css"/>
         <file name="cssDoc.txt"/>
         <file name="Outline.xml"/>
         <file name="standard.css"/>

Documents/Tutorials.xml

 <?oxygen RNGSchema="http://docbook.org/xml/5.0/rng/docbookxi.rng" type="xml"?>
 <?oxygen SCHSchema="http://docbook.org/xml/5.0/rng/docbookxi.rng"?>
 <book xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0">
+    <?dbhtml dir="html" ?>
     <info>
         <title>OpenGL Tutorials</title>
     </info>

Documents/chunked.css

+
+body
+{
+    background-color: #fff6e7;
+    padding: 0 5%;
+    font-family: calibri, helvetica, serif;
+    font-size: 12pt;
+}
+
+br.example-break
+{
+    display: none;
+}
+
+div.note
+{
+    margin-left: 50%;
+}
+
+div.example p.title
+{
+    text-align: center;
+}
+
+pre.programlisting
+{
+    font-family: consolas, monospace;
+    font-size: 12pt;
+    margin-left: 5%;
+    margin-right: 5%;
+    background-color: #dbeded;
+    background-image: -moz-linear-gradient(left, #dbeded, #fff6e7);
+    padding: 7px;
+    border: 2px dashed black;
+    -moz-border-radius: 7px;
+    -webkit-border-radius: 7px;
+}
+
+code
+{
+    font-family: consolas, monospace;
+}
+
+code.function { color: #a00010; }
+
+code.varname { color: #d300ff; }
+
+code.filename {  }
+
+code.literal { color: #0f0aae; }
+
+span.type {  }
+
+em.glossterm { text-decoration: underline; }
+
+acronym.acronym { font-weight: bold; }
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.