[Feature Request] Utilizing PSD layers within UE4

Hey, DDO manages its layers like this as well.
It would be a great feature, no… a texture/material work flow game changer!
So… Much… Yes!

I’ve been thinking of a concept of dealing with PSD files within Unreal Engine 4.
Something similar to the way 3Ds Max works in a sense that if you import a PSD file it compresses the image to a single image. My idea anyway: Photoshop allows you to group up layers and my usual method is to have a Diffuse, Roughness, Normal etc… groups. Essentially storing all of my textures for a given asset within one PSD file.

I’m interested in the idea that if there was a way of compressing a PSD file by group and correlate it with a node within the material editor. See attached image as example.

I’m not entirely sure how capable it is to gain access to PSD’s groups and if it’s impossible to compile it to a single texture, but perhaps this would be a good idea for embedding PSDs within Unreal Engine 4 and keeping an asset’s amount of files minimal.

Anyone else have any input on the practicality of this?

  • Scott Baker.

You want to compress it into single image ?

It is not going to work. Texture files, are essentially Vectors (or float4), which means they store scalar value, that are composed into final image. Each Vector value is corresponding to single color channel.

You can’t just pack separate textures into scalar channel and expect the composite channel (the white pin), to be separate.

White pin is sum of the other pins (simply speaking) multiplied by alpha channel.

I think you are trying to pack vector data into single scalar channels, which is simply not going to work.

You can, pack scalar masks (like Roughness/Specular/Metallic) into single texture to separate channels, but you diffuse need separate texture.

You can prepare some Photoshop action to do it automatically for you.
I’m personally just using Substance Designer, where I just setup output nodes that pack everything for me.

While I understand that textures are vectors, when I say about exposing pins from the node as multiple textures, I’m not specifically talking about the texture sample node, rather a new node where each pin references a group from the texture rather than RGBA channels, I do however understand that can be problematic as there would have to be a new way to split the RGBA from a given texture.

I know you can pack masks within RGBA channels of a given texture, this is not the aim here. The Aim is to store entire textures within a single node from PSD, it’s more so to limit file usage for an Environment Artist, i.e:
1 asset = 4 TGAs (for import), 4 PSDs (raw data), 1 model file, 1 max file.

By attempting this ‘PSD import to node’ concept you could potentially have 1 PSD, No TGAs and 1 Model. Making an Environment Artist’s file management a lot more fluid.

Could you use something like the landscape layer blends to do what you want?

I honestly don’t see any real application for it. You don’t get any benefit beyond convenience

What is see is some real disadvantages and maintainability issues:

  1. PSD is by no means standardized format. It implementation might change without notice at any time making entire system obsolote. More over engine have code open to everyone (who pays), so I doubt Adobe will provide any proprietary code for PSD implementation. Which would mean reverse engineering entire file structure… And so on.

  2. You want to essentialy decode this node inside material editor, which would increase computational resources needed to do so. It is simply not worth it.

  3. The only possibility I see is importing PSD as asset resource, and then click on in and generate textures out of it. Though I don’t see it really working anyway. Everyone is using their own naming conventions, file structures, organization etc.

  4. You already have something similar. It’s called Substance Designer. Well it is no integrated into engine yet, but guys at Allegorithmic work on it. You import SD file (sbsar), and generate infinite variations of texture maps of it, directly inside engine. Bah! You can do so even at run time. Assuming you have properly optimized it.

Mainly of points 1 and 2 I don’t see it happen. Maybe someone would work on it, but it seems far to niche feature that will cost to much to maintain and scale performance properly, to even bother working on it.

In the essence, you trying to bend PSD file, to do things that it was never meant to do in the first place.

Cool, yeah it’s interesting to note that the PSD file format would have to be reverse engineered, I figured that Adobe wouldn’t have an easy to use API readily available. :stuck_out_tongue:

Cheers for the notes on Substance, will look more into it.
All of this was just an idea I had, I knew it was most likely not going to work, but thank you for the interesting debate. :slight_smile: