Jon

NifSkope 2.0 Dev

528 posts in this topic

NifSkope 2.0.dev6 (Updated: 2016-11-07)
 
Development
GitHub Releases
GitHub Issues
 
Media
YouTube Devlog
NifSkope 1.1.x - 2.0 Comparisons
Effect Shader Comparison
 
 
I have been quietly developing NifSkope for over a year now and at this point finally feel comfortable with having a RELz/WIPz thread.  This is a pre-alpha because there is a multitude of features I have not implemented yet but plan to.  I decided though at this point there are so many improvements that I should be sharing them now instead of waiting for the program to be more feature complete.

 

Changelog

 

2.0.dev6  (SSE support)

2.0.dev5

2.0.dev4  (FO4 support)

2.0.dev3

2.0.dev2

2.0.dev1

 

The full changelog is quite long so here is a non-comprehensive summary of the 1.1.3 to 2.0 changes:

  • Skyrim support:
    • Meshes are now generally WYSIWYG
      • Environment/Cube Mapping (Video)
      • Multi-Layer Parallax (Video)
      • Parallax (Video)
        • Although broken in vanilla, ENB can fix the in-game parallax implementation.
      • Model Space Normals and dedicated Specular map (Example)
      • Face Tint and Hair Tint shaders (Example)
      • Correct specular, normal mapping, emissive/glow, soft lighting, rim lighting, back lighting
      • BSLightingShaderProperty & BSEffectShaderProperty values are now reflected in the shaders
        • Many SLSF1/SLSF2 flags which control appearance.
        • UV Offset, UV Scale, Emissive Color, Emissive Multiple, Glossiness, Specular Color, Specular Strength, Alpha, Falloff, Lighting Effect 1, Lighting Effect 2
    • Collision
      • Correct scale (was 10x too small)
      • bhkCompressedMeshShape display (the primary collision type in Skyrim)
      • bhkConvexVerticesShape improvements
    • Effect Animations Video
    • BSOrderedNode support - Rendered in correct order
    • Skyrim / F:NV texture path, BSA detection
    • BTO/BTR files
    • Facegeom files
  • UI
    • Undo/Redo (limited)
    • Header tab
    • Lighting Widget - Brightness, light direction, texturing toggles
    • New Open/Save widgets
    • Recent Files list
    • Expand/Collapse buttons in Block List and Block Details
    • Save Confirmation dialog
    • Screenshot dialog
    • Open multiple files from Open dialog or Windows Explorer
    • Drag/drop files to viewport to open
  • Rendering
    • ~3x higher FPS
    • Improved anti-aliasing and anisotropic filtering
    • Improved decal rendering / removed z-fighting
    • Visualization modes
    • New grid/axes
    • Quadratic interpolation for animations which use it
    • Correct alpha depth sorting

 

FYIs

  • You can install 2.0 alongside previous versions. It will attempt to migrate settings and the two versions will not interfere with each other.
  • This version is pre-alpha and feature incomplete.  I will share a feature roadmap at some point.
  • At this point I have not touched anything that could affect the integrity of the NIF data, so despite this being pre-alpha/experimental, I would consider it stable.  Obviously if you find a NIF which this version saves differently than previous versions, please inform me.
  • Your computer may not support the shaders or you may receive shader compilation errors upon opening.  Please share the messages here and in the meantime you can turn off the Use Shaders option in the Render settings.

 

Special Thanks

 

Collaborators:  neomonkeus, ttl269, skyfox69, deedes

Testers:  MadCat221, Arthmoor, Hana, Lorelai, Dwip, DSoS, Nico coiN, Tamira

Share this post


Link to post
Share on other sites

Known Issues (FO4)

 
- Import is DISABLED. We don't know enough about the data formats to reasonably allow for this in general use cases.
- Visible position of skinned meshes is often incorrect.
 

 

Known Issues

 

- When editing Shader Flags I have experienced a rare, non-reproducible crash.

Edited by Jon

Share this post


Link to post
Share on other sites

