-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES
437 lines (401 loc) · 20.6 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
v1.11.5
- Fix: signedness mismatch warnings in XonReadTests.
- Fix: Matrix::RotateBy() - this matrix is on the left side of the multiplication.
- Updated xm.
v1.11.4
- Reverted XonObject to holding non-smart pointers, to simplify usage.
- Removed redundant xr::Callback template specialisation for functions returning void.
- Simplified use of the metaprogramming library.
- Removed references to gtest from Windows install instructions.
v1.11.3
- Removed unnecessary code from examples that use shadow maps.
- Unittests cleanup.
- Replaced the XR_ADVANCE_PTR() macro with a constexpr function, xr::meshutil::AdvancePointer().
- xr::Quaternion and xr::Matrix API improvements.
- xr::Quaternion fixes and improvements.
- Header cleanup in xr3core math.
- Fix: xr::detail::QueueIterator<>::operator++(int) returns copy, not dangling reference.
- XonEntity modernisation / improvements.
- Added <stdexcept> #includes for GCC10 builds.
- xr::Counted(Core) fixes / improvements;
v1.11.2
- Fixed the fullscreen mode - it now takes into account the requested resolution.
- Fixed a compile error in xr::ObjectPool<>::Release(). Added unittests.
- release.sh fixes.
v1.11.1
- Fix: uses of Vcpkg's removed $(VcpkgCurrentInstalledDir) macro.
v1.11.0
- Moved Hash.hpp and TweakBench.hpp into a new utility/ folder.
- Replaced xr::SharedPoolAllocator's dynamic exception specification with noexcept for C++17.
- Updated xr::Queue<> for C++17.
- Added xr::GlobalNewAllocator and made it the default allocator used in AssetManagerImpl.
- Removed xr::ScratchBuffer::Flush() calls from examples.
- Command maintenance.
- Added the .assets/ folder to .gitignore.
- Upped the standard to C++17.
- APIs that return ownership are marked [[nodiscard]].
- Deprecated xr::Stick in favour of std::string_view.
- Deprecated xr::StringProxy in favour of std::string_view.
- Gfx instance data stride improvements.
- Made FileOp()'s destructor virtual and protected.
- Marked up debug-only parameters in the trace/assert implementation with [[maybe_unused]].
- Fixed unused parameter and missing member initialisation warnings in xr::Asset.
- xr::Linked<> cleanup.
- xr::BinaryHeap<> fixes / improvements.
- xr::HardString<> warnings fixes.
- Removed redundant asserts and names of unused parameters, from xr::Pool.
- Removed redundant assert from xr::ParserCore.
- xr3json fixes and improvements.
- Removed anonymous structs from math/vector.
- Fix: fallthrough and old-style cast warnings in murmurhash implementation.
- Explicitly sized integers in xr::Indexer2d.
- Fix: missing member initializers warnings in XonParser & XonBuildTree.
- Made more xr::Matrix methods constexpr.
- Fixed name shadowing in xr::FilePath::Up().
- Fix: various name shadowing warnings.
- xr::Image improvements.
- xr::Collage fixes and improvements.
- Removed extra semicolon from Config.hpp.
- Fix: unused parameter warning in the SDL implementation of xr::Device.
- Fix: various warnings in Gfx.
- Fix: old-style-cast warnings in GfxCore (and suppressed them in the glLoadGen-generated source)..
- xr::Transforms fixes + improvements.
- xr::ScratchBuffer warnings fixes and cleanup.
- xr::Asset::Manager and various asset types fixes and improvements.
- Suppressed GCC warnings in stb_truetype.cpp.
- Fixed warnings in xr::BoxText.
- Marked asset-building-only parameters to xr::ParseAssetOptions() as [[maybe_unused]].
- Moved repeated code in xr::Entity into a ComponentSortPredicate() function.
- Fixed implicit double promotion in xr::Camera.
- Caught DragController up with the changes in v1.10.0.
- Fix: implicit conversion in xr::IdGenerator.
- Fix: implicit conversion in meshutil.hpp
- Fix: unreferenced formal parameter in xr::Bezier.
- xr::Config fixes and improvements.
- Made the destructor of IMaterialisable virtual, since it has virtual methods.
- Added intutils.
- Created the Px typedef (uint16_t), and made all image / texture / framebuffer size use it.
- Added support for mouse capturing.
- The SDL Input implementation no longer registers a GameController that has failed to Open().
- Fix: various warnings in tests and examples.
- UIID rewrite and conversion warning fix.
- Updated xm.
- Enabled additional diagnostics.
- Cleanup: mentions of the XR namespace in comments have changed to use the correct (lower) case.
- Added xr::Linkable<> and made xr::Linked<> based on it.
- Added support for libDirs & links in config.
- Fix: removed names of unreferenced parameters in xr::SharedPoolAllocator.
- typeutils.hpp maintenance.
- functors.hpp has been deprecated & marked for removal.
- Callback maintenance.
- Added copy and move constructor to xr::Signal(Core).
- xr::IndexServer rewrite.
- Fix: run_tests_all.bat passes filters on correctly.
- Added xr::ObjectPool<> (and -Client).
- Added xr::Iterator<>.
- Release script fixes and improvements.
- Fixed xr::TweenVarPool::Remove(), which was ignoring the finish parameter.
- Fixed missing #include from debug.cpp in Clang builds.
- Added warnings.hpp with syntactic sugar for diagnostics control.
- Streamlined diagnostics control using warnings.hpp macros.
- Fixed the implicit double promotion in GL Gfx::Core::Clear() (Clang).
- Fixed the signed / unsigned mismatch in DeflatorTests.
- Build config fixes and improvements.
- Fixed the illegal naming of internal macros in debug.hpp.
- Readme update to reflect the fact that MacOS support is discontinued.
- Fix: UB in xr::TextureBuilder (pointer from temporary).
- BufferReader maintenance.
- Fix: unaligned read in xr::Material::OnLoaded().
- Gfx::ConstBuffer fixes / improvements.
- Fix: unaligned reads in murmurhash implementation.
- Fixed the use of out-of-scope stack memory in xr::meshutil::CalculateTrianglesNormals.
- Fixed UB- and Address Sanitizer finds in tests.
- Updated xm.
- Fixed unused parameter into xr::ObjectPool::Acquire().
- Suppressed old style cast Clang warnings emanating from SDL_events.h.
- Changed the MacOS build to Intel-only.
- Fix: release scripts no longer rely on custom local command.
v1.10.3
- Added scripts to facilitate releases, to tools/bash.
- xr::Animator::Stop() will call the OnStop() callback regardless completion was requested or not.
- xr::Queue<> maintenance.
- constexpr'ing up math constants.
v1.10.2
- Added an overload of xr::MakeCallback that returns a FunctionPtrCallback<>.
v1.10.1
- Fix: templates' generate_project.bat also builds vs2017 projects so VS' Vcpkg macros are available.
- Fix: do_vs_postbuild() moved to workspace.lua to make it available for xr3-based projects.
v1.10.0
- Removed precompiled external dependencies from the repo.
- Replaced gtest with xm for unit testing.
- Removed the overload of MakeCallback<>() that returns a FunctionPtrCallback<>.
- Updated stb_truetype.h to v1.24.
- xr::GfxContext fixes.
- Added xr::BinaryHeap<> and its tests.
- Added xr::ScratchBuffer::UseIndices().
- Changed the precision for milliseconds that xr::State and State::Manager take, to double.
- Changed xr;:Timer::GetUST{,Nano}() to double precision, and updated GameLoop.
- Added xr::XonValue::GetLength().
- Added facilities for structured reading, plus a XON implementation.
v1.9.2
- xr::JsonEntity maintenance and GCC v9.3.0 fixes.
- Fix: all writes by xr::HardString<>'s methods are within the bounds of its buffer.
- Fix: strrstr() no longer accessing outside of string.
- Fix: the return value from ogl_LoadFunctions is now handled correctly.
- Fix: no longer using memset() to clear Gfx objects with non-trivial structors.
v1.9.1
- Fix: attempting to create an empty vertex / index / instance data buffer no
longer results in an invalid handle.
- Removed redundant reinterpret_casts in Gfx::M.
- Fixed xr::SVector2::operator-.
- Deprecated the overloads of Hash::String() that take a boolean.
- Fix: resetting Gfx internal Program::numActiveAttribs before counting them.
- Gfx internals maintenance and minor improvements.
- xr::Asset maintenance.
- Moved LoadJob from the Asset implementation to its own files, as AssetLoadJob.
- Moved the processing of the asset path out of the AssetManagerImpl constructor.
- xr::Asset::Manager::UnloadUnused() removes unused assets completely.
v1.9.0
- xr::Animator::Animate() supports setters that take value by const reference;
- added an xr::Buffer::FromArray() overload which takes a pointer and number of
elements;
- added an xr::XonValue constructor overload that takes std::string;
- xr::StringFormatter usability and performance improvements;
- added a Reflect() method to xr::Vector2 and Vector3;
- xr::TranslateKeyCodeNative() performance improvements and more readable key
code values for Escape, Insert and Delete, deprecating previous details;
- mathutils maintenance: constexpr functions; deprecated Round();
- added xr::InvLerp<>();
- xr::Quadtree cleanup and refactor for re-entrancy and minimal size; position
and size no longer modifyable after the Quadtree was created;
- added xr::Quadtree::Translate() and Scale();
- removed redundant s_instance from xr::InputImpl;
- build_all.bat attempts to use the MSBUILD_PATH defined in the environment, or
if it wasn't, it will look for MSBuild.exe;
- added tools/linux/build_all.sh
v1.8.3
- fix: DebugDraw no longer calls EnsureMaterialExists() without calling
EnsureUniformExists() first;
- fix: XR_RAWTRACE and XR_SURVIVE may now be used from un-braced scopes;
- removed redundant data member from xr::Collage;
- replaced the use of std::function<> with a function pointer in xr::BoxText;
v1.8.2
- fix: ShaderComponentBuilder inserts #defines at the correct location.
- fix: xr::XonObject::GetKeys() checks the capacity, not the size, of the vector
supplied by the client.
- fix: synced XonBuildTree.hpp's inclusion guard with its name.
- fix: included the data/ folder in the project files for unittests.
- Unittests naming improvements - dropping "Tests" from the name of each case.
v1.8.1
- Animator optimisation, cleanup and improvements to documentation;
- improved namespacing (and consistency thereof) in unittests;
v1.8.0
- added support for loading xr::Textures from the .ktx format;
- added support for 16- and 32-bits RGB floating point texture formats;
- added xr::Stick, a convenience class for string literals;
- added xr::ReturnSelf<>, for functions that return a pointer to a function of
their own signature;
- added xr::Matrix4::Invert();
- added support for Matrix4 x Vector4 multiplication;
- added two ComponentWise() methods to floating point vector types;
- added support vector multiplication expressions in the scalar x vector form;
- added range based for support to xr::XonObject;
- added xr::Camera::GetProjectionMatrix();
- added an Image Based Lighting example;
v1.7.2
- fix: Vector4's non-compound arithmetic operators are const;
- fix: single-line C-style comments are handled correctly by ShaderComponentBuilder;
- fix: xr::Camera::SetPerspective() stores the aspect ratio;
- Constructors of vector types have changed to constexpr (where possible) and so
did the static methods returning unit / zero / etc. vectors;
v1.7.1
- fix: TextureBuilder can locate the file extension even when asset options were
supplied;
- fix: ShaderBuilder no longer obliterates the entire source when replacing
comments on MacOS - more than 0 instances of the comment sub-expression must
be found for a match;
- fix: xr::Align<>() no longer increases the value if it's already aligned;
- fix: TextureBuilder size checks no longer ignore height; added missing first
string argument for LTRACE() in error messages;
- the MacOS version of generate_projects.sh may now be successfully invoked from
outside of its directory;
v1.7.0
- fix: xr::FilePath::GetExt() is looking for the first, rather than the last
occurrence of the '.';
- fix: ShaderBuilder uses the first rather than the last '.' to determine the
extension;
- fix: eliminated out of bounds access in shader compilation error reporting
from GfxCore;
- fix: xr::Image::Save() is now a const method;
- fix: fixed the calculation of the perspective multiple in xr::Transforms and
xr::Camera, also decoupling it resolution reported by Gfx;
- added support to asset options that are appended to the file path (i.e. after
the extension) rather than to the file name;
- added support for configuring shader #defines using asset options, in
xr::Shader and xr::ShaderComponent;
- ShaderBuilder removes comments and whitespace bloat from shader source;
- shader compilation error reporting outputs line numbers;
- added xr::ScratchBuffer::Handles and Bake();
- added xr::SpriteSheet;
- added xr::Collage, for the runtime building of sprite sheets;
- added xr::Sprite::RemapUVs();
- added xr::Sprite;:GetPitch(), which supersedes GetStride();
- added an xr::MakeCallback() overload for free standing functions;
- added support for enabling stencil test from material assets;
v1.6.3
- fixed array uniform registrations not being found;
- changed xr::XonObject::GetKeys() to a const method;
- added an xr::MakeCallback() overload for const methods;
- added unit tests for xr::Animator and cleaned up the class;
v1.6.2
- fixed a nullptr dereference in xr::Entity;
- (GL) enabled point size control from shader programs;
- relaxed the constness of xr::Animator::Handle members to allow assigning
Handle objects;
- added xr::DebugDraw::SetState();
- added xr::Linked<T>::ForEach() overload that works with member methods of T,
and added support for variadic arguments to the pre-existing overload;
- added support for const member methods to xr::MemberCallback<>;
v1.6.1
- fixed xr::Gfx active resource caching: when a texture / framebuffer / shader
program is released and it's found to be active, it's invalidated (and in case
of frame buffers, the currently active one - if different -, is bound again).
Textures and frame buffers also will no longer be accidentally active after
their creation;
- fixed xr::Transforms: the near / far / tangent of half vertical FOV values
are now calculated from an arbitrary projection matrix (unless they were
provided);
- fixed Example09: the post-process shader doesn't need the aspect ratio, since
the frame buffer has the same dimensions as the screen;
- changed the Vertex order in xr::Quad, to make it easier to render a quad as a
triangle strip as well. NOTE: uses relying on xr::Quad::kIndices must swap the
second and third vertex (NE and SW);
- xr::GameLoop is no longer performing Input::Update(), to make it more generic;
- xr::GameLoop is now an XR_NONOBJECT;
- added a template for project creation (and refactored xr3's premake to share
bits of it);
v1.6.0
- deprecation of enum values from Primitive and BoxText is now enforced;
- fixed the handling of mipmaps in that they're only generated when requested;
- added mipmap filtering modes to Gfx, and a Gfx::F_TEXTURE_MIPMAP_NEAREST to
disable trilinear filtering (which is default for mipmaps);
- replaced the use of Texture's user flags for controlling options at creation,
with support for parsing options from the file name;
- added support for a .tex format to define xr::Textures;
- added support for cubemaps to xr::Texture, and an example for demonstration;
- added a new xr::Animator class to replace xr::Tweener and its auxilaries as a
more generic and robust facility for value animation;
- enabled multi-processor compilation for VS builds on Windows;
v1.5.2
- fixed xr::TypeId<>() on (MSVC) Release builds;
- fixed xr::Gfx::CreateTexture() - no longer generating mipmaps when not
requested;
- removed usages of deprecated xr::Primitive values;
v1.5.1
- fixed the handling of window size in xr::Device::Init(): it stores the size of
the window that we get from SDL2, rather than the size that was requested.
This fixes touch handling in full screen mode;
- fixed null pointer dereference in xr::Entity::UpdateWorldTransform();
- fixed projection calculation in xr::ViewRayCaster::GetViewRay();
- fixed xr::Bezier()'s return type, stripping cv-qualifiers and references;
- modified XR_ASSET_DECL() to generate a Create() method returning a pointer
to the concrete type, and modified XR_ASSET_DEF() to wrap it with a function
for the creation of the related AssetReflector;
- moved BezierImpl to the xr::details namespace;
- added an aspect ratio member to xr::ViewRayCaster and an overload of
GetViewRay() that accepts it from client code; deprecated the one only relying
on Gfx as both incorrect and overly restrictive;
- added an overload of xr::Bezier() with less verbose usage for entire, static
arrays;
- added methods for component-wise setting of xr::Entity's local translation and
scale;
- added xr::Ray::GetPoint() and GetEnd();
v1.5.0
- xr::Font fixes:
* fixed the number of glyphs written to the built asset, excluding the ones
that were requested, but aren't available in the font;
* fixed memory corruption caused by incorrect sizing of intermediate glyph
bitmap buffers;
* fixed the logging of an error message when failing to write glyph bitmap
data;
- fixed asserts in BoxText::Generate() - reaching the end of the vertex buffer
is only an error if there's more glyphs to write;
- ENABLE_GLYPH_DEBUG no longer writes individual .tgas, rather than dumping
glyph data to stdout, for both the bitmap and SDF;
- SDF generation is now optional to allow better quality where text is not put
through scaling / rotation and sharp corners are desired;
- added xr::Font::GetGlyphBitmapData();
- minor const correctness improvement in AssetPackBuilder;
- updated Example 03 to demonstrate a use of xr::Sprites;
v1.4.1
- Made xr::BoxText::Generate() and CreateMesh() const methods;
v1.4.0
- fixed multiple bugs around new lines, discarding whitespace and calculating
line width, in xr::BoxText::Measure();
- fixed xr::BoxText::Generate() - removed first glyph xBearing from the cursor
calculation as already accounted for in the Measurement;
- fixed xr::BoxText::CreateMesh() - empty measurements are safely ignored;
- fixed LogMemory() bugs:
* removed out of bounds access;
* all 16 bytes of the 'row' are printed in a human readable form;
- fixed AssetTests to no longer run in Release;
- improved xr::BoxText's usability:
* improved the handling of Windows-style line breaks (CR/LF);
* default box width is the maximum value float can represent;
* added EnsureVerticalFit() to grow the box (if smaller) to
n lines with given font and scale;
* added Get/SetOrigin() to facilitate positioning the text;
* added Get/SetHorizontal/VerticalSpacing();
* added overloads to Measure() / CreateMesh() that take the
number of bytes [of text] to be processed;
- added VS debug visualisers for the most commonly used types;
- updated premake to 5.0.0-alpha13 on all platforms;
v1.3.0
- fixed xr::AssetPack's handling of dependencies and aliases:
* fixed the management of AssetPack contents - when UnmanagedFlag was set, it
is only the AssetPack itself that isn't managed;
* fixed redundant building and writing of contents that are also dependencies
of other content;
* dependencies not defined in the pack but having a dependency on content,
are now being built into the pack;
* the availability of internal dependencies is now ensured;
* multiply defined assets (of the same path) are ignored with a warning;
* multiply defined aliases override previous definitions with a warning;
- xr::CallbackBase<>::Call() is now a const method;
- deprecated xr::AssetPack::Get() in favour of the new GetAssetPtr();
- xr::Asset::Manager::Manage() only acquires the lock if the asset was valid in
the first place;
- added xr::AssetPack::GetAsset<>();
- added xr::GameLoop;
- added xr::ReverseAdaptor<>;
v1.2.0
- fixed xr::Entity::FindComponent<>();
- fixed xr::Entity::AddComponent<>() - owner is correctly assigned;
- fixed xr::Entity::Clone() - cloning an Entity as a child to itself no longer
causes infinite recursion, and the owner of cloned Components is now correctly
assigned;
- fixed xr::StateManager::Pop/Change(), where the current state is now Exit()ed
first and only Shutdown() once;
- fixed inconsistencies in the uses of int types in the Gfx API;
- added multi-threaded Gfx implementation;
- added support for PointList Primitives in Gfx;
v1.1.2
- fixed a broken include in Singleton.hpp;
- deprecated the option to transfer ownership of a texture via
GFx::CreateFrameBuffer();
- improved error logging from ShaderComponent and Shader;
- added Singleton::Instance() and deprecated GetInst();
- added C++14-standard deprecation markers to previously deprecated APIs;
- changed InputImpl to a Singleton;
v1.1.1
- GCC v5.4 compilation errors fixed;
v1.1
- fixed macOS build configuration and Clang compilation / link errors;
- fixed GLSL syntax that would not fly on macOS;
- fixed Entity/Component implementation (and AddComponent());
- added xr::FixedStreamBuf to xr3core;
- added xr::Config to replace Device::GetConfig{|Int}() and changed
implementation to use environment variables;
- added Linux (64-bits) as a supported platform;
v1.0
- Initial release.