feat: added shadows
This commit is contained in:
17
sdf.fs
17
sdf.fs
@@ -44,7 +44,7 @@ Ray minFn(Ray ray){
|
|||||||
ray.color = vec3(1.0, 0.5, 0.2);
|
ray.color = vec3(1.0, 0.5, 0.2);
|
||||||
ray.min = sp;
|
ray.min = sp;
|
||||||
} else {
|
} else {
|
||||||
ray.color = vec3(1.,1.,1.);
|
ray.color = vec3(0.2, 0.3, 0.3);
|
||||||
ray.min = pl;
|
ray.min = pl;
|
||||||
}
|
}
|
||||||
return applyMin(ray);
|
return applyMin(ray);
|
||||||
@@ -90,12 +90,21 @@ void main()
|
|||||||
{
|
{
|
||||||
vec3 dir = vec3((texCoords - 0.5)*2,1.0);
|
vec3 dir = vec3((texCoords - 0.5)*2,1.0);
|
||||||
vec3 pos = dir;
|
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 normal = calcNormal(ray);
|
||||||
|
|
||||||
vec3 lighDir = normalize(vec3(.5,-1.0,0.5));
|
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){
|
if(ray.min <= 0.2){
|
||||||
FragColor = vec4(ray.color * light, 1.0);
|
FragColor = vec4(ray.color * light, 1.0);
|
||||||
|
|||||||
Reference in New Issue
Block a user