Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
141 stars 2 forks source link

In-World Texture Packing and Unpacking Wizards #2740

Open RyuviTheViali opened 3 months ago

RyuviTheViali commented 3 months ago

Is your feature request related to a problem? Please describe.

Currently in-platform there is no way to - given a texture - split it into its constituent color channels (red, green, blue, alpha). Similarly, there is no in-platform way to take textures and pack them together (based on color channel choice per texture) into one singular texture. This means that working with packed textures one must resort to using external tools to access the individual color channels of an image, to either separate them, or combine them together into a "packed" texture, which is a slow process and takes users out of the platform.

Describe the solution you'd like

I propose adding two new "wizards", or small pop-up menus which provide the user with the ability to pack and unpack textures/images. These wizards would allow users to pack and unpack images based on user-defined color channel selection, and would ease the burden of entry for using packed textures in our shaders (see: splat maps, metallic-smoothness maps, specular-smoothness maps, etc).

Describe alternatives you've considered

The alternative to this solution is for users to export the textures they wish to pack or unpack, open them in an external image editor, take the time to individually move the images color channels where they need to go, then re-import into the platform their packed/unpacked textures.

Additional Context

In addition to the two wizards, I feel having the ability to "isolate" color channels from a texture in-platform could be a good addition to the image manipulation methods already available to users.

Requesters

Ryuvi (Discord: ryuvi)

lxw404 commented 3 months ago

This is awesome, just a note though: you can split an image into its individual channels entirely in game at the moment with the TextureDebug material set to visualize each TextureChannel, then render this with a camera, and similarly there is a way to pack them by stacking these channels in separate quads and just rendering the result. Several tools exist to do this, but an official one is more than welcome.

ModernBalloonie commented 3 months ago

Yes please! I find it all too often where we're setting up a new user's avatar and it's made to work with specific texture packing in mind, using the wrong channels. This would make it so incredibly easy to make those maps work with Resonite's materials.

Bonus points if we could invoke this via ProtoFlux as well.

ModernBalloonie commented 3 months ago

Also if this is ever implemented, I have another idea, that being we should have the control to adjust the value of the channels in the ui or something, Reason I want this is because Resonite's shaders have a weird thing where the metallic and smoothness sliders can't be adjusted if they have a texture in them, This is inconsistent with overall unity shader behaviour but I digress. A channel value slider from 1-0 could help us "dial in" the settings so we could get the look properly like it should be like other platforms, However I guess we could just do this ourselves using the image editing settings in game.