|
@@ -21,24 +21,24 @@
|
|
'
|
|
'
|
|
SuperStrict
|
|
SuperStrict
|
|
|
|
|
|
-
|
|
|
|
|
|
+Import brl.standardio
|
|
Global Mat4Identity:Float[] = [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0]
|
|
Global Mat4Identity:Float[] = [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0]
|
|
|
|
|
|
-Function Vec4Init( x:Float,y:Float,z:Float,w:Float,r:Float[] )
|
|
|
|
|
|
+Function Vec4Init( x:Float,y:Float,z:Float,w:Float,r:Float Ptr )
|
|
r[0]=x
|
|
r[0]=x
|
|
r[1]=y
|
|
r[1]=y
|
|
r[2]=z
|
|
r[2]=z
|
|
r[3]=w
|
|
r[3]=w
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Vec4Copy( v:Float[],r:Float[] )
|
|
|
|
|
|
+Function Vec4Copy( v:Float Ptr,r:Float Ptr )
|
|
r[0]=v[0]
|
|
r[0]=v[0]
|
|
r[1]=v[1]
|
|
r[1]=v[1]
|
|
r[2]=v[2]
|
|
r[2]=v[2]
|
|
r[3]=v[3]
|
|
r[3]=v[3]
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Vec4CopySrcDst( v:Float[],r:Float[],src:Int,dst:Int )
|
|
|
|
|
|
+Function Vec4CopySrcDst( v:Float Ptr,r:Float Ptr,src:Int,dst:Int )
|
|
r[0+dst]=v[0+src]
|
|
r[0+dst]=v[0+src]
|
|
r[1+dst]=v[1+src]
|
|
r[1+dst]=v[1+src]
|
|
r[2+dst]=v[2+src]
|
|
r[2+dst]=v[2+src]
|
|
@@ -49,25 +49,25 @@ Function Mat4New:Float[]()
|
|
Return [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0]
|
|
Return [1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,0.0,0.0,1.0]
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Init( ix:Float,jy:Float,kz:Float,tw:Float,r:Float[] )
|
|
|
|
|
|
+Function Mat4Init( ix:Float,jy:Float,kz:Float,tw:Float,r:Float Ptr )
|
|
r[0]= ix; r[1]= 0; r[2]= 0; r[3]= 0
|
|
r[0]= ix; r[1]= 0; r[2]= 0; r[3]= 0
|
|
r[4]= 0; r[5]= jy; r[6]= 0; r[7]= 0
|
|
r[4]= 0; r[5]= jy; r[6]= 0; r[7]= 0
|
|
r[8]= 0; r[9]= 0; r[10]=kz; r[11]= 0
|
|
r[8]= 0; r[9]= 0; r[10]=kz; r[11]= 0
|
|
r[12]= 0; r[13]= 0; r[14]= 0; r[15]=tw
|
|
r[12]= 0; r[13]= 0; r[14]= 0; r[15]=tw
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4InitFull( ix:Float,iy:Float,iz:Float,iw:Float,jx:Float,jy:Float,jz:Float,jw:Float,kx:Float,ky:Float,kz:Float,kw:Float,tx:Float,ty:Float,tz:Float,tw:Float,r:Float[] )
|
|
|
|
|
|
+Function Mat4InitFull( ix:Float,iy:Float,iz:Float,iw:Float,jx:Float,jy:Float,jz:Float,jw:Float,kx:Float,ky:Float,kz:Float,kw:Float,tx:Float,ty:Float,tz:Float,tw:Float,r:Float Ptr )
|
|
r[0]= ix;r[1]= iy;r[2]= iz;r[3]= iw
|
|
r[0]= ix;r[1]= iy;r[2]= iz;r[3]= iw
|
|
r[4]= jx;r[5]= jy;r[6]= jz;r[7]= jw
|
|
r[4]= jx;r[5]= jy;r[6]= jz;r[7]= jw
|
|
r[8]= kx;r[9]= ky;r[10]=kz;r[11]=kw
|
|
r[8]= kx;r[9]= ky;r[10]=kz;r[11]=kw
|
|
r[12]=tx;r[13]=ty;r[14]=tz;r[15]=tw
|
|
r[12]=tx;r[13]=ty;r[14]=tz;r[15]=tw
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4InitArray( r:Float[] )
|
|
|
|
|
|
+Function Mat4InitArray( r:Float Ptr )
|
|
Mat4Init 1,1,1,1,r
|
|
Mat4Init 1,1,1,1,r
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Copy( m:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Copy( m:Float Ptr,r:Float Ptr )
|
|
r[0]=m[0]
|
|
r[0]=m[0]
|
|
r[1]=m[1]
|
|
r[1]=m[1]
|
|
r[2]=m[2]
|
|
r[2]=m[2]
|
|
@@ -86,14 +86,14 @@ Function Mat4Copy( m:Float[],r:Float[] )
|
|
r[15]=m[15]
|
|
r[15]=m[15]
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Ortho( Left:Float,Right:Float,bottom:Float,top:Float,znear:Float,zfar:Float,r:Float[] )
|
|
|
|
|
|
+Function Mat4Ortho( Left:Float,Right:Float,bottom:Float,top:Float,znear:Float,zfar:Float,r:Float Ptr )
|
|
Local w:Float=Right-Left
|
|
Local w:Float=Right-Left
|
|
Local h:Float=top-bottom
|
|
Local h:Float=top-bottom
|
|
Local d:Float=zfar-znear
|
|
Local d:Float=zfar-znear
|
|
Mat4InitFull 2.0/w,0,0,0, 0,2.0/h,0,0, 0,0,2.0/d,0, -(Right+Left)/w,-(top+bottom)/h,-(zfar+znear)/d,1,r
|
|
Mat4InitFull 2.0/w,0,0,0, 0,2.0/h,0,0, 0,0,2.0/d,0, -(Right+Left)/w,-(top+bottom)/h,-(zfar+znear)/d,1,r
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Frustum( Left:Float,Right:Float,bottom:Float,top:Float,znear:Float,zfar:Float,r:Float[] )
|
|
|
|
|
|
+Function Mat4Frustum( Left:Float,Right:Float,bottom:Float,top:Float,znear:Float,zfar:Float,r:Float Ptr )
|
|
Local w:Float=Right-Left
|
|
Local w:Float=Right-Left
|
|
Local h:Float=top-bottom
|
|
Local h:Float=top-bottom
|
|
Local d:Float=zfar-znear
|
|
Local d:Float=zfar-znear
|
|
@@ -101,11 +101,11 @@ Function Mat4Frustum( Left:Float,Right:Float,bottom:Float,top:Float,znear:Float,
|
|
Mat4InitFull znear2/w,0,0,0, 0,znear2/h,0,0, (Right+Left)/w,(top+bottom)/h,(zfar+znear)/d,1, 0,0,-(zfar*znear2)/d,0, r
|
|
Mat4InitFull znear2/w,0,0,0, 0,znear2/h,0,0, (Right+Left)/w,(top+bottom)/h,(zfar+znear)/d,1, 0,0,-(zfar*znear2)/d,0, r
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Transpose( m:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Transpose( m:Float Ptr,r:Float Ptr )
|
|
Mat4InitFull m[0],m[4],m[8],m[12], m[1],m[5],m[9],m[13], m[2],m[6],m[10],m[14], m[3],m[7],m[11],m[15],r
|
|
Mat4InitFull m[0],m[4],m[8],m[12], m[1],m[5],m[9],m[13], m[2],m[6],m[10],m[14], m[3],m[7],m[11],m[15],r
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Inverse( m:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Inverse( m:Float Ptr,r:Float Ptr )
|
|
r[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10]
|
|
r[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10]
|
|
r[4] =-m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] - m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10]
|
|
r[4] =-m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] - m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10]
|
|
r[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] + m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9]
|
|
r[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] + m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9]
|
|
@@ -128,7 +128,7 @@ Function Mat4Inverse( m:Float[],r:Float[] )
|
|
Next
|
|
Next
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Multiply( m:Float[],n:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Multiply( m:Float Ptr,n:Float Ptr,r:Float Ptr )
|
|
Mat4InitFull( ..
|
|
Mat4InitFull( ..
|
|
m[0]*n[0] + m[4]*n[1] + m[8]*n[2] + m[12]*n[3], m[1]*n[0] + m[5]*n[1] + m[9]*n[2] + m[13]*n[3], m[2]*n[0] + m[6]*n[1] + m[10]*n[2] + m[14]*n[3], m[3]*n[0] + m[7]*n[1] + m[11]*n[2] + m[15]*n[3], ..
|
|
m[0]*n[0] + m[4]*n[1] + m[8]*n[2] + m[12]*n[3], m[1]*n[0] + m[5]*n[1] + m[9]*n[2] + m[13]*n[3], m[2]*n[0] + m[6]*n[1] + m[10]*n[2] + m[14]*n[3], m[3]*n[0] + m[7]*n[1] + m[11]*n[2] + m[15]*n[3], ..
|
|
m[0]*n[4] + m[4]*n[5] + m[8]*n[6] + m[12]*n[7], m[1]*n[4] + m[5]*n[5] + m[9]*n[6] + m[13]*n[7], m[2]*n[4] + m[6]*n[5] + m[10]*n[6] + m[14]*n[7], m[3]*n[4] + m[7]*n[5] + m[11]*n[6] + m[15]*n[7], ..
|
|
m[0]*n[4] + m[4]*n[5] + m[8]*n[6] + m[12]*n[7], m[1]*n[4] + m[5]*n[5] + m[9]*n[6] + m[13]*n[7], m[2]*n[4] + m[6]*n[5] + m[10]*n[6] + m[14]*n[7], m[3]*n[4] + m[7]*n[5] + m[11]*n[6] + m[15]*n[7], ..
|
|
@@ -136,7 +136,7 @@ Function Mat4Multiply( m:Float[],n:Float[],r:Float[] )
|
|
m[0]*n[12] + m[4]*n[13] + m[8]*n[14] + m[12]*n[15], m[1]*n[12] + m[5]*n[13] + m[9]*n[14] + m[13]*n[15], m[2]*n[12] + m[6]*n[13] + m[10]*n[14] + m[14]*n[15], m[3]*n[12] + m[7]*n[13] + m[11]*n[14] + m[15]*n[15],r )
|
|
m[0]*n[12] + m[4]*n[13] + m[8]*n[14] + m[12]*n[15], m[1]*n[12] + m[5]*n[13] + m[9]*n[14] + m[13]*n[15], m[2]*n[12] + m[6]*n[13] + m[10]*n[14] + m[14]*n[15], m[3]*n[12] + m[7]*n[13] + m[11]*n[14] + m[15]*n[15],r )
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Transform( m:Float[],v:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Transform( m:Float Ptr,v:Float Ptr,r:Float Ptr )
|
|
Vec4Init( ..
|
|
Vec4Init( ..
|
|
m[0]*v[0] + m[4]*v[1] + m[8] *v[2] + m[12]*v[3],..
|
|
m[0]*v[0] + m[4]*v[1] + m[8] *v[2] + m[12]*v[3],..
|
|
m[1]*v[0] + m[5]*v[1] + m[9] *v[2] + m[13]*v[3], ..
|
|
m[1]*v[0] + m[5]*v[1] + m[9] *v[2] + m[13]*v[3], ..
|
|
@@ -144,7 +144,7 @@ Function Mat4Transform( m:Float[],v:Float[],r:Float[] )
|
|
m[3]*v[0] + m[7]*v[1] + m[11]*v[2] + m[15]*v[3],r )
|
|
m[3]*v[0] + m[7]*v[1] + m[11]*v[2] + m[15]*v[3],r )
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Project( m:Float[],v:Float[],r:Float[] )
|
|
|
|
|
|
+Function Mat4Project( m:Float Ptr,v:Float Ptr,r:Float Ptr )
|
|
Vec4Init( ..
|
|
Vec4Init( ..
|
|
m[0]*v[0] + m[4]*v[1] + m[8] *v[2] + m[12]*v[3], ..
|
|
m[0]*v[0] + m[4]*v[1] + m[8] *v[2] + m[12]*v[3], ..
|
|
m[1]*v[0] + m[5]*v[1] + m[9] *v[2] + m[13]*v[3], ..
|
|
m[1]*v[0] + m[5]*v[1] + m[9] *v[2] + m[13]*v[3], ..
|
|
@@ -159,7 +159,7 @@ End Function
|
|
Function Mat4Roll( rz:Float,m:Float[] )
|
|
Function Mat4Roll( rz:Float,m:Float[] )
|
|
End Function
|
|
End Function
|
|
|
|
|
|
-Function Mat4Scale( x:Float,y:Float,z:Float,m:Float[] )
|
|
|
|
|
|
+Function Mat4Scale( x:Float,y:Float,z:Float,m:Float Ptr )
|
|
m[0]=x;m[1]=0;m[2]=0;m[3]=0
|
|
m[0]=x;m[1]=0;m[2]=0;m[3]=0
|
|
m[4]=0;m[5]=y;m[6]=0;m[7]=0
|
|
m[4]=0;m[5]=y;m[6]=0;m[7]=0
|
|
m[8]=0;m[9]=0;m[10]=1;m[11]=0
|
|
m[8]=0;m[9]=0;m[10]=1;m[11]=0
|