Skin Companion 2.0.0
First of all, sorry for taking so long with this.
This version is going to be Patreon only until the next version comes out, then this one will become free and so on.
If you choose to support the work, I appreciate you.
The download is available to Companions and up.
If you want to support it further, let people know this app exists. :)
This update is mostly oriented towards better support of existing features and has a fairly big focus on performance improvement. It also lays the groundwork needed for model replacements.
That being said it also features a new live car preview, optional Content Manager generated car previews and a few Quality Of Life additions.
New car previews
Added skin name on top of the preview.
Live preview
Essentially this is a live view of the currently-selected car, replacing the static skin preview.
Compatible with both linear and gamma WeatherFX.
left click to spin by 1/8 turns
left click + drag to rotate freely ; snaps to 1/8 turns when you release
right-click to reset
when left idle for 5 seconds it will settles back to the default view on its own.
Skin previews (via Content Manager)
The app can call upon Content Manager's preview generator with a custom preset that roughly matches the live preview's framing and style.
You have the ability to either generate all of the skin previews for the currently selected car or to do it per skin.
The same goes for deleting previously generated previews.
Note: This is a temporary solution until it makes sense to generate previews directly with the app instead.
But for now this is a nice thing to have as it makes the UI much nicer to use.
Updated skin application pipeline
As skin swap was getting support for more things, the process got heavier and it became obvious that it needed a rework to prevent lags.
I reworked the whole skin application pipeline so that skins are queued up, meaning that only one skin can be applied at a given time, furthermore skin are applied progressively over time instead of happening in a single frame.
It looks a bit less clean, but it's also much better for stable fps. :)
Skin changes from remote players apply a bit slower to make sure there's as little of a performance hit as possible online , and player skins apply a bit faster to make it feel more reactive. (1 shader replacement at a time for remote cars instead of 6)
There's still a potential issue with shader replacement for now though, see known issues at the end.
Full ext-config shader replacement support.
Meaning from all possible locations and, I think, in the right order 😅, but do let me know in case something is off.
Skin filtering for car ext_configs via the "SKINS=" field with "?" wildcard.
Car LOD support for both textures and shader replacements.
Reduced ram usage: original car shaders used to be gathered at startup and kept in memory at all times, now they are fetched when applying skins.
Materials are now made unique before applying skins so changing skin no longer affects other cars of the same model.
Meaning you can safely leave Patch → Optimizations → New KN5 Loader → Shared KN5 Materials set to "across the same cars" or "across the same model" again.
CSP-specific materials are excluded though as it could cause strange behavior: If you see anything odd like meshes teleporting, weird artifacts and such, let me know but it should be fine. :)
Reworked UI
New app menu.
The menu now fades along with the rest of the window.
The Patreon icon was moved to the new menu.
A new notification icon might show up to provide information about newer app versions, or to inform users that they are using a non recommended CSP version.
Updated main window fading behavior
The main window will now fade out after a certain amount of time, hovering the window makes it appear again.
The amount of time it takes for it to fade out and the transparency that it fades to are customizable and independent for replay mode:
To turn it "off" simply set minimum opacity to 100%.
Additionally the app will fully fade when car speed exceeds 5km/h.
This has the benefit of skipping rendering for the app when driving which keeps your view clear and saves fps.
Note: if another app window is opened, fading is disabled.
Updated menus
Skin selection grid:
The first two icons for skin selections are now special:
The first icon allows to change to what the car would look like without a livery applied (empty skin folder)
The second listed skin is always the skin you joined the session with.
If it's not installed locally (can happen online), it shows as "?" and clicking it does the same thing as the previous option.
Some performance improvements for drawing skin icons.
Reduced ram usage: not all skin previews are kept in memory anymore.
Quality Of Life
Preview generation
Previews can only be created in the original skin folder, but I'm moving them back to the app folder to keep things tidy and easy to manage. Also, by default CM previews wouldn't generate a preview for the no skin option, so I'm temporarily creating an empty skin folder then deleting it once previews have been generated.
Skins will automatically reapply if car files were modified allowing you to work on skin textures / ext_configs live (in the limits of what the app currently supports though, so textures and shader replacements for now).
Notifications
The app now checks for newer releases and will notify you if a newer version has been released.
It will show changelogs for the newer versions, for both the free and the Patreon releases, as well as required CSP versions.
It will also warn you if you're running a CSP version that is not recommended for this version of the app.
Logging.
I tried to improve logs to make it easier to figure out potential issues, the whole thing shouldn't really impact performance as writing to the log file isn't done by the main thread.
Also it should only keep 10 logs now, I forgot to cap it before so a lot of people probably have a ton of logs in their log folder now. :x
Fetching of skin information
Skin information (used for drawing the list of skins, among other things) is now fetched asynchronously, allowing for smoother loading, and refreshes whenever skin folders change, so if you add a skin while the game is running it would show up in the list of skins and you'd be able to select it.
Known issues
CM preview generation can occasionally fail to refocus AC after completing. Just click back into AC if it happens. It also may or may not show the window with car previews updating, but it should work nonetheless.
It doesn't have support for some custom shaders (for example some paints) that are supported by CSP so some car looks might differ.Live preview framing assumes the car is on the ground. Switching to a car that's mid air in a replay might result in the car being off centered in the preview.
Long story short, it helps to match the framing of CM generated previews, and the issue will fix itself in the future when previews will be generated in app.Shader replacements could take a bit long to apply when shaders need to be compiled, the next version of the app should address that. (I've never seen anything over 3ms on my end but it likely varies on different machines).
As of now, I don't think it should cause any noticeable hiccups as I'm making sure to only apply one per frame for remote cars.Driver head is missing from the preview in some F1 cameras modes, I hope to have way to address that in the future.
Lod is forced to highest for the selected car in the preview, I don't think it would be a problem for many users, but i just noticed that it interferes with my tool for model replacements (which tweaks lod distances to show different lods of the car) so it might be good to know, I'll try to add something so that other apps could temporarily disable this in the future.
CSP compatibility
The recommended version is 0.3.0-preview440 or if you must, 0.3.0-preview110 but that version is missing support for independent reflections in the skin preview.
Both of those versions use the new skin application pipeline.
The minimum version to run the app is 0.2.11 (public).
Most of the newer features won't work there, or may be incomplete. Backward compatibility was added for convenience in case you'd encounter issues with newer CSP and would need to roll back.
Next release won't support this CSP version however.
On builds older than CSP 0.2.11 (public), the app won't run at all.
Comments (2)
skin app is good. but what eles can it be added?
If you're asking what else I plan to add. For the next update: - support for model replacements (loading extra parts on cars, which can be used to replace body kit, load an extra wing, replace rims, or just load random things on the car) edit: decided to push this one back to do hosting earlier - support for skin changes synchronising in replays (if someone changed at a given moment in game it will do that in the replay too) - keep track of manually changed skins in replays (if you're making a video or something you'll just have to set skins on cars once and it will save) once that update is out, i'm going to work on skin hosting again, so that you'd be able to upload skins online. That would let you use a skin that other players do not have installed locally and they would still be able to see it.
