 {
     float distance = 1.0;
 
+    // The output texture is a 1D texture, so we will essentially sample the column of pixes at the x of the Texture
+    // coordinates based on the length of the light to cast
     for (float y = 0.0; y < lightCastLength; y += 1.0)
     {
-        // Convert calculated UV coordinates in to [-1, 1] space
+        // Convert calculated texture coordinates into [-1, 1] space
+        //
+        // NOTE: We only care about the x of the texture coordinates because the output is to a 1D texture
         vec2 normalizedTexCoords = vec2(vTexCoord0.x, y / lightCastLength) * 2.0 - 1.0;
 
-        // Polar coordinates are represented as (radial, theta). Tersely, (r, theta)
+        // Polar coordinates are represented as (radial, theta), which is the length out from an origin and how much to rotate from that point. Tersely, (r, theta)
 
-        // Calculate a theta from PI/2 (90 deg), increasing clockwise until back to PI/2 (90 degree)
+        // Calculate a theta from PI/2 (90 deg), increasing clockwise until back at PI/2 (90 degree)
         //
         // 3PI/2 + -1PI = 3PI/2 - PI = PI/2
         // 3PI/2 + 1PI = PI/2
-        float theta = PI*1.5 + normalizedTexCoords.x * PI;
+        float theta = (PI * 1.5) + (normalizedTexCoords.x * PI);
 
         // Calculate a radial between 0 and 1
         float r = (1.0 + normalizedTexCoords.y) * 0.5;

varying vec2 vTexCoord0;
varying vec4 vColor;

// Texture that is bound during this program
uniform sampler2D u_texture;

// The lightCastLength (Length) of the light cast

        //
        // Look at: http://en.wikipedia.org/wiki/Polar_coordinate_system
        //
        // x = r * cos(theta)  [cos(0)=1 cos(90)=0 cos(180)=-1 cos(270)=0]
        // y = r * sin(theta)  [sin(0)=0 sin(90)=1 sin(180)=0 sin(270)=-1]
        vec2 polarToRectCoords = vec2(-r * sin(theta), -r * cos(theta))/2.0 + 0.5;

        // Sample the fragment at the calculated rect coordinates from the occlusion texture
