diff --git a/sdf.fs b/sdf.fs index f79e90a..f15ca98 100644 --- a/sdf.fs +++ b/sdf.fs @@ -44,7 +44,7 @@ Ray minFn(Ray ray){ ray.color = vec3(1.0, 0.5, 0.2); ray.min = sp; } else { - ray.color = vec3(1.,1.,1.); + ray.color = vec3(0.2, 0.3, 0.3); ray.min = pl; } return applyMin(ray); @@ -90,12 +90,21 @@ void main() { vec3 dir = vec3((texCoords - 0.5)*2,1.0); vec3 pos = dir; - Ray ray = Ray(pos,normalize(dir),.0,.0,vec3(.0)); + Ray ray = Ray(normalize(dir),pos,.0,.0,vec3(.0)); + + ray = march(ray); - ray = march(ray); vec3 normal = calcNormal(ray); + vec3 lighDir = normalize(vec3(.5,-1.0,0.5)); - float light = (.5 - min(dot(normal,lighDir),0.0))*2.; + float light = (- min(dot(normal,lighDir),0.0))*0.7+0.3; + + Ray shRay = Ray(lighDir * (-1.0), ray.pos + 0.5*normal , .0,.0, vec3(.0)); + shRay = march(shRay); + + if( (dot(lighDir,normal) < 0.0) && (shRay.len <20)){ + light *= min(shRay.len*0.1,1.0); + } if(ray.min <= 0.2){ FragColor = vec4(ray.color * light, 1.0);