-
Notifications
You must be signed in to change notification settings - Fork 240
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
Release v2.0.0dev7 changes to Master #201
Open
neomonkeus
wants to merge
863
commits into
master
Choose a base branch
from
develop
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Clarified names, added comments. Added default values for NifData init to simplify construction. Call setBinary explicitly for clarity. Regarding `array->arr2().isEmpty()` this was removed because nifxml should error instead if trying to set an `<add>` to binary if it is multidimensional.
Didn't update for new XML names. Fixed conditions on fo4_env. Previous commit also broke shader loading because apparently it uses NifModel::getItem to resolve block values.
If the `tx->reload() = true; emit sigRefresh();` branch was triggered the data stored for the texture would not be updated. Depending on how fast the file watcher emits the signal the texture may or may not refresh because the results of QFile::exists() would vary. Also prevented this code from running more than once for the same texture which it was doing.
Considering all spells as "Processing" has unwanted side effects for a few spells such as Transform > Apply. The GLView relies on these signals for recompiling the meshes when changed. Since a spell only returns a single index it cannot be handled after the spell is cast.
Sometimes NifModel::linksChanged can be emitted dozens or hundreds of times right after the other. This caused GLView to attempt an update for each call. This timer limits the recompile to once every 16ms at most, which is just under the frametime at 60FPS. However if there are 100 calls each 10ms apart the timer will only timeout and call modelLinked() once, 16ms after the 100th call.
When the XML is parsed, flags are now set on the data that NifModel can check against. This makes parsing of files both faster and clearer. Certain string checks and hash contains checks are avoided entirely for many more rows. The early reject for evalCondition is now much faster. NifModel::insertType is now much cleaner. Also, removed unused flags/methods from NifValue.
Single rows that toggle their visibility based on the value of a previous row were not hiding/unhiding correctly. The previous code was only tailored to updating ARG-passed arrays correctly.
Qt stopped requiring ICU libs and so the build scripts no longer need to place them in the build dir.
Replacing QRegExp has proven stable and the old implementation hidden from release can be removed completely.
On larger NIFs the previous way was terribly inefficient and could actually increase the time to open the file.
Depending on how NifSkope was opened, the static method QDir::current() could actually return the wrong directory. In the case of double clicking a file when NifSkope is the default application, QDir reported the file directory, not the NifSkope one. This actually broke several features, such as shaders.
textureCubeLod was breaking AMD rendering. Increased to #version 130 in order to use textureLod.
AMD drivers did not like this particular way of avoiding if/else. It seems to just disable cubemapping.
Laptops with Intel graphics would error during compilation of this shader because the fragment referenced the varying but the vert shader did not write to it.
Intel actually gave compilation errors over the missing HalfVector whereas Nvidia/AMD just don't care. I'm not even sure the Oblivion shaders actually do anything currently, but this at least gets rid of the compilation error for Intel.
Added more shortcuts for block manip, removed the F1-F4 keys because F2 is default for editing the current selection and some people like to use this.
Some spells were no longer working correctly, particularly those which use set<> on a row which has dependent condition rows. The NifModel set<> methods now invalidate any dependent conditions after setting their value. This did not cause any load speed regressions.
Store which rows are links and which rows have links somewhere under them on the parent item. This accelerates link updating by going through far fewer rows.
To input values above INT_MAX you had to input them as a signed integer, i.e. the corresponding negative values. Obviously this was not ideal. You can now only input unsigned integers into uint boxes. Also, input of integers in base 16 (hex) is now allowed, including pasting, but the string must start with `0x`.
Transform > Copy in the context menus only allows for copying of the local transform of the block. However the world transform is sometimes useful for copying, like the world transform of bones in a skeleton NIF. This is particularly necessary when creating Art Object NIFs which attach to bones. The world transform is inaccessible via Spells, so I added a button to Inspect.
If certain values in subsegments were edited incorrectly it could cause crashing when the values cause the Triangle lookup to go out of bounds.
Array child items naturally cannot have any conditions. I set them as "conditionless" upon creation but forgot to set them to true by default. This assures new rows when lengthening arrays will show up.
There are potential issues with crashing on some systems and may exacerbate the inordinately long delay sometimes occurring when double clicking NIFs for the first time in a while.
Simply double clicking and clicking out of a float edit could truncate several decimal places worth of precision, and also effectively limits any edits to floats to half precision.
- String copy/paste for 20.1.0.1+ (switch to string indices) - Usage/Access are retained for NiDataStream with copy/paste - Relaxed the linking restrictions when a link points to the root node. This allows NiCollisionObject branches to be pasted onto other NIFs more easily for example. - Pasting a branch is 20-30x faster, more so for extremely deep branches. Speed increase came solely from pausing model updates during insertNiBlock.
Changed nearly all of setupProgram for the shaders. Store the uniform locations, use enums and maps instead of strings to refer to the uniforms. This helps with speed, legibility, and autocompletion. Removed all the `ob_` shaders for the time being as there is a shader complexity issue (more shaders == worse). Will reinstate fo3 and ob shading over time and with far fewer shaders.
Split the enum bitflag options after a user-defined number of options. Currently WIP. The combo box's line edit disables the newlines when the editor is created and reverts back to single line while the row stays the same height. Also show "undefined" when a bool value is 2, which is the undefined value for NiBool.
For the various additions made in dev7, sometimes undo/redo does not work well with the other undoable things if an Update Array command does not get sent to the array first. Such as lengthening an array, updating it, and then pasting another array onto it.
Use the actual buddy() method for QAbstractItemModel
In addition to "Skin Transform" support transforms named "Transform".
Cut down NifItem memory usage slightly. Speed up a couple heavily used operations slightly.
There are some old DDS files that I have been informed of that are not actually the correct size for their format. Intel plugin resaves them at the size that NifSkope calculates it should be. The old DDS loader loaded them fine however.
Fix issue caused by refactor in 31fc1b2 where you could not turn shaders back on after turning them off.
Didn't crash if your registry already had the value set.
Since pre-alpha seems to scare people, change the window title text. Added GLI to the license section. Moved the qhull copying text to the window, removed the file copying. Added Discord links.
NifMopp was recompiled with hk660 and also fixed to actually work for subshapes. Only copy it now when x86. Re-enabled copying of XML and QSS. Commented out the TRANSLATIONS as they are so outdated.
POSITION_BP semantic was being ignored for the check that the mesh had vertices. This was causing skinned meshes using POSITION_BP to no longer render.
Second pass shapes would become wire if an object was selected due to a missing gl call.
The OBJ I have available still seem to import fine, but I do not have access to the ones that supposedly don't.
Toggling silhouette needs the shaders to be updated.
Re-enable multi-layer parallax for Skyrim. Was inadvertently disabled by having sk_default return true for Shader Type 11. Tentatively fixed a longstanding issue with certain GPUs and env mapping. Part of the fix entails always having a default cubemap loaded, so added a debug cubemap texture to shaders/.
Affected games like Civ IV which use only NiSkinData weights, as I had the ternary operator backwards from the intent.
Continuation of df48fc7 Do not return false for any missing textures, instead always assure binding and proper defaults. Created option to show error color for missing diffuse. This does not apply to BSESP as diffuse is not necessary for those. Correctly blacken BSTriShape mesh with mismatched vertex attributes and shader flags for vertex colors. Correctly show vertex colors for FO4 BSLSP if they exist in the vertex data. The vertex color flags are optional since they do not exist in the BGSM.
Adding new textures to texture slots was not taking effect with BSTriShape based NIFs.
Or from writing incomplete file (if new).
2.0 Dev7 fixes
Masb80ai
approved these changes
Jun 17, 2024
Masb80ai
approved these changes
Jun 17, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Move accumulated changes to master.