Is there any possibility for batch changing of nif texture paths on multiple nif files being supported sometime in the near future?

Share this post


Link to post
Share on other sites

General batch processing is something that is planned.  Near future...  probably not.  It would also need to be a Spell to be run, so I'd first need to know your use case to make the Spell.  Are we talking about changing absolute file paths to relative ones?

 

On that same train of thought, I would eventually like to make Spells scriptable by the end user.  So I wouldn't necessarily need to implement a Spell for you to do whatever it is you needed to do with texture paths.  You could just script it yourself.

Share this post


Link to post
Share on other sites

Thanks for update, big improvement over the previous version.
Some notes after brief preview
- show axis / show collision / toolbar animation / toolbar LOD options are not saved, I need to toggle them every time manually
- this version (and your previous one 1.3) doesn't allow me to set float fractional values. For example if I try to change lighting effect in shader property to something like "1.5000" it will set to 1.0000

It doesn't even allow me to type '.' dot, only comma can be entered, and if I try to use 1,5 it will set to 0.0000

Only whole numbers work like 1.0000 2.0000 3.0000 etc., that's for all floats in any nodes and UI windows with floats like Transform.

 

My regional settings in Windows use comma for floats 123,4567 but I'd like NifScope to always use dot regardless, like xEdit does.

Share this post


Link to post
Share on other sites

1. Yes, this is wholly intentional.  A departure from the previous methods.  Changing those options before also propagated across all open windows which is a terrible way to do it.  This is because the "Show" options were tied into the Settings class, which I've already mentioned is getting replaced.  Basically the viewport was asking the Settings class ~20x per second if the "Show" options were checked or unchecked.  After improving the FPS in this version to 60FPS that would have meant that it would be checking 60x per second whether those options were checked, and again like I mentioned it  would change these options across all windows.  What if you want collision off in one window and on in another?

 

The solution is that the "Show" options should be state based and held in the Scene/viewport for each window.   Since they are also right there on the toolbar now it's not much of an inconvenience that they are all off each time.   However, part of the new Settings class will be a set of "Startup Defaults" where you set which things you always want to be on or off each time a new window is created.

 

 

2.  Yes, there are many internationalization issues.  The inputs accept your platform's regional settings but other parts of the program aren't set up to handle this.  If it's an urgent issue you just need to change your platform settings, because unfortunately I'm not even sure how to fix this issue in particular.  With that said I am willing to PM you test builds to see if I can pin down where the input behavior needs to change.

Share this post


Link to post
Share on other sites

Users with switchable integrated/dedicated gfx cards are getting this error if not using dedicated card

https://www.dropbox.com/s/u8f2y3tujo3gdr8/NifError.jpg?dl=0

 

Maybe add some check to show a more meaningful message?

 

The other issue is vertex alpha

Old nifscope: https://www.dropbox.com/s/s1fteanaerzgtoj/AlphaExplicitOld.png?dl=0

2.0 alpha: https://www.dropbox.com/s/g3fkzphob5722xb/AlphaExplicitNew.jpg?dl=0

Share this post


Link to post
Share on other sites

jonwd7 thanks for al the work you did in this new NifSkope build.
I think we all have been waiting a very long time for this to happen.

 

I hope you understand the bugs / points in the screenshots.

 

http://postimg.org/image/lmwazaxv7/

1# ERROR after start NifSkope.

 

===========================

 

sk_env.prog:

 

Fragment info

-------------

0(45) : error C5041: cannot locate suitable resource to bind parameter "b"

 

sk_multilayer.prog:

 

Fragment info

-------------

0(49) : error C5041: cannot locate suitable resource to bind parameter "b"

 

===========================

 

http://postimg.org/image/mqgfb9iib/

2# Resource handling issues.

 

http://postimg.org/image/kj7l9lnub/

3# Viewport settings reset at startup.

 

My GPU is a MSI Nvidia Geforce 6200.

Share this post


Link to post
Share on other sites

FYI 

 

You can copy/paste the text in the "Show Details" pane of the message box instead of taking a screenshot. 

 

 

Users with switchable integrated/dedicated gfx cards are getting this error if not using dedicated card

 

The other issue is vertex alpha

 

Shaders:  Yes, more meaningful messages is already planned.  Like I mention above, anyone getting errors will just have to rename or delete their shaders folder for now.  Switchable graphics is not something I know how to detect so they'll just need to make sure they're using the dedicated graphics before starting NifSkope.

 

Vertex Alpha:  I wouldn't be surprised if NifSkope 2.0 is more correct.  Actually I'd be very surprised if 2.0 wasn't the correct one.  The mesh may be missing its SLSF Vertex Alpha flag.  The old version handled vertex alpha a certain way regardless of mesh settings.  It would be nice to know what mesh that is so I can check. 

 

 

1# ERROR after start NifSkope.

2# Resource handling issues.

3# Viewport settings reset at startup.

 

1.  I'll look into the shader error.  Can you copy/paste the full text here?   Note:  A GeForce 6200 is borderline too old.  It may be the issue, it may not.  From what I can tell it just meets the OpenGL 2.1 requirement but there may still be other issues.  So, I may not be able to resolve such an issue and you may not be able to use the shaders.

 

2.  I haven't touched how other games are detected.  The codebase looks for an "Installed Path" key on:

"HKEY_LOCAL_MACHINE\\SOFTWARE\\Bethesda Softworks\\Morrowind"
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Bethesda Softworks\\Oblivion"
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Bethesda Softworks\\Fallout3"
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Bethesda Softworks\\FalloutNV"
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Bethesda Softworks\\Skyrim"

The first three were there like that when I took over the codebase.  If you do not have an "Installed Path" key at the above addresses it will not find anything.

 

3. I go into detail about this above.  

 

As an update on the situation,  I already have a build with a new settings class:

 

s4DHzag.png

 

Ignore the general emptiness/unfinishedness.   :)

 

Texture paths and BSA handling will go under "Resources".  There will be other categories than General/Render/Resources, but as I said it's very incomplete.  The old settings window will be getting phased out entirely. I may release a build where I have both Settings windows still in play if it's going to take me too long to completely phase out the old window.

Share this post


Link to post
Share on other sites

http://postimg.org/image/lmwazaxv7/

1# ERROR after start NifSkope.

 

===========================

 

sk_env.prog:

 

Fragment info

-------------

0(45) : error C5041: cannot locate suitable resource to bind parameter "b"

 

sk_multilayer.prog:

 

Fragment info

-------------

0(49) : error C5041: cannot locate suitable resource to bind parameter "b"

 

===========================

 

My GPU is a MSI Nvidia Geforce 6200.

 

I just wanted to report the ERROR message, as I have no idea what its telling me.

If the GPU is to old then so be it, but then I atleast know where the issue is from.

Thanks for looking into it.

Share this post


Link to post
Share on other sites

Sjors,

 

Your card does support OpenGL 2.1 but it seems that maybe it doesn't support enough multitexturing units or varying/uniform/sampler variables in the shader.  The only two shaders giving you errors are the more complex ones.

 

I may PM you a test build that will output some OpenGL variables that will help me determine if I can opt to load simpler versions of the Environment and Multi-Layer Parallax shaders in the case of your video card.

 

It seems you can load the other shaders just fine, so if you want you can delete just the files that start with "sk_env" and "sk_multilayer" in the shaders folder.

Share this post


Link to post
Share on other sites

Shaders Hotfix

 

Some graphics cards / drivers do not seem to correctly initialize shader vectors leading to graphical glitches.

 

If you have the problem:

 

1. Download shaders_2015-03-21.7z

2. Extract the .frag files to the shaders folder in the NifSkope directory, overwriting the existing files.

 

The fixed files will be included in the main package come next release.

Share this post


Link to post
Share on other sites

Thank you for updating and development of this very useful application.

 

P.S.

shaders_2015-03-21.7z  It works perfectly completely eliminated graphical glitches.

Share this post


Link to post
Share on other sites

