secondlife / jira-archive

3 stars 0 forks source link

[BUG-229439] Find a solution for material layering on mesh #7303

Open sl-service-account opened 4 years ago

sl-service-account commented 4 years ago

How would you like the feature to work?

I work in the games industry and most modern games have some form of layered materials, that is, having the ability to use masks in conjunction with tiling materials and trim sheets as an alternative to one-to-one texturing. This allows for much higher fidelity with lower resolution texture maps. There are many ways to implement this but creating a similar solution for SL could drastically improve performance as it is adopted over time and used instead of the current standard of creators using multiple 1024 maps for singular objects to attain higher texture fidelity.

Why is this feature important to you? How would it benefit the community?

As a seller of primarily environment assets, it would allow me to drastically improve texture fidelity on my products without costing render efficiency. It would benefit all of SL by significantly improving optimization and allowing for higher FPS than ever to be achieved in dense regions using it instead of traditional textures/materials.

Links

Related

Original Jira Fields | Field | Value | | ------------- | ------------- | | Issue | BUG-229439 | | Summary | Find a solution for material layering on mesh | | Type | New Feature Request | | Priority | Unset | | Status | Accepted | | Resolution | Accepted | | Reporter | Skye Flaks (skye.flaks) | | Created at | 2020-10-01T00:08:52Z | | Updated at | 2021-11-27T13:32:01Z | ``` { 'Build Id': 'unset', 'Business Unit': ['Platform'], 'Date of First Response': '2020-10-07T13:02:09.342-0500', 'How would you like the feature to work?': 'I work in the games industry and most modern games have some form of layered materials, that is, having the ability to use masks in conjunction with tiling materials and trim sheets as an alternative to one-to-one texturing. This allows for much higher fidelity with lower resolution texture maps. There are many ways to implement this but creating a similar solution for SL could drastically improve performance as it is adopted over time and used instead of the current standard of creators using multiple 1024 maps for singular objects to attain higher texture fidelity.', 'Original Reporter': 'Skye Flaks (skye.flaks)', 'ReOpened Count': 0.0, 'Severity': 'Unset', 'Target Viewer Version': 'viewer-development', 'Why is this feature important to you? How would it benefit the community?': 'As a seller of primarily environment assets, it would allow me to drastically improve texture fidelity on my products without costing render efficiency. It would benefit all of SL by significantly improving optimization and allowing for higher FPS than ever to be achieved in dense regions using it instead of traditional textures/materials.', } ```
sl-service-account commented 4 years ago

Vir Linden commented at 2020-10-07T18:02:09Z

Could you give more specifics and any relevant links to exactly what you would like to see for this?

sl-service-account commented 4 years ago

Skye Flaks commented at 2020-10-07T20:10:31Z

So the setup is essentially bringing the same sort of system found in texture authoring programs like Substance Painter into an engine.

Here's an example of one implementation in UE4: https://www.youtube.com/watch?v=I9w9sT1doRc

Material application is controlled by black/white masks, so it would be similar to another suggestion I made that was accepted back in 2017, which was an ask for color masks. Color masks use black/white masks to inform the shader where to allow for certain color changes to be applied, layered materials use that same mask setup but allow a tiling material to be applied within the regions defined by the masks instead of just a color change.

As I am not an engineer I don't know the details of how this is implemented in a shader's code, but I hope my explanation has given more info. I'll add the color masks feature request as a related issue to this.

sl-service-account commented 4 years ago

Skye Flaks commented at 2020-10-07T20:12:24Z

https://jira.secondlife.com/browse/BUG-11775

This is the related issue I mentioned, the accepted feature request for color masks.

sl-service-account commented 2 years ago

Skye Flaks commented at 2021-11-27T13:29:26Z, updated at 2021-11-27T13:32:01Z

@Vir Linden

So, since last year, I've learned a lot more about this and the best way to implement this would be to allow for meshes with multiple UV channels and allow for a blending selection between the maps applied on each UV channel. Here's an example:

 UV1: Set up for Tiling Material with fine detail normal and gloss

UV2: Set up for Trim sheet or panels/bolts/decals materials with large detail normal/no gloss/no diffuse

Allowing the user to upload a mesh with these two UVs then choose the blending method for each texture map (i.e. additive in the case of normals, overlay or multiply in the case of diffuse and gloss) would let creators produce much higher texel density assets with significantly less texture memory usage by allowing us to re-use details from the second UV in combination with multiple tiling materials on the first UV (i.e. painted metal, raw metal, etc.). Currently, use of trim sheets or "decal" sheets can cause uneven texel density and requires multiple high resolution (as opposed to lower resolution tiling maps) textures for different diffuse/gloss details over normal map content.