After nearly a year of procrastinating and letting large in-progress features pile up, Noesis 4.2 is finally up for download. The "check for updates" feature in older versions will upgrade to it fine.
New in this version:
Señor Casaroja wrote:
-4.2 - New "Universal Debugger" client built into Noesis. Uses a generic protocol to support disassembly, memory viewing/modification, and a variety of general debugging features under virtually any architecture and addressing mode. Debugger protocol specifies that either the client or the host may implement necessary functionality to support disassembly and other debugging interfaces.
-4.2 - New PBR material shading options. Default implementation uses something close to Disney's BRDF, with D=GTR (default exponent 2), G=Smith-GGX, F=Schlick approximation. Lambert diffuse is used by default instead of the Disney diffuse term. To avoid runtime importance sampling and maintain lighting parity with IBL (which uses diffuse irradiance and pre-convolved cubemaps), both direct light and IBL paths implement anisotropy by projecting the halfangle vector along the geometric bitangent. I wasn't sure this was going to be useful to anyone when pulling this approach out of my ass, but have since learned that at least Far Cry 4 is doing something similar. On the whole, the default models should be adjustable to fit most games using "PBR" content with reasonable accuracy, although fitting more specialized shaders for things like cloth or skin might get ugly.
-4.2 - Various new post effect options, with linear output, bloom, and an assortment of color-adjustment and environment map tweak/override parameters. Generally geared toward being able to test and validate correct handling of PBR data.
-4.2 - New HDR color picker, which allows mouse picking of 16-bit HDR color values from the framebuffer. Also useful for analyzing/validating HDR content and ensuring correct material parameters.
-4.2 - Internally, everything has finally been switched over from ARBfp1.0/ARBvp1.0 to GLSL. All shaders have been written to be compatible with 1.20 or later of the GLSL spec, and should run even newer shading models on fairly ancient hardware without issue. The old GL fixed function path still exists as a worst-case fallback.
-4.2 - Better compression of pre-compiled shader permutations.
-4.2 - Noesis core module handling has been reworked to allow for faster load times.
-4.2 - Reliance on the Windows Temp directory has been eliminated in the core module. (still required for FBX handling)
-4.2 - Basic Carmageddon: Reincarnation support.
-4.2 - Added GXT import support.
-4.2 - Various additions to the DX10 DDS path, with preservation of HDR data formats.
-4.2 - Various new tools and routines, including support routines for handling Spherical Harmonic data and a variety of image projection spaces, and derivative/integral functions which have been tested for BRDF debugging and approximation.
-4.2 - Changed file types/lists in export dialog to be alphabetically sorted.
-4.2 - Fixed a bug in 16-bit PNG support.
-4.2 - Fixed a bug in Doom/Heretic/etc. PWAD support.
-4.2 - Basic compute shader support. Some operations, such as specular convolution for baking IBL, may be accelerated by enabling compute shaders through the data viewer.
-4.2 - Fixed an interface bug that could create duplicate folders in the shell tree view when expanding a folder.
-4.2 - Added an option to completely remove shell views. Best used with Explorer file associations and/or drag-n-drop.
-4.2 - Added a "swap handedness" preview option, available through the data viewer. Swaps handedness of the rendered scene without modifying any associated model data.
-4.2 - Fixed up Fallout 4 support slightly, and added a commandline option to apply PBR materials to loaded NIF's when possible. (mostly for testing and novelty, NIF PBR material assignments currently assume everything is metal)
-4.2 - Added NOEKF_SCALE_VECTOR_3 and NOEKF_SCALE_TRANSPOSED_VECTOR_3 keyframe data types.
-4.2 - Added animation sequence flags - NSEQFLAG_NONLOOPING and NSEQFLAG_REVERSE.
-4.2 - Added an "always use anim framerate" option, available in the data viewer. (by default, the preview framerate override is used - this forces the animation/sequence framerate to be used for playback instead)
-4.2 - New ".noefbxmulti" format. Facilitates splitting animation sequences into multiple FBX files, as well as combining multiple FBX files into a single set of sequences.
-4.2 - Added "-fbxsortnodes" option, which sorts FBX nodes alphabetically to ensure bone/mesh order on import. Can be useful in conjunction with .noefbxmulti files to ensure ordering dependent on node name instead of file or hierarchy order.
-4.2 - Added a "force no anim lerp" option, available in the data viewer.
-4.2 - Added a "force texture point filtering" option, available in the data viewer.
-4.2 - Added a "global angle offset" option, available in the data viewer.
-4.2 - Added a "disable cursor locking" option, available in the data viewer. This can be useful for tablets and other input devices that don't play nicely with having the cursor position reset.
-4.2 - "m" is now a valid format string character for the imageEncodeRaw function. This indicates the maximum value should be stored at the given location. For example, the following would split the alpha channel out of a RGBA32 source, spreading it across a 32-bit RGBA destination's RGB channels and setting alpha to 255: rapi.imageEncodeRaw(rgbaSrc, w, h, "a8a8a8m8")
-4.2 - Fixed a crash in the GMO loader with models containing over 1024 bones.
-4.2 - Fixed a crash when activating certain tool context menu items without any files selected.
I'll probably write up a giant post about the intricacies of some of the newer features, because as usual I didn't write any documentation.
There are some sample PBR material setups in the "scenes" directory ("sample_pbr_ball_*") and some code is present in the NIF script for seeing how to set up an existing material to use the PBR model. Generally, you'll want to use the spec map to specify spec color in RGB and roughness/glossiness in alpha, or metalness in green and roughness/glossiness in alpha. (most games will want to use DXT5 alpha for roughness, or a separate BC4 map, to keep precision reasonable without bloating size too much) However, some flags are offered for different swizzles, and the change to imageEncodeRaw was done specifically to make reswizzling data fast and efficient in Python.
Edit: Here's a write up http://richwhitehouse.com/index.php?postid=70