Commit Graph

417 Commits

Author SHA1 Message Date
Lioncash 1382bbf365 hecl/FourCC: Implement operator!= in terms of operator==
Deduplicates the amount of written code. Now code only needs to ever
change in operator== to automatically reflect across the two functions.
2019-08-15 06:48:38 -04:00
Lioncash 06c436b68d hecl/FourCC: Eliminate undefined behavior within FourCC interface
Type punning like this isn't actually well-defined behavior. Only
casting to char/unsigned char is well defined. This presents a problem
when using FourCC instances in constexpr contexts, given constexpr
contexts are forbidden from having undefined behavior in them.

Because of that, any attempt to use the const char* constructor within a
constexpr context would always result in a compilation error.
2019-08-15 06:48:31 -04:00
Lioncash 0f74cce2ca hecl/FourCC: Tidy up constructors
Marks constructors as noexcept and explicitly defaults the copy
constructor/assignment and move constructor/assignment.
2019-08-15 05:28:11 -04:00
Lioncash 9ec19d99cd hecl/hecl: Make hash constructors explicit where applicable 2019-08-15 03:06:56 -04:00
Lioncash 06548409f8 hecl/hecl: Make Hash constexpr 2019-08-15 03:00:42 -04:00
Lioncash 216b038a7d hecl/SystemChar: Unify StrLen implementations and make constexpr
We can utilize std::char_traits to generically handle the defined
character type. Since C++17, std::char_traits' length() function is
constexpr, so we can also make StrLen constexpr.
2019-08-15 02:28:31 -04:00
Lioncash 58e0c7eaa7 hecl/SystemChar: Cast to unsigned char before calling tolower/toupper
Performed for the same reasons outlined within
b32f16b519eafacb9de4852855486270f73d5e2e (avoiding undefined behavior).
2019-08-15 02:28:31 -04:00
Lioncash b63d848846 hecl/hecl: Amend lingering formatting inconsistencies
Amends formatting issues that were pre-existing to get them out of the
way.
2019-08-15 02:28:09 -04:00
Lioncash 485782e3a7 hecl/hecl: Convert typedefs to using aliases
Same thing, but slightly nicer to read.
2019-08-15 02:26:12 -04:00
Lioncash eb872cdf88 hecl/hecl: Assign ResourceLock's good member in the initializer list
Same behavior, but more idiomatic. While we're at it, we can make said
constructor and the conversion operator explicit to make the class a
little less error-prone.
2019-08-15 02:26:12 -04:00
Lioncash 92b87676c2 hecl/hecl: Make Entry take SystemString by value and move it
This allows callers to move into the constructor and subsequently move
into the member variable, avoiding copies altogether.
2019-08-15 02:26:12 -04:00
Lioncash dae3e6123f hecl/hecl: Make string conv operator+ instances friend functions
Makes both operators symmetrical to one another.
2019-08-15 02:26:12 -04:00
Lioncash c7aae83a75 hecl/hecl: Slightly improve resource usage within string conv operator+ funcs
We already construct a std::string instance, so we can just append to
it instead of creating another temporary with std::string's operator+.
We also change this to append using the string view getter functions, as
this allows the appending process to do less work. When a pointer is
passed in, a strlen call would need to be performed in order to
determine the total characters to append. However, we already know the
size (via the string view).
2019-08-15 02:26:12 -04:00
Lioncash c513a4b61f hecl/hecl: Make use of std::char_traits with StrNCmp
Same behavior, but allows removing the use of ifdefs, unifying the code
paths.
2019-08-15 02:26:12 -04:00
Lioncash ef6b41ea15 hecl/hecl: Amend string functions operating on string views to use interface functions
We don't really need to call out to the C functions to perform the
comparison behavior when the views already have a comparison function
as part of their interface.
2019-08-15 02:26:03 -04:00
Lioncash e0b5a4e2f7 hecl/hecl: Cast to unsigned char before calling std::isspace
std::string_view instances can contain character values that lie outside
the range of an unsigned char (negative values). If such a value is
passed into std::isspace, then the behavior of the function is
undefined. To avoid this, we add these casts.
2019-08-15 01:21:10 -04:00
Lioncash 91ff474c44 hecl/hecl: Handle bounded strings within CaseInsensitiveCompare
std::string_view instances aren't guaranteed to be null-terminated, so
we shouldn't be treating them as if they are in these functions, and
should instead use a bounded comparison based off their sizes.

