Releases: d4rkc0d3r/d4rkAvatarOptimizer
Releases · d4rkc0d3r/d4rkAvatarOptimizer
d4rkpl4y3r Avatar Optimizer 2.2.0-beta.4
Features
- Add option to apply optimization on upload instead of creating a copy of the avatar.
Bug Fixes
- Fix crash when the avatar has multiple non skinned meshes that try to get merged together without any material that can get merged or no skinned mesh in the merge target. (more)
- Fix parser not recognizing
#include
directives with<>
instead of""
. (more) - Fix optimizer ignoring
[gamma]
tags for properties. (more) - Add safeguards around bindpose & bone count mismatch. (more)
d4rkpl4y3r Avatar Optimizer 2.1.1
Install in VCC by adding the https://d4rkc0d3r.github.io/vpm-repos/main.json repo url as a custom repo in the settings.
Bug Fixes
- Fix VRChat beta sdk incompatibility because of
GameObject.GetOrAddComponent()
moving namespaces.
d4rkpl4y3r Avatar Optimizer 2.1.0
Install in VCC by adding the https://d4rkc0d3r.github.io/vpm-repos/main.json repo url as a custom repo in the settings.
Features
- Add option to keep MMD blendshapes intact. (more)
Bug Fixes
- Apparently
sampler
is also a way to declare aSamplerState
. So now the optimizer also replaces those. - Parse and ignore
const
keyword in shader function parameters.
d4rkpl4y3r Avatar Optimizer 2.0.0
Install in VCC by adding the https://d4rkc0d3r.github.io/vpm-repos/main.json
repo url as a custom repo in the settings.
Features
- Add option to merge simple toggles in the fx layer into one big direct blend tree.
- Optimizer is now a VPM & UPM compatible package.
- A crash in the optimize function will now show an error message that when clicked opens a link to the github issue tracker.
- Add option to merge blendshapes that get animated in a fixed ratio to each other.
- Remove blendshapes that only have animations animating them to 0 if the initial weight on the mesh is also 0.
- Show change in total blendshape count under the perf rank change section.
- Add warning if the avatar has extra animators. The optimizer only supports the custom playable layers.
- Add warning if the avatar has layer masks in the animators and the delete unused gameobjects option is enabled.
Changes
- Texture Compression Analyzer now only shows SSIM by default to reduce clutter.
- Detect DPS penetrators and stop them from getting merged into other meshes.
- Merge static meshes as skinned meshes now only merges if it results in a decrease in material count.
- Foldouts can now be toggled by clicking on the label text too.
- Delete unused GameObjects is now disabled by default if the avatar has any layer masks in the animators.
- Remove
#pragma skip_optimizations
from the generated shaders. - Progress bar updates continuously while shaders get parsed.
Bug Fixes
- Fix ring finger to foot collider having half the size from VRChat update 2023.1.2.
- Fix crash when a material swap gets merged into a blob of meshes and its mesh index is non-zero. (more)
- Fix always converting vertex colors to full float32 instead of using unorm8 if it was already unorm8.
- Fix crash when eye look blendshape IDs were greater or equal than the actual number of blendshapes.
- Fix jaw flap blendshape getting deleted.
d4rkpl4y3r Avatar Optimizer 1.10
Features
- Add debug view to show all animated material property paths.
- Several small improvements to the generated shaders and mesh layouts reducing the amount of VRAM used by the optimized avatar.
Changes
- Show original mesh paths in the
_IsActiveMesh
properties of merged materials. - Don't inject animated property arrays for merged material properties where none of the original meshes had that property animated.
- Calculate min and max mesh id for each merged material and only add animated property arrays for that range.
- Only add the animated property based on the used mesh indices for the merged material.
- Interleave animated property arrays in cbuffer to reduce the required cbuffer size.
- Pack original meshID & materialID into uv0.z instead of having them separate in uv0.z & uv0.w. Miniscule VRAM savings. (more)
- Call
Mesh.Optimize()
on the merged mesh to reduce the amount of memory it takes up. (more)
Bug Fixes
- Delete shader properties that start with _ShaderOptimizer from the optimized shader. This is to prevent Kaj shader optimizer from trying to optimize the shader again.
- Fix
RemoveIllegalComponents()
being broken when the sdk was imported via VCC. - Change signaling value to NaN. This fixes animated properties interpolating the signal value weirdly.
- Create optimized swap materials after merging materials instead of before so that Texture2DArray and animated properties are correctly set.
- Deduplicate optimized swap materials with the optimized material that is already in the mesh renderer.
- Fix vertex shader not passing along mesh id to the geometry shader if the mesh id is disabled.
d4rkpl4y3r Avatar Optimizer 1.9
Features
- Multiple performance improvements that reduce the time it takes to optimize an avatar by a factor of around 2x.
Changes
- Instead of doing a
AssetDatabase.Refresh()
to import the optimized shaders it now usesImportAsset()
inside aStartAssetEditing()
andStopAssetEditing()
block. This saves a tiny bit of time. - Replaced two heavily used regex with string and char operations. This saves a bit of time.
- Moved most of the generated shader code into include files. This saves a lot of time when importing the shaders.
- Strip
[Drawer]
attributes from the generated shader code. This saves a significant amount of time when assigning the shader to a material.
Bug Fixes
- Fix that the optimizer would try to merge textures with different mip count.
- Fix crash when the avatar has a component with a missing script on it.
d4rkpl4y3r Avatar Optimizer 1.8
Features
- Add info text if any normal maps are found that are not using BC5 compression.
- Add button to automatically convert all normal maps to BC5 compression.
- Add Texture Compression Analyzer under the
Tools/d4rkpl4y3r/Texture Compression Analyzer
menu.
Changes
- The optimized animator controllers now have
(OptimizedCopy)
appended to their name. - Add Limitations section to the readme to clarify that avatars might look broken if shaders are disabled. (more)
- Slight blend shape download size reduction by setting delta values to 0 if they are below 1e-8.
Bug Fixes
- Fix parents of animated transforms getting deleted. (more)
- Always enable SkinnedMeshRenderer component that gets other meshes merged into it. (more)
- Ignore Renderers that have no materials. (more)
- Only add
#define KEYWORD
to passes that have a corresponding#pragma shader_feature
in the pass. (more) - Fixed that multiple vert/geometry/fragment shader declarations would cause the optimizer to only use the last one.
- Add
Texture2D.GetDimensions(uint mipLevel, out float width, out float height, out float numberOfLevels)
and theuint
variant overloads to the merged texture wrapper class. (more) - Fix assumed default vertex color to be white instead of black.
- Ignore Renderers that have no mesh. (more)
- Vector4 properties now use G formatting instead of the default unity F1 formatting. (more)
d4rkpl4y3r Avatar Optimizer 1.7
Bug Fixes
- Fix optimizer not working with VRCSDK3-AVATAR-2022.10.12.21.07 SDK onwards. (more)
d4rkpl4y3r Avatar Optimizer 1.6
Features
- Optimizer now shows a progress bar dialog when optimizing an avatar.
- Add info box if build target is Android to tell users that the optimizer doesn't support Quest avatars.
- Add validation check that checks if the optimizer got added to an optimized copy.
- Add validation error if the amount of base playable layers isn't 5.
Bug fixes
- Fix extra out parameters in the fragment shader not getting added to the function declaration. (more)
- Add ParserException if any parameter in vertex or fragment can't be parsed.
- Fix parsing of template types to permit spaces between the type and the template brackets.
- Fix new lines in string literals not being the environment's new line character. This caused shader warning spam on poi shader.
- Fix default texel size to 4 instead of 8. This matches the sizes of the default textures as checked with nvidia nsight.
- Fix non float params not working with "Keep Material Animations Separate" option.
d4rkpl4y3r Avatar Optimizer 1.5
Bug fixes
- Fix crash when an EditorOnly tagged game object was in the exclusions list.
- Fix non Texture2D textures that are the same reporting that they can't be combined.
- Fix non Texture2D textures trying to combine with
null
. - Fix crash when vertex shader has no input struct.
- Fix geometry shader input type to also allow for point & line.
- Fix nested BlendTrees not getting iterated through to fix animation paths.
- Move the optimized copy to the same scene as the original.
- Replace VFACE semantic with SV_IsFrontFace.
- Force include TEXCOORD0 semantic in the vertex shader input struct. This fixes cases where the sematic only exists in some shader variants.
- Don't delete transforms that are moved by animations.
- Don't delete parent transforms of Constraints.
- Deep copy blend trees when fixing animation paths.