🎨 formating console3D test
This commit is contained in:
parent
688fbe8c5d
commit
fd93fbafdf
|
@ -16,8 +16,8 @@ var ppm = func(filename, width, height, RGB) {
|
||||||
io.close(fd);
|
io.close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
var width = 1920;
|
var width = 1920 * 2;
|
||||||
var height = 1080;
|
var height = 1080 * 2;
|
||||||
var bar = (os.platform()=="windows")?
|
var bar = (os.platform()=="windows")?
|
||||||
process_bar.bar(front:"sharp", back:"point", sep:"line", length:50):
|
process_bar.bar(front:"sharp", back:"point", sep:"line", length:50):
|
||||||
process_bar.high_resolution_bar(50);
|
process_bar.high_resolution_bar(50);
|
||||||
|
|
|
@ -31,6 +31,7 @@ func() {
|
||||||
runtime.gc.extend("vec", 8);
|
runtime.gc.extend("vec", 8);
|
||||||
}();
|
}();
|
||||||
|
|
||||||
|
# alias
|
||||||
var (max, min, sqrt, sin, cos, abs) = (
|
var (max, min, sqrt, sin, cos, abs) = (
|
||||||
math.max,
|
math.max,
|
||||||
math.min,
|
math.min,
|
||||||
|
@ -76,19 +77,41 @@ var use_raw = func() {
|
||||||
vec2sub = func(v1, v2) {return [v1[0]-v2[0],v1[1]-v2[1]];}
|
vec2sub = func(v1, v2) {return [v1[0]-v2[0],v1[1]-v2[1]];}
|
||||||
vec2mul = func(v1, v2) {return [v1[0]*v2[0],v1[1]*v2[1]];}
|
vec2mul = func(v1, v2) {return [v1[0]*v2[0],v1[1]*v2[1]];}
|
||||||
vec2div = func(v1, v2) {return [v1[0]/v2[0],v1[1]/v2[1]];}
|
vec2div = func(v1, v2) {return [v1[0]/v2[0],v1[1]/v2[1]];}
|
||||||
|
vec2len = func(v) {var (x,y)=(v[0],v[1]); return sqrt(x*x+y*y);}
|
||||||
|
|
||||||
vec3 = func(x, y, z) {return [x,y,z];}
|
vec3 = func(x, y, z) {return [x,y,z];}
|
||||||
vec3add = func(v1, v2) {return [v1[0]+v2[0],v1[1]+v2[1],v1[2]+v2[2]];}
|
vec3add = func(v1, v2) {return [v1[0]+v2[0],v1[1]+v2[1],v1[2]+v2[2]];}
|
||||||
vec3sub = func(v1, v2) {return [v1[0]-v2[0],v1[1]-v2[1],v1[2]-v2[2]];}
|
vec3sub = func(v1, v2) {return [v1[0]-v2[0],v1[1]-v2[1],v1[2]-v2[2]];}
|
||||||
vec3mul = func(v1, v2) {return [v1[0]*v2[0],v1[1]*v2[1],v1[2]*v2[2]];}
|
vec3mul = func(v1, v2) {return [v1[0]*v2[0],v1[1]*v2[1],v1[2]*v2[2]];}
|
||||||
vec3div = func(v1, v2) {return [v1[0]/v2[0],v1[1]/v2[1],v1[2]/v2[2]];}
|
vec3div = func(v1, v2) {return [v1[0]/v2[0],v1[1]/v2[1],v1[2]/v2[2]];}
|
||||||
vec3neg = func(v) {return [-v[0],-v[1],-v[2]];}
|
vec3neg = func(v) {return [-v[0],-v[1],-v[2]];}
|
||||||
vec2len = func(v) {var (x,y)=(v[0],v[1]); return sqrt(x*x+y*y);}
|
|
||||||
vec3len = func(v) {var (x,y,z)=(v[0],v[1],v[2]); return sqrt(x*x+y*y+z*z);}
|
vec3len = func(v) {var (x,y,z)=(v[0],v[1],v[2]); return sqrt(x*x+y*y+z*z);}
|
||||||
vec3norm = func(v) {var t=vec3len(v); return vec3div(v,[t,t,t]);}
|
vec3norm = func(v) {var t=vec3len(v); return vec3div(v,[t,t,t]);}
|
||||||
vec3dot = func(a,b) {return a[0]*b[0]+a[1]*b[1]+a[2]*b[2];}
|
vec3dot = func(a, b) {
|
||||||
rotateX = func(a,angle) {return [a[0],a[2]*sin(angle)+a[1]*cos(angle),a[2]*cos(angle)-a[1]*sin(angle)];}
|
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
|
||||||
rotateY = func(a,angle) {return [a[0]*cos(angle)-a[2]*sin(angle),a[1],a[0]*sin(angle)+a[2]*cos(angle)];}
|
}
|
||||||
rotateZ = func(a,angle) {return [a[0]*cos(angle)-a[1]*sin(angle),a[0]*sin(angle)+a[1]*cos(angle),a[2]];}
|
|
||||||
|
rotateX = func(a, angle) {
|
||||||
|
return [
|
||||||
|
a[0],
|
||||||
|
a[2] * sin(angle) + a[1] * cos(angle),
|
||||||
|
a[2] * cos(angle) - a[1] * sin(angle)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
rotateY = func(a, angle) {
|
||||||
|
return [
|
||||||
|
a[0] * cos(angle) - a[2] * sin(angle),
|
||||||
|
a[1],
|
||||||
|
a[0] * sin(angle) + a[2] * cos(angle)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
rotateZ = func(a, angle) {
|
||||||
|
return [
|
||||||
|
a[0] * cos(angle) - a[1] * sin(angle),
|
||||||
|
a[0] * sin(angle) + a[1] * cos(angle),
|
||||||
|
a[2]
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var clamp = func(value, _min, _max) {
|
var clamp = func(value, _min, _max) {
|
||||||
|
@ -108,7 +131,11 @@ var vec3sign = func(v) {
|
||||||
return [sign(v[0]), sign(v[1]), sign(v[2])];
|
return [sign(v[0]), sign(v[1]), sign(v[2])];
|
||||||
}
|
}
|
||||||
var vec3step = func(edge, v) {
|
var vec3step = func(edge, v) {
|
||||||
return [step(edge[0],v[0]),step(edge[1],v[1]),step(edge[2],v[2])];
|
return [
|
||||||
|
step(edge[0], v[0]),
|
||||||
|
step(edge[1], v[1]),
|
||||||
|
step(edge[2], v[2])
|
||||||
|
];
|
||||||
}
|
}
|
||||||
var vec3reflect = func(rd, n) {
|
var vec3reflect = func(rd, n) {
|
||||||
var d = vec3dot(n, rd);
|
var d = vec3dot(n, rd);
|
||||||
|
@ -119,7 +146,8 @@ var sphere = func(ro,rd,r) {
|
||||||
var b = vec3dot(ro, rd);
|
var b = vec3dot(ro, rd);
|
||||||
var c = vec3dot(ro, ro) - r * r;
|
var c = vec3dot(ro, ro) - r * r;
|
||||||
var h = b * b - c;
|
var h = b * b - c;
|
||||||
if (h<0.0) return [-1.0,-1.0];
|
if (h < 0.0)
|
||||||
|
return [-1.0, -1.0];
|
||||||
h = sqrt(h);
|
h = sqrt(h);
|
||||||
return [-b - h, -b + h];
|
return [-b - h, -b + h];
|
||||||
}
|
}
|
||||||
|
@ -132,10 +160,14 @@ var box = func(ro,rd,boxSize,outNormal) {
|
||||||
var t2 = vec3add(vec3neg(n), k);
|
var t2 = vec3add(vec3neg(n), k);
|
||||||
var tN = max(max(t1[0], t1[1]), t1[2]);
|
var tN = max(max(t1[0], t1[1]), t1[2]);
|
||||||
var tF = min(min(t2[0], t2[1]), t2[2]);
|
var tF = min(min(t2[0], t2[1]), t2[2]);
|
||||||
if (tN>tF or tF<0.0) return [-1.0,-1.0];
|
if (tN>tF or tF<0.0)
|
||||||
|
return [-1.0, -1.0];
|
||||||
var yzx = [t1[1], t1[2], t1[0]];
|
var yzx = [t1[1], t1[2], t1[0]];
|
||||||
var zxy = [t1[2], t1[0], t1[1]];
|
var zxy = [t1[2], t1[0], t1[1]];
|
||||||
var tmp=vec3mul(vec3mul(vec3neg(vec3sign(rd)), vec3step(yzx,t1)),vec3step(zxy,t1));
|
var tmp = vec3mul(
|
||||||
|
vec3mul(vec3neg(vec3sign(rd)), vec3step(yzx, t1)),
|
||||||
|
vec3step(zxy, t1)
|
||||||
|
);
|
||||||
outNormal[0] = tmp[0];
|
outNormal[0] = tmp[0];
|
||||||
outNormal[1] = tmp[1];
|
outNormal[1] = tmp[1];
|
||||||
outNormal[2] = tmp[2];
|
outNormal[2] = tmp[2];
|
||||||
|
@ -232,19 +264,25 @@ var main = func(frame) {
|
||||||
var st = maketimestamp();
|
var st = maketimestamp();
|
||||||
var run = [0, 0];
|
var run = [0, 0];
|
||||||
var frame = 1e3;
|
var frame = 1e3;
|
||||||
|
# reset required frame if given
|
||||||
if (size(runtime.argv()) != 0) {
|
if (size(runtime.argv()) != 0) {
|
||||||
var n = num(runtime.argv()[0]);
|
var n = num(runtime.argv()[0]);
|
||||||
if (!math.isnan(n)) {
|
if (!math.isnan(n)) {
|
||||||
frame = n;
|
frame = n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
st.stamp();
|
st.stamp();
|
||||||
main(frame);
|
main(frame);
|
||||||
run[0] = st.elapsedMSec();
|
run[0] = st.elapsedMSec();
|
||||||
|
|
||||||
|
# switch used matrix library
|
||||||
use_raw();
|
use_raw();
|
||||||
|
|
||||||
st.stamp();
|
st.stamp();
|
||||||
main(frame);
|
main(frame);
|
||||||
run[1] = st.elapsedMSec();
|
run[1] = st.elapsedMSec();
|
||||||
|
|
||||||
println("test 0: ",run[0]/1000,"s ",frame*1000/run[0]," fps");
|
println("total frame: ", frame);
|
||||||
println("test 1: ",run[1]/1000,"s ",frame*1000/run[1]," fps");
|
println("test [0]: ", run[0]/1000, "s with ", frame*1000/run[0], " fps");
|
||||||
|
println("test [1]: ", run[1]/1000, "s with ", frame*1000/run[1], " fps");
|
Loading…
Reference in New Issue