Vladimír Vondruš
d46061b285
Make MeshPrimitive and MeshIndexType enums only 8bit.
...
Otherwise they take up too much space.
6 years ago
Vladimír Vondruš
520c22f2fe
New VertexFormat enum.
...
This deliberately doesn't follow the PixelFormat enum naming, as RGBA
components make no sense for most vertex data. Checking Metal and
WebGPU, they seem to have arrived at a similar conclusion, only VkFormat
is an outlier.
6 years ago
Vladimír Vondruš
7fd92c10dd
Reserve zero MeshPrimitive and MeshIndexType for invalid values.
...
Better for checking accidents, as picking a wrong primitive / index type
can lead to *serious* rendering issues. Similarly to a change done to
(Compressed)PixelFormat in 2019.10.
6 years ago
Vladimír Vondruš
87c2bc74fe
MeshTools: implement removeDuplicates() for discrete data as well.
6 years ago
Vladimír Vondruš
bae5eecf42
MeshTools: compressIndices() now takes also an offset.
6 years ago
Vladimír Vondruš
1974da2635
MeshTools: added a type-erased compressIndices().
...
Useful when consuming the indices straight from MeshData.
6 years ago
Vladimír Vondruš
937689ea61
MeshTools: deSTLify compressIndices().
...
There's a lot to change with the current version -- the bloaty tuple,
the useless min/max, and compressing all the way down to 8 bits is not
desirable anymore either. The new function allows to specify a minimal
type to compress to and works also on 8- and 16-byte types, which makes
it possible to also inflate a smaller type into a larger one.
The old function is now deprecated.
6 years ago
Vladimír Vondruš
75eefdbe70
MeshTools: adapt flipFaceWinding(), flipNormals() and tipsify() tests.
6 years ago
Vladimír Vondruš
b589f15640
MeshTools: deSTLify flipNormals(), flipFaceWinding() and tipsify().
...
And rename them to *InPlace(), since that's what they do. The original
STL variants are now deprecated wrappers over the new names. Not
adapting the test yet in order to test everything is alright.
6 years ago
Vladimír Vondruš
77d7931df2
MeshTools: added a STL-less subdivide().
...
The subdivideInPlace() alone wasn't convenient enough.
6 years ago
Vladimír Vondruš
78a29431b1
MeshTools: duplicateInto() taking also type-erased indices.
6 years ago
Vladimír Vondruš
aeedf1264d
MeshTools: generateSmoothNormals() taking also type-erased indices.
6 years ago
Vladimír Vondruš
1684ccac2d
MeshTools: simplify test code a bit.
...
We have new less shitty APIs, so use them!
6 years ago
Vladimír Vondruš
db502c1acf
MeshTools: this test didn't test the NaNs at all.
...
I wonder what was I doing back then.
6 years ago
Vladimír Vondruš
24d01e29c8
MeshTools: update an assertion text, add a test for it.
6 years ago
Vladimír Vondruš
735c59e96b
MeshTools: added a duplicateInto() variant taking a 2D strided array view.
...
This also allowed me to move all the complexity and assertions into a
cpp file, no longer polluting the header.
6 years ago
Vladimír Vondruš
29f0fdb188
MeshTools: explicit generateSmoothNormals() overloads for each index type.
...
The templated version had the unfortunate "feature" of not being able to
figure out the type when an array view or a C array got passed to it.
That led to worse-than-ideal UX and even though it's now a bit more
verbose on the implementation side, it's the preferred solution.
6 years ago
Vladimír Vondruš
2f15f95ab5
MeshTools: this is also new since last release.
6 years ago
Vladimír Vondruš
847e3c8e49
MeshTools: group similar functions together.
6 years ago
Vladimír Vondruš
677b24a807
MeshTools: doc++
6 years ago
Vladimír Vondruš
a1924f55c4
MeshTools: subdivideInPlace() accepts strided indices of any type.
...
Also vastly improved tests and docs.
6 years ago
Vladimír Vondruš
1c74a87f24
Primitives: use a more efficient duplicate removal approach in Icosphere.
...
It's still extremely bad, but at least something.
6 years ago
Vladimír Vondruš
ea7259b424
MeshTools: add STL-free removeDuplicatesInPlace() & an indexed variant also.
6 years ago
Vladimír Vondruš
274759c0be
MeshTools: clean up and clarify removeDuplicates().
...
I spent a week (!) thinking the extra remapping array is not necessary.
Actually, it is (though with a non-shitty hashmap the allocation could
be done for both) -- this was an university assignment almost a decade
ago and it wouldn't pass if it would be wasting time.
But the english of past me was horrible. Yes.
6 years ago
Vladimír Vondruš
4f0170ace4
GL: taking just an init list in MeshView::draw() was a stupid idea.
...
With just that, it wouldn't be possible to draw a runtime-dependent
amount of MeshViews (for example when culling them).
6 years ago
Vladimír Vondruš
881003d90b
Test: adapt tests to change in TestSuite float epsilon precisions.
6 years ago
Vladimír Vondruš
c68cee85c2
package/ci: switch to a WebAssembly build.
...
I'm tired of dealing with alignment issues on asm.js. Also Homebrew FFS.
6 years ago
Vladimír Vondruš
ab0cba2573
Math: minor cleanup.
6 years ago
Vladimír Vondruš
53151f606a
Math: ensure TypeTraits fuzzy compare is consistent with TestSuite.
...
It wasn't until now (TestSuite was wrong), so prevent similar issues
from happening in the future.
6 years ago
Vladimír Vondruš
cff219d986
doc: make vcpkg/hunter instructions easier to find.
6 years ago
Vladimír Vondruš
6794df83b3
doc: fix dead links to Hunter.
6 years ago
Vladimír Vondruš
513f3f5392
doc: avoid linking to deprecated features.
6 years ago
Vladimír Vondruš
526254912e
doc: updated credits and changelog.
6 years ago
Squareys
a0e6ac1ed0
Math: Non-const overloads for Frustum::(left|right|top|bottom|near|far|[])
...
Signed-off-by: Squareys <squareys@googlemail.com>
6 years ago
Vladimír Vondruš
7c25dc64f2
GL: reading from front buffer is n/a on WebGL, so don't expose that.
6 years ago
Vladimír Vondruš
c6619fc685
doc: thanks, Doxygen, but no.
...
No, this was definitely not meant to be a code block that's 100
kilometers wide and for some strange reason contains raw XML data of the
whole docblock. This should FAIL instead of silently putting everything
on fire.
6 years ago
Vladimír Vondruš
af05883ec8
GL: doc++
6 years ago
Vladimír Vondruš
3f57130547
GL, Vk: future-proof mesh primitive and index mapping tables.
...
The test now explicitly goes through all generic names and checks that
the mapping doesn't blow up.
6 years ago
Vladimír Vondruš
b5d9e1cfb7
GL: improve a test.
...
It's tested everywhere but here so I guess it was some accidental
omission.
6 years ago
Vladimír Vondruš
8f52397027
Trade: mark new APIs as such.
6 years ago
Vladimír Vondruš
d2122a3811
Vk: the heck?!
...
I copypasted real bad here.
6 years ago
Vladimír Vondruš
4c6c734dbe
Document mapping of MeshPrimitive to D3D and Metal.
6 years ago
Vladimír Vondruš
592d11a9d2
doc: link to latest Vulkan spec, and the non-chunked extensions.
...
Slightly better for loading times but still eh.
6 years ago
Vladimír Vondruš
02d1eda03a
Vk: support 8-bit index types.
6 years ago
Vladimír Vondruš
f98640a2b3
external: update Vulkan headers to latest spec.
6 years ago
Vladimír Vondruš
5b61f64a50
doc: another day, another heap of Doxygen fun.
6 years ago
Vladimír Vondruš
92a9940628
AnyImageImporter: make the plugin movable.
...
Needed for caching in importers that support mip level import.
6 years ago
Vladimír Vondruš
dfacd7fb2d
Trade: support mip levels in image import.
...
There's a new level option in each imageND() API, plus an
imageNDLevelCount() query to get image level count.
6 years ago
Vladimír Vondruš
010e684071
doc: updated changelog.
6 years ago
Jackson Campolattaro
e519edfb29
doc: removed text suggesting Vcpkg is windows-only.
...
The Vcpkg package manager is cross platform, so its section header
doesn't need to mention Windows.
6 years ago