Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev8 #200

Open
wants to merge 121 commits into
base: develop
Choose a base branch
from
Open

Dev8 #200

wants to merge 121 commits into from

Conversation

neomonkeus
Copy link
Member

@neomonkeus neomonkeus commented Apr 21, 2021

Merge any updates that @hexabits made in his fork back into develop.

This was necessary for a new action which uses a message box to display information but it's meant to stay open while you interact with the rest of the UI.
The intent of `mesh->bslsp` was really `!mesh->bsesp` and to ever support shaders on Oblivion/FO3 this change is needed as those won't be BSLSP either.
Show which blocks reference this one
For FNV and later, convert CLS to LS, and for FO3 and earlier, convert LS to CLS.
Merge multiple CVS into a list shape.  Take the entire transform into account for CVS.  Support BSTriShape.

Also synced to XML.
Added token replacement, support for `onlyT`/`excludeT` by simply aliasing back to the `cond` version for now.

At least acknowledge bitfield tags for now, but do not do anything with them other than alias them to their storage type.

Support for the BSStreamHeader reorganization in Header.
Renamed TEMPLATE and ARG tokens.
Removed userver and userver2
Do *NOT* support int64/uint64 yet other than the type map so that nifxml won't error.
Supported more BA2 texture formats.  Made file filter case insensitive.
Some platforms were trying to choose ANGLE instead of OpenGL.
Rendering support added for some versions of NiStencilProperty could crash.
nifxml does not have sufficient means to deal with short circuiting of blocks based on a string value.

Also some general fixes.
Very minimal rendering and shader support for new Lighting and Effect shaders.

For Lighting, mostly correctly uses the new PBR pipeline with metallicity/reflectivity and an external cubemap (currently 1 hardcoded).  New emissive masks and AO masks are also used to various degrees.  AO mask is used for specular occlusion.

Uses sRGB framebuffer when needed.  Does not add support for sRGB textures in SSE and FO4 NIFs.
Resource collisions between Fallout 4 and Fallout 76 were severe due to a vastly different asset pipeline while maintaining the same filenames.  Technically resource collisions happened with Skyrim and Skyrim SE too, but the vanilla files were largely identical.

The game manager associates texture and material lookups to a particular game, based on the NIF version.

This does mean that Fallout 3 and Fallout NV are considered the same meta-game and lookups for either game's files will be done in both games' paths.

A "game mode override" is planned to address this.
The sRGB framebuffer being used for some versions caused glClearColor as well as glColor3/4 etc. to be incorrect.
Re-scanning the latest files showed a missed `NO_EXPOSURE` usage. Unsure if there since release or if added.  `LOD_OBJECTS` was also missing in NifSkope but was already present in nifxml.  Outside of BTOs, one single NIF uses `NO_EXPOSURE`.

As of August these are the only used shader flag CRCs.

Since editing of this version will not be supported, unused flags will continue to be excluded.
The automatic stringification for BSVertexDesc got lost in the refactor, when it was made into a bitfield which is treated as an aliased type like enum/bitflags and thus is mostly treated as uint64.
Return pointer from Message helpers when needing to customize the behavior.

Added a log message function directly to the model which allows any function with a nif pointer to support both UI messages and the file checker output.  For example, functions that are sanitizers (run on save) and used to output information in the file checker.
Renamed XML Checker to File Checker since apparently nobody realizes the window even exists.

Added basic value checking.  Currently arrays are not traversable except for the first item of the array.  Compounds can be descended through the slash syntax used elsewhere in the program.

Added a few basic error checkers that run on Sanitize as well as during file checking.  They were only done upon user request so they are not very thorough.

Files that error during header read no longer fail silently.  Also added an option to only read the header and the BSStream version is now printed with the filename.
Older Bethesda NIF versions (Oblivion, FO3) can use bhkNiTriStripsShape as a Havok shape which is relatively easy to import to from a file.
hexabits and others added 30 commits September 12, 2023 14:52
…kope's ones.

It used to stay in the middle of the screen even when you switch to your browser or any other app, covering everything underneath it.
Now Settings will block only NifSkope's windows and disappear if you switch to another app.
It used to stay on top always (even if you switch to another application), but did not block input to the parent mesh window.
Now NifBlockEditor stays on top of the parent window only and blocks input to it.
…Details"

- Added pseudonyms for almost 200 arrays. All the arrays from nif.xml ( https://github.com/niftools/nifxml/tree/develop version) are now covered, with the exception of arrays that don't need pseudonyms or have too generic names ("Data", "Value", "Unknown", ...).
- Multi-arrays (2-level arrays; e.g., UV Sets, Vertex Weights) got their own pseudonym subsystem, with a different logic.
- Binary arrays are now ignored because it's always a single item with a "X bytes" value.
Most importantly, getItem(const QModelIndex &) got a reportErrors arg, true by default.
…tails)

- Fixed "smart auto-expand" of subitems in "Block Details" when it's switched to another NiBlock. Now it properly auto-expands Partitions in NiSkinPartition and BSDismemberSkinInstance blocks and properly handles blocks with hidden rows at the end.
- Fixed accidental selection of multiple items in the view when you mouse-click the expand/collapse icon (">") and this leads to shifting of the expanded/collapsed item in the view.
setDistance is attainable via several other methods, but there is no easy way to raise/lower.
For gltf export and import
Also move some type declarations
- Fixed NifItem not updating the link children caches on items deletion.
- Fixed Kfm checking version number in item conditions before it's set up or reset after a change.
- NifModel::updateArraySizeImpl will now properly detect the presence of links in updated arrays.
- Fixed all inconsistencies in the starting " " prefix in items' display names.
- Resolved once and for all Base::isArray(const QModelIndex &) and Base::isArray(const NifItem *) doing somewhat different checks. To make sure that isArray will work properly in the future, added validation checks in nifxml and kfmxml.
- Added a few utility methods to BaseModel and NifItem.
- Minor QString performance optimization in NifModel and KfmModel (use QStringBuilder to concat more than 2 strings + turned some common strings into static const QString).
Utmost thanks for @UnknownExplorer13 for manually committing my changes without informing me of any issues...
For Starfield only, currently.
Only name right now, until CDB reading.
Remove non-existent links, add glTF information for users.
To prevent truncation in Blender, use the base name and include the full path as an extras.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants