port from perforce
This commit is contained in:
568
evoke-64k/ev15-4k/mark.fs_3_dbg
Normal file
568
evoke-64k/ev15-4k/mark.fs_3_dbg
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
Reference in New Issue
Block a user