This way we prevent an edge-case from ever becoming a problem and also
remove an ifdef, making the code uniform across all implementations.
2019-08-15 01:21:04 -04:00
Jack Andersen 7b05b41d34 Windows build fixes 2019-07-27 15:19:48 -10:00
Jack Andersen 6988f86672 Massive fmtlib refactor 2019-07-19 18:22:58 -10:00
Jack Andersen 31caec79dd Windows build fixes 2019-06-12 15:29:52 -10:00
Jack Andersen 387f8fa864 Blender Python API updates and better CMake dependency handling 2019-06-11 16:01:19 -10:00
Jack Andersen 7cc157c8b9 Support for per-stage shader hashing 2019-06-05 14:07:29 -10:00
Jack Andersen 92e2c03a01 Fix skin binding unordered_map use 2019-05-08 13:38:00 -10:00
Jack Andersen 5c59acddf2 Blender 2.8 refactor 2019-05-07 17:47:34 -10:00
Jack Andersen 8b1b674a7d Ensure uninitialized data is not accessed in normal operation 2019-04-06 18:54:58 -10:00
Jack Andersen 3759bf1b3d Avoid redundant pool destroy/allocs 2019-03-04 22:34:03 -10:00
Jack Andersen 927be4e839 Proper blending modes for handling alpha test 2019-03-02 20:17:41 -10:00
Jack Andersen 1f04f7ae12 Add closefrom call to RunProcess 2019-02-26 19:13:19 -10:00
Jack Andersen 6626557cc4 TexGen bug fix with diffuse-only pass 2019-02-26 18:50:13 -10:00
Jack Andersen 8e8ecaf4aa Add fallback for diffuse expression 2019-02-24 22:10:34 -10:00
Jack Andersen 470182de06 Support for diffuse texture identification in IR 2019-02-23 21:14:43 -10:00
Jack Andersen 23a6d66a8c Add -j argument for hecl cooking 2019-02-03 14:01:12 -10:00
Jack Andersen f35285b076 Windows fixes 2019-01-28 22:25:51 -10:00
Phillip Stephens 7542cb9650 Minor fixes 2019-01-26 15:21:30 -08:00
Phillip Stephens f776f89bee Minor Console fixes 2018-12-09 21:12:10 -08:00
Jack Andersen 72193079ae New code style refactor 2018-12-07 19:18:42 -10:00
Jack Andersen 54c466276b SIMD refactor 2018-12-07 15:31:11 -10:00
Jack Andersen e2ec1f69a3 Vertex shaders do rigging computations in object space 2018-11-07 14:53:00 -10:00
Jack Andersen 344148e3b3 Add direct SDNA parser for blend files 2018-10-21 22:14:32 -10:00
Jack Andersen a230eeb3b1 Macros for shader extensions to determine blend factors 2018-10-20 18:13:25 -10:00
Jack Andersen 808e46a4ef Update boo 2018-10-18 16:19:17 -10:00
Jack Andersen d395f4a79e macOS build fixes 2018-10-15 17:15:05 -10:00
Jack Andersen 61a50aa57e Windows sync fixes for API changes 2018-10-14 10:09:15 -10:00
Jack Andersen aef455e1ab Attachment model support in blender addon 2018-10-11 10:48:13 -10:00
Jack Andersen d1f0450401 Convert to pragma once 2018-10-06 17:38:44 -10:00
Jack Andersen 0ee18025dd Huge shader infrastructure refactor 2018-10-06 16:53:57 -10:00
Jack Andersen e16ef9709d Update submodules 2018-09-02 14:45:32 -10:00
Phillip Stephens 61f744e15d Defer values for unregistered CVars 2018-06-12 20:19:08 -07:00
Phillip Stephens 801214d9a8 Add support for string literals in Console::executeString, add implicit get/set for CVars 2018-06-12 19:03:29 -07:00
Jack Andersen 56a0661d33 Update boo 2018-06-01 14:02:20 -10:00
Jack Andersen c11557bcff Make SIGINT a bit cleaner for packaging 2018-05-25 17:07:04 -10:00
Jack Andersen 77f814192e Windows build fixes 2018-05-24 20:34:58 -10:00
Jack Andersen d0d330062f Resource tracing and memory leak fixes 2018-05-19 20:12:32 -10:00
Jack Andersen 9c30a44a65 Fix see through collision material 2018-05-10 21:02:19 -10:00
Phillip Stephens eae0dbd2bb Add ability to flag commands 2018-04-29 20:11:37 -07:00
Phillip Stephens 031c139e2d Merge commit '13b41ab' 2018-04-26 14:11:49 -07:00
Phillip Stephens 694bc0a888 Add ability to unregister command on the fly 2018-04-26 14:10:32 -07:00
Jack Andersen aa84d7c725 Add emissive cycles shaders 2018-04-14 20:04:08 -10:00
Jack Andersen 396790181a Minimized shader hash generation; more compatible MultiProgressPrinter 2018-04-07 10:52:35 -10:00
Jack Andersen b54dedb22b Minor cook fixes 2018-04-03 22:28:13 -10:00
Jack Andersen 94988eb9e5 GX shader cook fixes; Resource cook passes 2018-04-01 18:26:21 -10:00
Jack Andersen c9f61eb9da Fixes for GameCube targeting 2018-03-27 22:06:34 -10:00
Jack Andersen d1a66e15d4 Add parallel progress printing 2018-03-23 11:40:12 -10:00
Jack Andersen 3acb9c9e3d Initial PATH cooking support 2018-02-24 22:23:00 -10:00
Jack Andersen 06797cd9fc Add PATH .blend file type 2018-02-23 20:15:12 -10:00
Jack Andersen 3eedbd3c3b Template-based DNA refactor 2018-02-21 21:23:15 -10:00
Jack Andersen 7a60440d58 Add shader mode for constant alpha overwrite 2018-02-04 20:54:35 -10:00
Jack Andersen 1b861eaa61 Non-clobbering YAML serialize operation 2018-01-22 18:40:09 -10:00
Phillip Stephens 24abe43865 Restore old CVar system 2018-01-21 18:40:11 -08:00
Jack Andersen ac29a724ba Deep color CVar and GLSL backend bug fixes 2018-01-15 20:30:37 -10:00
Phillip Stephens da5ba6cdf3 Registration fix for Vec*CVar and StringCVar 2018-01-15 07:58:40 -08:00
Phillip Stephens 8cef2f5192 Add ability to enable developer mode in-code 2018-01-15 05:18:03 -08:00
Phillip Stephens 5c66ffc5df Refactor CVar class 2018-01-15 04:34:02 -08:00
Phillip Stephens 52c14848d9 Various minor fixes 2018-01-13 23:37:00 -08:00
Phillip Stephens f777d034f2 Implement core Console behavior and CVarManager commands 2018-01-13 18:39:32 -08:00
Phillip Stephens 7f6913e046 Fix linux build, initial logvisor integration into Console 2018-01-11 08:26:33 -08:00
Phillip Stephens e247733d04 Initial `Console` implementation 2018-01-11 01:36:00 -08:00
Jack Andersen 2d0f079991 Add CVarCommons; hecl-light library 2018-01-09 20:16:18 -10:00
Jack Andersen b3ca5b1e1e Changes to support MSAA rendering 2018-01-06 19:17:45 -10:00
Jack Andersen aae0dc56b7 Huge compile performance refactor 2017-12-28 21:56:31 -10:00
Phillip Stephens 0e4310903d Update boo; Add initial GUI mode support 2017-12-15 18:13:20 -08:00
Jack Andersen 93711460f8 More flexible cull-mode options for shader extensions 2017-12-09 19:29:23 -10:00
Jack Andersen a60a02a31e Add flip flag for collision triangles 2017-12-08 19:15:26 -10:00
Jack Andersen 559096feeb UWP support 2017-12-05 17:22:31 -10:00
Jack Andersen d4ce1d4913 ProjectPath bug fixes 2017-12-01 19:49:45 -10:00
Jack Andersen 1987a6e3d3 Implement asprintf for Windows 2017-11-24 16:49:50 -10:00
Jack Andersen ddf7c983da Major refactor of hecl parser using @hackyourlife architecture 2017-11-20 23:33:28 -10:00
Jack Andersen b41b21cb4b Windows fixes 2017-11-13 17:34:05 -10:00
Jack Andersen 4111d49d64 string_view refactor 2017-11-12 20:13:53 -10:00
Jack Andersen a3b9a32633 Remaining object tracker platforms 2017-11-05 20:56:17 -10:00
Jack Andersen d2fda8a373 Changes to support new boo object tracker API 2017-11-04 20:15:03 -10:00
Jack Andersen 3e18e519ce Windows fixes 2017-10-29 21:29:07 -10:00
Jack Andersen 337e087182 0-size buffer fix 2017-10-27 21:08:17 -10:00
Jack Andersen a2c5d891b5 Various bug fixes 2017-10-27 00:10:08 -10:00
Jack Andersen 5e99ee1d95 Minor improvements 2017-10-25 19:37:15 -10:00
Jack Andersen b7208bfc5f Implement `hecl package` 2017-10-24 21:46:32 -10:00
Jack Andersen 48ec4cf6eb Various bug fixes 2017-10-21 20:10:59 -10:00
Jack Andersen ebad51dc2e Add DCLN blend type 2017-10-16 19:51:13 -10:00
Jack Andersen 2674989a4a Generate pool skin index for CPU-based skinning operations 2017-08-20 19:46:26 -10:00
Jack Andersen f761810e8c Other platforms for SteamFinder 2017-07-23 13:44:17 -10:00
Jack Andersen 14277fa386 Add Steam app finder, fix missing blender cube bug 2017-07-22 23:20:28 -10:00
Jack Andersen 40a26ae19d Add missing string.h and algorithm includes 2017-06-10 19:01:17 -10:00
Jack Andersen 7e01a86330 Windows fixes 2017-06-10 08:40:27 -10:00
Jack Andersen d8ed2fd157 Isolate hecl::SystemChar in single header 2017-06-10 08:22:40 -10:00
Jack Andersen a0efeb3c07 Add visibility mode field for mappable objects 2017-04-22 11:44:18 -10:00
Jack Andersen 8bfac09158 Add map visibility mode property 2017-04-18 13:38:23 -10:00
Jack Andersen 21e2a26e36 HLSL reflection fix 2017-03-26 08:21:01 -10:00
Jack Andersen b860d962ae Reflection shader support 2017-03-25 19:51:58 -10:00
Jack Andersen ed5085e42b MAPA/MAPU bug fixes 2017-03-20 11:14:20 -10:00
Jack Andersen 53521a0eea Initial blender addon support for MAPA and MAPU types 2017-03-19 19:08:51 -10:00
Jack Andersen 165094b949 Merge branch 'master' of https://github.com/AxioDL/hecl 2017-03-13 21:03:35 -10:00
Jack Andersen 626056f3b9 Refactor for boo upgrades 2017-03-13 21:03:22 -10:00
Jack Andersen 2478495cbb GCC compile fixes 2017-03-10 20:32:12 -10:00
Jack Andersen b30381a5fd Move xxhash to boo 2017-03-04 21:55:32 -10:00
Jack Andersen 89f216d94f Add hecl::PathRelative() 2017-02-24 21:58:36 -10:00
Jack Andersen 8c3a7da616 Updates to support VISI generation 2017-02-23 22:27:07 -10:00
Phillip Stephens d67d54ddd0 Change how 32bit hashes are calculated to prevent collisions 2017-02-13 13:27:43 -08:00
Jack Andersen 86f9f62ef6 Targeted subresource generation for Actor and World blends 2017-02-12 20:51:15 -10:00
Jack Andersen ae9b2309cf Add RecrusiveMakeDir 2017-02-03 17:45:39 -10:00
Jack Andersen 8469ee8fac Update athena, minor buffer pool changes 2017-01-31 21:19:15 -10:00
Jack Andersen c6671b114e FRME cook fixes 2017-01-28 17:56:54 -10:00
Phillip Stephens c840625080 Add Char16ToWide helper function 2017-01-23 23:55:26 -08:00
Jack Andersen b8abd466dd char16_t formatting support 2017-01-23 21:40:09 -10:00
Jack Andersen aecaab27a4 Create directory chains at a late point during extract 2017-01-16 15:21:13 -10:00
Phillip Stephens c4ee610169 Fix stack related crash in getGlobResults 2017-01-01 15:19:03 -08:00
Phillip Stephens 279b4b1d68 Update Collision cook process 2016-12-28 11:41:03 -08:00
Jack Andersen 77c3d1e184 BlenderConnection stability improvements for Windows 2016-12-25 12:15:31 -10:00
Jack Andersen 0bf5499717 More portable std::atomic_bool initialization 2016-12-24 21:24:19 -10:00
Jack Andersen d7c5dff1f0 Windows fixes 2016-12-24 21:02:34 -10:00
Jack Andersen 75847c67d3 Better thread contention handling for BlenderConnection 2016-12-24 15:35:30 -10:00
Jack Andersen 3d4355182f Squelch redefinition warnings 2016-12-16 13:05:11 -10:00
Jack Andersen 121f566848 Use atomics for pool buffer ref-counts 2016-12-14 12:56:32 -10:00
Jack Andersen 46b04925c3 More graceful handling of non-installed blender 2016-12-12 10:09:53 -10:00
Jack Andersen 399cdfc657 Update submodules 2016-12-11 10:20:55 -10:00
Jack Andersen f0b73d268d Update submodules 2016-12-10 15:51:51 -10:00
Jack Andersen b12b858f3d Integrate llvm BitVector and MathExtras 2016-12-09 16:32:20 -10:00
Jack Andersen aa408ccfec Move LTO-problematic definitions out of header 2016-10-10 15:21:15 -10:00
Jack Andersen 7f5ba744da Additional BlenderConnection World capabilities 2016-10-07 17:40:08 -10:00
Jack Andersen e65fe14c53 BlenderConnection tweaks 2016-10-02 12:34:10 -10:00
Jack Andersen 4f53d886ce Implement world cooker 2016-10-01 13:18:52 -10:00
Jack Andersen 835976be56 BlenderConnection::compileWorld() stub 2016-09-30 12:41:01 -10:00
Jack Andersen c0f060d6ad Remove unnecessary glob regex 2016-09-24 15:57:43 -10:00
Jack Andersen c1dcf6d23e Windows Fixes 2016-09-18 15:02:57 -10:00
Jack Andersen 6de25c1d1d Refinements to avoid bad level linkages 2016-09-18 13:46:49 -10:00
Jack Andersen 5303b9bda1 Dramatic shader cache performance improvement 2016-09-11 18:52:55 -10:00
Jack Andersen 691d53304c Add skin bank count field to HMDL metadata 2016-09-04 12:47:09 -10:00
Jack Andersen 0d048657d4 comment capitalization 2016-08-31 13:07:40 -10:00
Jack Andersen f0b1837300 Add handy StringUtils begin/end compare functions 2016-08-30 15:13:00 -10:00
Jack Andersen 07c21ec489 ProjectPath hashing fix 2016-08-28 14:28:24 -10:00
Jack Andersen 719c62f09f Add ResourceLock for detecting parallel resource collisions 2016-08-11 16:33:03 -10:00