Reorganize everything #2

Merged
judah merged 6 commits from rejigger into master 2025-09-06 07:07:00 +00:00
Showing only changes of commit 083cfdb035 - Show all commits

View file

@ -156,8 +156,33 @@ make_look_at :: (camera: Vec3, at: Vec3, up_vector: Vec3) -> Mat4
}
operator* :: (a: Mat4, b: Mat4) -> Mat4 {
#if CPU == .X64 {
return mul_sse(a, b);
}
else {
r: Mat4 = ---;
r._00 = a._00*b._00 + a._01*b._10 + a._02*b._20 + a._03*b._30;
r._01 = a._00*b._01 + a._01*b._11 + a._02*b._21 + a._03*b._31;
r._02 = a._00*b._02 + a._01*b._12 + a._02*b._22 + a._03*b._32;
r._03 = a._00*b._03 + a._01*b._13 + a._02*b._23 + a._03*b._33;
r._10 = a._10*b._00 + a._11*b._10 + a._12*b._20 + a._13*b._30;
r._11 = a._10*b._01 + a._11*b._11 + a._12*b._21 + a._13*b._31;
r._12 = a._10*b._02 + a._11*b._12 + a._12*b._22 + a._13*b._32;
r._13 = a._10*b._03 + a._11*b._13 + a._12*b._23 + a._13*b._33;
r._20 = a._20*b._00 + a._21*b._10 + a._22*b._20 + a._23*b._30;
r._21 = a._20*b._01 + a._21*b._11 + a._22*b._21 + a._23*b._31;
r._22 = a._20*b._02 + a._21*b._12 + a._22*b._22 + a._23*b._32;
r._23 = a._20*b._03 + a._21*b._13 + a._22*b._23 + a._23*b._33;
r._30 = a._30*b._00 + a._31*b._10 + a._32*b._20 + a._33*b._30;
r._31 = a._30*b._01 + a._31*b._11 + a._32*b._21 + a._33*b._31;
r._32 = a._30*b._02 + a._31*b._12 + a._32*b._22 + a._33*b._32;
r._33 = a._30*b._03 + a._31*b._13 + a._32*b._23 + a._33*b._33;
return r;
}
}
// Note(Jesse): If you want to make it symmetric go ahead, I usually don't
operator* :: (a: Mat4, v: Vec4) -> Vec4 {
@ -465,25 +490,6 @@ mul_sse :: inline (a: Mat4, b: Mat4) -> Mat4 {
movups [*r + 48], r0;
}
// r._00 = a._00*b._00 + a._01*b._10 + a._02*b._20 + a._03*b._30;
// r._01 = a._00*b._01 + a._01*b._11 + a._02*b._21 + a._03*b._31;
// r._02 = a._00*b._02 + a._01*b._12 + a._02*b._22 + a._03*b._32;
// r._03 = a._00*b._03 + a._01*b._13 + a._02*b._23 + a._03*b._33;
// r._10 = a._10*b._00 + a._11*b._10 + a._12*b._20 + a._13*b._30;
// r._11 = a._10*b._01 + a._11*b._11 + a._12*b._21 + a._13*b._31;
// r._12 = a._10*b._02 + a._11*b._12 + a._12*b._22 + a._13*b._32;
// r._13 = a._10*b._03 + a._11*b._13 + a._12*b._23 + a._13*b._33;
// r._20 = a._20*b._00 + a._21*b._10 + a._22*b._20 + a._23*b._30;
// r._21 = a._20*b._01 + a._21*b._11 + a._22*b._21 + a._23*b._31;
// r._22 = a._20*b._02 + a._21*b._12 + a._22*b._22 + a._23*b._32;
// r._23 = a._20*b._03 + a._21*b._13 + a._22*b._23 + a._23*b._33;
// r._30 = a._30*b._00 + a._31*b._10 + a._32*b._20 + a._33*b._30;
// r._31 = a._30*b._01 + a._31*b._11 + a._32*b._21 + a._33*b._31;
// r._32 = a._30*b._02 + a._31*b._12 + a._32*b._22 + a._33*b._32;
// r._33 = a._30*b._03 + a._31*b._13 + a._32*b._23 + a._33*b._33;
return r;
}
// Note(Jesse): This procedure will crash if it tries to store or access an element across a cache line