/** * * RenderPipeline * * Copyright (c) 2014-2016 tobspr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * */ // Halton sequences CONST_ARRAY vec2 halton_2D_4[4] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111) ); CONST_ARRAY vec2 halton_2D_8[8] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111), vec2(0.25000, 0.55556), vec2(-0.25000, -0.55556), vec2(0.75000, 0.11111), vec2(-0.87500, 0.77778) ); CONST_ARRAY vec2 halton_2D_16[16] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111), vec2(0.25000, 0.55556), vec2(-0.25000, -0.55556), vec2(0.75000, 0.11111), vec2(-0.87500, 0.77778), vec2(0.12500, -0.92593), vec2(-0.37500, -0.25926), vec2(0.62500, 0.40741), vec2(-0.62500, -0.70370), vec2(0.37500, -0.03704), vec2(-0.12500, 0.62963), vec2(0.87500, -0.48148), vec2(-0.93750, 0.18519) ); CONST_ARRAY vec2 halton_2D_32[32] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111), vec2(0.25000, 0.55556), vec2(-0.25000, -0.55556), vec2(0.75000, 0.11111), vec2(-0.87500, 0.77778), vec2(0.12500, -0.92593), vec2(-0.37500, -0.25926), vec2(0.62500, 0.40741), vec2(-0.62500, -0.70370), vec2(0.37500, -0.03704), vec2(-0.12500, 0.62963), vec2(0.87500, -0.48148), vec2(-0.93750, 0.18519), vec2(0.06250, 0.85185), vec2(-0.43750, -0.85185), vec2(0.56250, -0.18519), vec2(-0.68750, 0.48148), vec2(0.31250, -0.62963), vec2(-0.18750, 0.03704), vec2(0.81250, 0.70370), vec2(-0.81250, -0.40741), vec2(0.18750, 0.25926), vec2(-0.31250, 0.92593), vec2(0.68750, -0.97531), vec2(-0.56250, -0.30864), vec2(0.43750, 0.35802), vec2(-0.06250, -0.75309), vec2(0.93750, -0.08642), vec2(-0.96875, 0.58025) ); CONST_ARRAY vec2 halton_2D_64[64] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111), vec2(0.25000, 0.55556), vec2(-0.25000, -0.55556), vec2(0.75000, 0.11111), vec2(-0.87500, 0.77778), vec2(0.12500, -0.92593), vec2(-0.37500, -0.25926), vec2(0.62500, 0.40741), vec2(-0.62500, -0.70370), vec2(0.37500, -0.03704), vec2(-0.12500, 0.62963), vec2(0.87500, -0.48148), vec2(-0.93750, 0.18519), vec2(0.06250, 0.85185), vec2(-0.43750, -0.85185), vec2(0.56250, -0.18519), vec2(-0.68750, 0.48148), vec2(0.31250, -0.62963), vec2(-0.18750, 0.03704), vec2(0.81250, 0.70370), vec2(-0.81250, -0.40741), vec2(0.18750, 0.25926), vec2(-0.31250, 0.92593), vec2(0.68750, -0.97531), vec2(-0.56250, -0.30864), vec2(0.43750, 0.35802), vec2(-0.06250, -0.75309), vec2(0.93750, -0.08642), vec2(-0.96875, 0.58025), vec2(0.03125, -0.53086), vec2(-0.46875, 0.13580), vec2(0.53125, 0.80247), vec2(-0.71875, -0.90123), vec2(0.28125, -0.23457), vec2(-0.21875, 0.43210), vec2(0.78125, -0.67901), vec2(-0.84375, -0.01235), vec2(0.15625, 0.65432), vec2(-0.34375, -0.45679), vec2(0.65625, 0.20988), vec2(-0.59375, 0.87654), vec2(0.40625, -0.82716), vec2(-0.09375, -0.16049), vec2(0.90625, 0.50617), vec2(-0.90625, -0.60494), vec2(0.09375, 0.06173), vec2(-0.40625, 0.72840), vec2(0.59375, -0.38272), vec2(-0.65625, 0.28395), vec2(0.34375, 0.95062), vec2(-0.15625, -0.95062), vec2(0.84375, -0.28395), vec2(-0.78125, 0.38272), vec2(0.21875, -0.72840), vec2(-0.28125, -0.06173), vec2(0.71875, 0.60494), vec2(-0.53125, -0.50617), vec2(0.46875, 0.16049), vec2(-0.03125, 0.82716), vec2(0.96875, -0.87654), vec2(-0.98438, -0.20988) ); CONST_ARRAY vec2 halton_2D_128[128] = vec2[]( vec2(0.00000, -0.33333), vec2(-0.50000, 0.33333), vec2(0.50000, -0.77778), vec2(-0.75000, -0.11111), vec2(0.25000, 0.55556), vec2(-0.25000, -0.55556), vec2(0.75000, 0.11111), vec2(-0.87500, 0.77778), vec2(0.12500, -0.92593), vec2(-0.37500, -0.25926), vec2(0.62500, 0.40741), vec2(-0.62500, -0.70370), vec2(0.37500, -0.03704), vec2(-0.12500, 0.62963), vec2(0.87500, -0.48148), vec2(-0.93750, 0.18519), vec2(0.06250, 0.85185), vec2(-0.43750, -0.85185), vec2(0.56250, -0.18519), vec2(-0.68750, 0.48148), vec2(0.31250, -0.62963), vec2(-0.18750, 0.03704), vec2(0.81250, 0.70370), vec2(-0.81250, -0.40741), vec2(0.18750, 0.25926), vec2(-0.31250, 0.92593), vec2(0.68750, -0.97531), vec2(-0.56250, -0.30864), vec2(0.43750, 0.35802), vec2(-0.06250, -0.75309), vec2(0.93750, -0.08642), vec2(-0.96875, 0.58025), vec2(0.03125, -0.53086), vec2(-0.46875, 0.13580), vec2(0.53125, 0.80247), vec2(-0.71875, -0.90123), vec2(0.28125, -0.23457), vec2(-0.21875, 0.43210), vec2(0.78125, -0.67901), vec2(-0.84375, -0.01235), vec2(0.15625, 0.65432), vec2(-0.34375, -0.45679), vec2(0.65625, 0.20988), vec2(-0.59375, 0.87654), vec2(0.40625, -0.82716), vec2(-0.09375, -0.16049), vec2(0.90625, 0.50617), vec2(-0.90625, -0.60494), vec2(0.09375, 0.06173), vec2(-0.40625, 0.72840), vec2(0.59375, -0.38272), vec2(-0.65625, 0.28395), vec2(0.34375, 0.95062), vec2(-0.15625, -0.95062), vec2(0.84375, -0.28395), vec2(-0.78125, 0.38272), vec2(0.21875, -0.72840), vec2(-0.28125, -0.06173), vec2(0.71875, 0.60494), vec2(-0.53125, -0.50617), vec2(0.46875, 0.16049), vec2(-0.03125, 0.82716), vec2(0.96875, -0.87654), vec2(-0.98438, -0.20988), vec2(0.01562, 0.45679), vec2(-0.48438, -0.65432), vec2(0.51562, 0.01235), vec2(-0.73438, 0.67901), vec2(0.26562, -0.43210), vec2(-0.23438, 0.23457), vec2(0.76562, 0.90123), vec2(-0.85938, -0.80247), vec2(0.14062, -0.13580), vec2(-0.35938, 0.53086), vec2(0.64062, -0.58025), vec2(-0.60938, 0.08642), vec2(0.39062, 0.75309), vec2(-0.10938, -0.35802), vec2(0.89062, 0.30864), vec2(-0.92188, 0.97531), vec2(0.07812, -0.99177), vec2(-0.42188, -0.32510), vec2(0.57812, 0.34156), vec2(-0.67188, -0.76955), vec2(0.32812, -0.10288), vec2(-0.17188, 0.56379), vec2(0.82812, -0.54733), vec2(-0.79688, 0.11934), vec2(0.20312, 0.78601), vec2(-0.29688, -0.91770), vec2(0.70312, -0.25103), vec2(-0.54688, 0.41564), vec2(0.45312, -0.69547), vec2(-0.04688, -0.02881), vec2(0.95312, 0.63786), vec2(-0.95312, -0.47325), vec2(0.04688, 0.19342), vec2(-0.45312, 0.86008), vec2(0.54688, -0.84362), vec2(-0.70312, -0.17695), vec2(0.29688, 0.48971), vec2(-0.20312, -0.62140), vec2(0.79688, 0.04527), vec2(-0.82812, 0.71193), vec2(0.17188, -0.39918), vec2(-0.32812, 0.26749), vec2(0.67188, 0.93416), vec2(-0.57812, -0.96708), vec2(0.42188, -0.30041), vec2(-0.07812, 0.36626), vec2(0.92188, -0.74486), vec2(-0.89062, -0.07819), vec2(0.10938, 0.58848), vec2(-0.39062, -0.52263), vec2(0.60938, 0.14403), vec2(-0.64062, 0.81070), vec2(0.35938, -0.89300), vec2(-0.14062, -0.22634), vec2(0.85938, 0.44033), vec2(-0.76562, -0.67078), vec2(0.23438, -0.00412), vec2(-0.26562, 0.66255), vec2(0.73438, -0.44856), vec2(-0.51562, 0.21811), vec2(0.48438, 0.88477), vec2(-0.01562, -0.81893), vec2(0.98438, -0.15226), vec2(-0.99219, 0.51440) ); CONST_ARRAY vec3 halton_3D_4[4] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000) ); CONST_ARRAY vec3 halton_3D_8[8] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000), vec3(0.25000, 0.55556, -0.92000), vec3(-0.25000, -0.55556, -0.52000), vec3(0.75000, 0.11111, -0.12000), vec3(-0.87500, 0.77778, 0.28000) ); CONST_ARRAY vec3 halton_3D_16[16] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000), vec3(0.25000, 0.55556, -0.92000), vec3(-0.25000, -0.55556, -0.52000), vec3(0.75000, 0.11111, -0.12000), vec3(-0.87500, 0.77778, 0.28000), vec3(0.12500, -0.92593, 0.68000), vec3(-0.37500, -0.25926, -0.84000), vec3(0.62500, 0.40741, -0.44000), vec3(-0.62500, -0.70370, -0.04000), vec3(0.37500, -0.03704, 0.36000), vec3(-0.12500, 0.62963, 0.76000), vec3(0.87500, -0.48148, -0.76000), vec3(-0.93750, 0.18519, -0.36000) ); CONST_ARRAY vec3 halton_3D_32[32] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000), vec3(0.25000, 0.55556, -0.92000), vec3(-0.25000, -0.55556, -0.52000), vec3(0.75000, 0.11111, -0.12000), vec3(-0.87500, 0.77778, 0.28000), vec3(0.12500, -0.92593, 0.68000), vec3(-0.37500, -0.25926, -0.84000), vec3(0.62500, 0.40741, -0.44000), vec3(-0.62500, -0.70370, -0.04000), vec3(0.37500, -0.03704, 0.36000), vec3(-0.12500, 0.62963, 0.76000), vec3(0.87500, -0.48148, -0.76000), vec3(-0.93750, 0.18519, -0.36000), vec3(0.06250, 0.85185, 0.04000), vec3(-0.43750, -0.85185, 0.44000), vec3(0.56250, -0.18519, 0.84000), vec3(-0.68750, 0.48148, -0.68000), vec3(0.31250, -0.62963, -0.28000), vec3(-0.18750, 0.03704, 0.12000), vec3(0.81250, 0.70370, 0.52000), vec3(-0.81250, -0.40741, 0.92000), vec3(0.18750, 0.25926, -0.98400), vec3(-0.31250, 0.92593, -0.58400), vec3(0.68750, -0.97531, -0.18400), vec3(-0.56250, -0.30864, 0.21600), vec3(0.43750, 0.35802, 0.61600), vec3(-0.06250, -0.75309, -0.90400), vec3(0.93750, -0.08642, -0.50400), vec3(-0.96875, 0.58025, -0.10400) ); CONST_ARRAY vec3 halton_3D_64[64] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000), vec3(0.25000, 0.55556, -0.92000), vec3(-0.25000, -0.55556, -0.52000), vec3(0.75000, 0.11111, -0.12000), vec3(-0.87500, 0.77778, 0.28000), vec3(0.12500, -0.92593, 0.68000), vec3(-0.37500, -0.25926, -0.84000), vec3(0.62500, 0.40741, -0.44000), vec3(-0.62500, -0.70370, -0.04000), vec3(0.37500, -0.03704, 0.36000), vec3(-0.12500, 0.62963, 0.76000), vec3(0.87500, -0.48148, -0.76000), vec3(-0.93750, 0.18519, -0.36000), vec3(0.06250, 0.85185, 0.04000), vec3(-0.43750, -0.85185, 0.44000), vec3(0.56250, -0.18519, 0.84000), vec3(-0.68750, 0.48148, -0.68000), vec3(0.31250, -0.62963, -0.28000), vec3(-0.18750, 0.03704, 0.12000), vec3(0.81250, 0.70370, 0.52000), vec3(-0.81250, -0.40741, 0.92000), vec3(0.18750, 0.25926, -0.98400), vec3(-0.31250, 0.92593, -0.58400), vec3(0.68750, -0.97531, -0.18400), vec3(-0.56250, -0.30864, 0.21600), vec3(0.43750, 0.35802, 0.61600), vec3(-0.06250, -0.75309, -0.90400), vec3(0.93750, -0.08642, -0.50400), vec3(-0.96875, 0.58025, -0.10400), vec3(0.03125, -0.53086, 0.29600), vec3(-0.46875, 0.13580, 0.69600), vec3(0.53125, 0.80247, -0.82400), vec3(-0.71875, -0.90123, -0.42400), vec3(0.28125, -0.23457, -0.02400), vec3(-0.21875, 0.43210, 0.37600), vec3(0.78125, -0.67901, 0.77600), vec3(-0.84375, -0.01235, -0.74400), vec3(0.15625, 0.65432, -0.34400), vec3(-0.34375, -0.45679, 0.05600), vec3(0.65625, 0.20988, 0.45600), vec3(-0.59375, 0.87654, 0.85600), vec3(0.40625, -0.82716, -0.66400), vec3(-0.09375, -0.16049, -0.26400), vec3(0.90625, 0.50617, 0.13600), vec3(-0.90625, -0.60494, 0.53600), vec3(0.09375, 0.06173, 0.93600), vec3(-0.40625, 0.72840, -0.96800), vec3(0.59375, -0.38272, -0.56800), vec3(-0.65625, 0.28395, -0.16800), vec3(0.34375, 0.95062, 0.23200), vec3(-0.15625, -0.95062, 0.63200), vec3(0.84375, -0.28395, -0.88800), vec3(-0.78125, 0.38272, -0.48800), vec3(0.21875, -0.72840, -0.08800), vec3(-0.28125, -0.06173, 0.31200), vec3(0.71875, 0.60494, 0.71200), vec3(-0.53125, -0.50617, -0.80800), vec3(0.46875, 0.16049, -0.40800), vec3(-0.03125, 0.82716, -0.00800), vec3(0.96875, -0.87654, 0.39200), vec3(-0.98438, -0.20988, 0.79200) ); CONST_ARRAY vec3 halton_3D_128[128] = vec3[]( vec3(0.00000, -0.33333, -0.60000), vec3(-0.50000, 0.33333, -0.20000), vec3(0.50000, -0.77778, 0.20000), vec3(-0.75000, -0.11111, 0.60000), vec3(0.25000, 0.55556, -0.92000), vec3(-0.25000, -0.55556, -0.52000), vec3(0.75000, 0.11111, -0.12000), vec3(-0.87500, 0.77778, 0.28000), vec3(0.12500, -0.92593, 0.68000), vec3(-0.37500, -0.25926, -0.84000), vec3(0.62500, 0.40741, -0.44000), vec3(-0.62500, -0.70370, -0.04000), vec3(0.37500, -0.03704, 0.36000), vec3(-0.12500, 0.62963, 0.76000), vec3(0.87500, -0.48148, -0.76000), vec3(-0.93750, 0.18519, -0.36000), vec3(0.06250, 0.85185, 0.04000), vec3(-0.43750, -0.85185, 0.44000), vec3(0.56250, -0.18519, 0.84000), vec3(-0.68750, 0.48148, -0.68000), vec3(0.31250, -0.62963, -0.28000), vec3(-0.18750, 0.03704, 0.12000), vec3(0.81250, 0.70370, 0.52000), vec3(-0.81250, -0.40741, 0.92000), vec3(0.18750, 0.25926, -0.98400), vec3(-0.31250, 0.92593, -0.58400), vec3(0.68750, -0.97531, -0.18400), vec3(-0.56250, -0.30864, 0.21600), vec3(0.43750, 0.35802, 0.61600), vec3(-0.06250, -0.75309, -0.90400), vec3(0.93750, -0.08642, -0.50400), vec3(-0.96875, 0.58025, -0.10400), vec3(0.03125, -0.53086, 0.29600), vec3(-0.46875, 0.13580, 0.69600), vec3(0.53125, 0.80247, -0.82400), vec3(-0.71875, -0.90123, -0.42400), vec3(0.28125, -0.23457, -0.02400), vec3(-0.21875, 0.43210, 0.37600), vec3(0.78125, -0.67901, 0.77600), vec3(-0.84375, -0.01235, -0.74400), vec3(0.15625, 0.65432, -0.34400), vec3(-0.34375, -0.45679, 0.05600), vec3(0.65625, 0.20988, 0.45600), vec3(-0.59375, 0.87654, 0.85600), vec3(0.40625, -0.82716, -0.66400), vec3(-0.09375, -0.16049, -0.26400), vec3(0.90625, 0.50617, 0.13600), vec3(-0.90625, -0.60494, 0.53600), vec3(0.09375, 0.06173, 0.93600), vec3(-0.40625, 0.72840, -0.96800), vec3(0.59375, -0.38272, -0.56800), vec3(-0.65625, 0.28395, -0.16800), vec3(0.34375, 0.95062, 0.23200), vec3(-0.15625, -0.95062, 0.63200), vec3(0.84375, -0.28395, -0.88800), vec3(-0.78125, 0.38272, -0.48800), vec3(0.21875, -0.72840, -0.08800), vec3(-0.28125, -0.06173, 0.31200), vec3(0.71875, 0.60494, 0.71200), vec3(-0.53125, -0.50617, -0.80800), vec3(0.46875, 0.16049, -0.40800), vec3(-0.03125, 0.82716, -0.00800), vec3(0.96875, -0.87654, 0.39200), vec3(-0.98438, -0.20988, 0.79200), vec3(0.01562, 0.45679, -0.72800), vec3(-0.48438, -0.65432, -0.32800), vec3(0.51562, 0.01235, 0.07200), vec3(-0.73438, 0.67901, 0.47200), vec3(0.26562, -0.43210, 0.87200), vec3(-0.23438, 0.23457, -0.64800), vec3(0.76562, 0.90123, -0.24800), vec3(-0.85938, -0.80247, 0.15200), vec3(0.14062, -0.13580, 0.55200), vec3(-0.35938, 0.53086, 0.95200), vec3(0.64062, -0.58025, -0.95200), vec3(-0.60938, 0.08642, -0.55200), vec3(0.39062, 0.75309, -0.15200), vec3(-0.10938, -0.35802, 0.24800), vec3(0.89062, 0.30864, 0.64800), vec3(-0.92188, 0.97531, -0.87200), vec3(0.07812, -0.99177, -0.47200), vec3(-0.42188, -0.32510, -0.07200), vec3(0.57812, 0.34156, 0.32800), vec3(-0.67188, -0.76955, 0.72800), vec3(0.32812, -0.10288, -0.79200), vec3(-0.17188, 0.56379, -0.39200), vec3(0.82812, -0.54733, 0.00800), vec3(-0.79688, 0.11934, 0.40800), vec3(0.20312, 0.78601, 0.80800), vec3(-0.29688, -0.91770, -0.71200), vec3(0.70312, -0.25103, -0.31200), vec3(-0.54688, 0.41564, 0.08800), vec3(0.45312, -0.69547, 0.48800), vec3(-0.04688, -0.02881, 0.88800), vec3(0.95312, 0.63786, -0.63200), vec3(-0.95312, -0.47325, -0.23200), vec3(0.04688, 0.19342, 0.16800), vec3(-0.45312, 0.86008, 0.56800), vec3(0.54688, -0.84362, 0.96800), vec3(-0.70312, -0.17695, -0.93600), vec3(0.29688, 0.48971, -0.53600), vec3(-0.20312, -0.62140, -0.13600), vec3(0.79688, 0.04527, 0.26400), vec3(-0.82812, 0.71193, 0.66400), vec3(0.17188, -0.39918, -0.85600), vec3(-0.32812, 0.26749, -0.45600), vec3(0.67188, 0.93416, -0.05600), vec3(-0.57812, -0.96708, 0.34400), vec3(0.42188, -0.30041, 0.74400), vec3(-0.07812, 0.36626, -0.77600), vec3(0.92188, -0.74486, -0.37600), vec3(-0.89062, -0.07819, 0.02400), vec3(0.10938, 0.58848, 0.42400), vec3(-0.39062, -0.52263, 0.82400), vec3(0.60938, 0.14403, -0.69600), vec3(-0.64062, 0.81070, -0.29600), vec3(0.35938, -0.89300, 0.10400), vec3(-0.14062, -0.22634, 0.50400), vec3(0.85938, 0.44033, 0.90400), vec3(-0.76562, -0.67078, -0.61600), vec3(0.23438, -0.00412, -0.21600), vec3(-0.26562, 0.66255, 0.18400), vec3(0.73438, -0.44856, 0.58400), vec3(-0.51562, 0.21811, 0.98400), vec3(0.48438, 0.88477, -0.99680), vec3(-0.01562, -0.81893, -0.59680), vec3(0.98438, -0.15226, -0.19680), vec3(-0.99219, 0.51440, 0.20320) );