libprimis
libprimis copied to clipboard
Libprimis: Imprimis' 3D destroyable world engine
After some discussion, it has been determined that changing the semantics for objects' (classes and structs) names to PascalCase (as opposed to the widely used, but not consistently applied, lowercase)...
`texture.h` defines the `LOCALPARAMI` and `LOCALPARAMF` macros as well as `GLOBALPARAMI` `GLOBALPARAMF`, `SETSHADER`, and `SETVARIANT`, all of which are variadic macros (can take arbitrary numbers of arguments). This is undesirable...
Vertex water "subdivision" actually just packs the same wave pattern into a smaller area, leading to no improvement (actually a reduction) in apparent water smoothness. Turning up the vertex water...
This function has an extremely high cyclomatic complexity and has multiple confusing `goto` statements that makes it hard to parse. It's also four hundred lines long.
https://github.com/project-imprimis/imprimis/blob/17eb9bc56cf668d8969a6bc3a3ecdacb4721d00f/src/shared/stream.cpp#L184-L226 This function uses a *lot* of `goto` statements which makes it hard to understand. Most of these should be axed, or failing that, well commented.
This construction is used to either implicitly coerce following added pointers to the type of the pointer in the construction, or to initialize new pointers as null ones. C++'s `nullptr`...
These two VA related functions can be moved to the file for rendering vertex arrays, `renderva.cpp`. https://github.com/project-imprimis/imprimis/blob/56195748f7908a88b2936ada0da58282afe89220/src/engine/render/octarender.cpp#L1961-L2002 https://github.com/project-imprimis/imprimis/blob/56195748f7908a88b2936ada0da58282afe89220/src/engine/render/octarender.cpp#L2042-L2125
The `rhtaps` var only applies for values of 12, 20, 32; intermediate values passed merely round down. This is not reflected in the var's implied behavior, as having 20 intermediate...
The size of the reflective shadow map (RSM) is specified directly in terms of pixels, unlike the standard shadowmap which is specified in terms of powers of 2. As the...
Currently, the engine uses `hdr` for both high dynamic range-related parts of the renderer and for the header section of maps. Changing to `header` for map header objects would remove...