|
@@ -197,10 +197,7 @@
|
|
|
|
|
|
|
|
bounds.x = max( bounds.x, 0.0 );
|
|
bounds.x = max( bounds.x, 0.0 );
|
|
|
|
|
|
|
|
- vec3 p = vOrigin + bounds.x * rayDir;
|
|
|
|
|
- vec3 inc = 1.0 / abs( rayDir );
|
|
|
|
|
- float delta = min( inc.x, min( inc.y, inc.z ) );
|
|
|
|
|
- delta /= steps;
|
|
|
|
|
|
|
+ float stepSize = ( bounds.y - bounds.x ) / steps;
|
|
|
|
|
|
|
|
// Jitter
|
|
// Jitter
|
|
|
|
|
|
|
@@ -209,13 +206,16 @@
|
|
|
uint seed = uint( gl_FragCoord.x ) * uint( 1973 ) + uint( gl_FragCoord.y ) * uint( 9277 ) + uint( frame ) * uint( 26699 );
|
|
uint seed = uint( gl_FragCoord.x ) * uint( 1973 ) + uint( gl_FragCoord.y ) * uint( 9277 ) + uint( frame ) * uint( 26699 );
|
|
|
vec3 size = vec3( textureSize( map, 0 ) );
|
|
vec3 size = vec3( textureSize( map, 0 ) );
|
|
|
float randNum = randomFloat( seed ) * 2.0 - 1.0;
|
|
float randNum = randomFloat( seed ) * 2.0 - 1.0;
|
|
|
|
|
+ vec3 p = vOrigin + bounds.x * rayDir;
|
|
|
p += rayDir * randNum * ( 1.0 / size );
|
|
p += rayDir * randNum * ( 1.0 / size );
|
|
|
|
|
|
|
|
//
|
|
//
|
|
|
|
|
|
|
|
vec4 ac = vec4( base, 0.0 );
|
|
vec4 ac = vec4( base, 0.0 );
|
|
|
|
|
|
|
|
- for ( float t = bounds.x; t < bounds.y; t += delta ) {
|
|
|
|
|
|
|
+ for ( float i = 0.0; i < steps; i += 1.0 ) {
|
|
|
|
|
+
|
|
|
|
|
+ float t = bounds.x + i * stepSize;
|
|
|
|
|
|
|
|
float d = sample1( p + 0.5 );
|
|
float d = sample1( p + 0.5 );
|
|
|
|
|
|
|
@@ -229,7 +229,7 @@
|
|
|
|
|
|
|
|
if ( ac.a >= 0.95 ) break;
|
|
if ( ac.a >= 0.95 ) break;
|
|
|
|
|
|
|
|
- p += rayDir * delta;
|
|
|
|
|
|
|
+ p += rayDir * stepSize;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|