That would trip an assertion. May happen with the null renderer (e.g.
replay verification mode), where the fake textures are always 1x1, or
with bad sprite data.
- RESF_UNSAFE is removed.
- Resources that don't have to be finalized on the main thread can load
completely asynchronously.
- A thread waiting for a concurrent task to complete can start executing
that task itself if it hasn't started yet.
- Refactor the resource loading interface, add support for load-time
dependencies.
- Main-thread finalization of asynchronously loaded resources is now
spread out across multiple frames to mitigate frametime spikes.
- Remove some archaisms from the resource management code.
- Fix potential hashtable synchronization issue.
- Fix some deadlock edge cases.
- Don't spawn more worker threads than there are CPU cores (degrades
performance).
- Add TAISEI_AGGRESSIVE_PRELOAD env variable to attempt to aggressively
discover and preload every possible resource.
- Make r_texture_fill{,_region} expect optimal pixmaps, so that it's
never forced to convert them on the main thread. The optimal format may
be queried with the new r_texture_optimal_pixmap_format_for_type API.
These functions will also no longer needlessly copy the entire image
into a staging buffer - previously they did this even if no conversion
was needed.
- Other random changes to facilitate the stuff above.
The overall effect is somewhat faster load times.
Of course it's still all terrible and full of lock contention because I
suck at concurrent programming, but it's not worse than it was.
Probably.
http://sauerbraten.org/iqm/
The iqms were converted from the objs with the official iqm "compiler",
but can be also exported directly from Blender with a script from the
SDK.
In addition, indexed rendering was fixed (it's not useless anymore), and
the winding order convention changed from counter-clockwise to clockwise
to facilitate faster model loading.
A limited subset of IQM functionality is currently supported:
- One mesh per model.
- Only floating point data in vertex arrays.
- Only standard vertex arrays: positions, UVs, normals,
tangents.
- No animations etc.
The "standard" shader interface now receives an additional vec4 tangent
attribute. This attribute is currently ignored by shaders. The bitangent
vector can be computed in a vertex shader as:
vec3 bitangent = cross(normal, tangent.xyz) * tangent.w;
* iqm: remove axis scrambling and re-export models
* remove debug stuff
* minor edits to the ending (proper smart-quotes, small style changes)
* more minor edits to the ending (PR changes)
* grammar tweaks
* line was too long
If "linearize = true" is specified in the .tex file, colors will be
converted from the sRGB color space into the linear RGB color space on
load. Ideally this should be the default, and we should be doing all
color manipulations in linear space, but there's too many things to fix
to make that a reality.
Additionally, "multiply_alpha = false" to prevent colors from being
multiplied by the alpha channel on load.
The texture_post_load shader will no longer be applied when the
preprocessing operation is a no-op.