working for both neon32 and neon64
Update math_backend.cpp
further sse simd additions
avx2 float3 added
added normalize_magnitude
added divide fast to float3 may copy to float4
move static spheremesh to drawSphere (initialize on first use) so platform has a chance to load the math backend
all float3 and float4 functions and isas
completed all options of float3 and float4 functions in isas and math_c
neon still to be done but that will be on mac.
Update math_backend.cpp
mac isa neon update
added float3
restructured the classes to look more like the final version of the x86 classes
linux required changes
Update build-macos-clang.yml
Update build-macos-clang.yml
Revert "Update build-macos-clang.yml"
This reverts commit 29dfc567f4.
Revert "Update build-macos-clang.yml"
This reverts commit 2abad2b4ca.
Update CMakeLists.txt
fix macs stupid build
remove god awful rolling average from frame time tracker....
use intrinsic headers instead
each isa implementation now uses a header for that isa's intrinsic functions these are then used in the impl files. This will make it easier for matrix functions when those are implemented.
fixed comment saying 256 when it should be 512 for avx512
consolidated initializers for function tables
Update neon_intrinsics.h
fixes for some neon intrinsics no idea if this is the best way to do these but they work at least
v_cross is especially messy at the moment we basically just do it as a c math function need to look into getting this done correctly
deleteSelection when an output node had multiple connections only the first one was deleted, needed a new function to return a vector of connections that are now looped and deleted at the end of delete selection.
few other minor additions and fixes.
add the extra functions for drawing gui elements
RoundedRectangle:
All draw rect functions now pass through roundedRectangle which uses a shader and can draw borders, and rounds the corners
Draw thick line:
draws a line thicker than 1 pixel, uses a geometry shader to do this
Draw Circle:
Draws a circle with a border parameter.
demonstrates a bit of usage in guibitmapctrl. (do note, gui elements may need followup via altering thier clip rect depending on how folks want to end up using this)
A snippet of example code:
UTF16 pszFilter[1024];
...
convertUTF8toUTF16((UTF8 *)mData.mFilters, pszFilter, sizeof(pszFilter));
Since the conversion function is expecting the third parameter to be the
length in 16-bit characters, *not* bytes, this results in the function
writing outside the bounds of the output array.
To make this less likely to happen in the future (I hope), I've provided a
template function that infers the correct size of a static array, so it's
no longer necessary to pass the size in most cases. The sized function has
been renamed with an "N" suffix to hopefully encourage this use.
This bug was caught due to a warning from MSVC about stack corruption
occurring in codeBlock::exec(), after opening a file open dialog twice in
succession. After some hunting, I found that this was due to
FileDialog::Execute() passing incorrect buffer sizes to the conversion
function, which resulted in the function writing a null terminator into
some memory that happened to be in the stack frame of codeBlock::exec()!