When I try to add a new folder in Options\Settings\Rendering, it always adds "Choose new folder" no matter what I entered.

Share this post


Link to post
Share on other sites

There is a "Folder" button that you click with the line highlighted which opens a file dialog.  I've changed this behavior in the new Settings window.  You no longer have two separate buttons you need to press.

 

At this point the old Settings window has been completely replaced.  I will actually be releasing a new version shortly.  It's a bit light on the settings for now:  https://imgur.com/a/5OgGh#0

 

... but more settings will be added with each release.

 

I also still need to replicate the "Show Hidden" functionality of previous versions.  I may get around to doing that before releasing. 

Share this post


Link to post
Share on other sites

NifSkope 2.0.dev2 (2015-03-25)
 
Summary
 
- New Settings dialog
- Many new settings
- SLSF2_Weapon_Blood support (Gallery)
- Grid toggle with "G", separated from Show Axes
- Restored "Show Hidden" behavior for viewing all meshes even if their Flags are set to Hidden.
 
---
 

Edit: Package updated 2015-03-26 to address the crashing issue mentioned below.

Share this post


Link to post
Share on other sites

I'm not getting crashing with the NIF you've provided.  But also I don't have FO:NV and thus I don't have the textures.  It's possible it's an issue with the texture loading but I don't see how.

 

The Flags issue is because BSSegmentedTriShape actually has entirely wrong decoding for that block.  There are newer XML versions but they create other issues with NifSkope that I haven't accounted for.   You can read about the decoding here: https://github.com/niftools/nifxml/pull/42

Share this post


Link to post
Share on other sites

Crashed for me too. Windows error output if it helps:

 

Problem signature:
  Problem Event Name:    APPCRASH
  Application Name:    NifSkope.exe
  Application Version:    0.0.0.0
  Application Timestamp:    04eb41f8
  Fault Module Name:    Qt5Widgets.dll
  Fault Module Version:    5.3.2.0
  Fault Module Timestamp:    01d8d530
  Exception Code:    c0000005
  Exception Offset:    0003ce54
  OS Version:    6.1.7601.2.1.0.768.3
  Locale ID:    1033
  Additional Information 1:    0a9e
  Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
  Additional Information 3:    0a9e
  Additional Information 4:    0a9e372d3b4ad19135b953a78882e789

Share this post


Link to post
Share on other sites

I've pulled the release because I don't understand the issue and I can't debug it either.

 

----

 

Edit:  OK, so it had to do with the state of the registry between dev1 and dev2 and it doesn't have anything to do with any specific file.   I didn't properly reset my registry settings to a dev1-like state when testing the migration between versions and so I didn't catch a bug. 

Share this post


Link to post
Share on other sites

I'm not getting crashing with the NIF you've provided.  But also I don't have FO:NV and thus I don't have the textures.  It's possible it's an issue with the texture loading but I don't see how.

 

The Flags issue is because BSSegmentedTriShape actually has entirely wrong decoding for that block.  There are newer XML versions but they create other issues with NifSkope that I haven't accounted for.   You can read about the decoding here: https://github.com/niftools/nifxml/pull/42

Actually this is a mesh generated by FNVLODGen, source code for segment

https://code.google.com/p/skyrim-plugin-decoding-project/source/browse/LODGen/NifMain/BSSegment.cs

Share this post


Link to post
Share on other sites

I was crashing on load as well but when I built from source, it seems to run fine. Could you try rebuilding and making a new download package?

 

Edit: Never mind I was building the 1.2 branch.

 

Edit Edit: After rebuilding again on 2.0 branch I can confirm still no problems running.

 

I did get error during shader compilation messages but then oddly it looks like all the shaders are working fine:

ob_parallax+glowmap.prog:
 
The fragment shader uses varying HalfVector, but previous shader does not write to it.
 
ob_parallax.prog:
 
The fragment shader uses varying HalfVector, but previous shader does not write to it.
 
ob_parallax_vcol_ad.prog:
 
The fragment shader uses varying HalfVector, but previous shader does not write to it.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now