|
@@ -58,7 +58,7 @@
|
|
|
const vec3 lightDir = vec3( -0.48666426339228763, 0.8111071056538127, -0.3244428422615251 );
|
|
|
|
|
|
// distance functions
|
|
|
- vec3 onRep( vec3 p, float interval ) {
|
|
|
+ vec3 opRep( vec3 p, float interval ) {
|
|
|
|
|
|
vec2 q = mod( p.xz, interval ) - interval * 0.5;
|
|
|
return vec3( q.x, p.y, q.y );
|
|
@@ -67,7 +67,7 @@
|
|
|
|
|
|
float sphereDist( vec3 p, float r ) {
|
|
|
|
|
|
- return length( onRep( p, 3.0 ) ) - r;
|
|
|
+ return length( opRep( p, 3.0 ) ) - r;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -159,18 +159,18 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
- vec3 getRayColor( vec3 origin, vec3 ray, out vec3 p, out vec3 normal, out bool hit ) {
|
|
|
+ vec3 getRayColor( vec3 origin, vec3 ray, out vec3 pos, out vec3 normal, out bool hit ) {
|
|
|
|
|
|
// marching loop
|
|
|
float dist;
|
|
|
float depth = 0.0;
|
|
|
- p = origin;
|
|
|
+ pos = origin;
|
|
|
|
|
|
for ( int i = 0; i < 64; i++ ){
|
|
|
|
|
|
- dist = sceneDist( p );
|
|
|
+ dist = sceneDist( pos );
|
|
|
depth += dist;
|
|
|
- p = origin + depth * ray;
|
|
|
+ pos = origin + depth * ray;
|
|
|
|
|
|
if ( abs(dist) < EPS ) break;
|
|
|
|
|
@@ -181,11 +181,11 @@
|
|
|
|
|
|
if ( abs(dist) < EPS ) {
|
|
|
|
|
|
- normal = getNormal(p);
|
|
|
+ normal = getNormal(pos);
|
|
|
float diffuse = clamp( dot( lightDir, normal ), 0.1, 1.0 );
|
|
|
float specular = pow( clamp( dot( reflect( lightDir, normal ), ray ), 0.0, 1.0 ), 10.0 );
|
|
|
- float shadow = getShadow( p + normal * OFFSET, lightDir );
|
|
|
- color = ( sceneColor( p ).rgb * diffuse + vec3( 0.8 ) * specular ) * max( 0.5, shadow );
|
|
|
+ float shadow = getShadow( pos + normal * OFFSET, lightDir );
|
|
|
+ color = ( sceneColor( pos ).rgb * diffuse + vec3( 0.8 ) * specular ) * max( 0.5, shadow );
|
|
|
|
|
|
hit = true;
|
|
|
|
|
@@ -212,16 +212,16 @@
|
|
|
vec3 cPos = cameraPosition;
|
|
|
|
|
|
vec3 color = vec3( 0.0 );
|
|
|
- vec3 p, normal;
|
|
|
+ vec3 pos, normal;
|
|
|
bool hit;
|
|
|
float alpha = 1.0;
|
|
|
|
|
|
for ( int i = 0; i < 3; i++ ) {
|
|
|
|
|
|
- color += alpha * getRayColor( cPos, ray, p, normal, hit );
|
|
|
+ color += alpha * getRayColor( cPos, ray, pos, normal, hit );
|
|
|
alpha *= 0.3;
|
|
|
ray = normalize( reflect( ray, normal ) );
|
|
|
- cPos = p + normal * OFFSET;
|
|
|
+ cPos = pos + normal * OFFSET;
|
|
|
|
|
|
if ( !hit ) break;
|
|
|
|