MatCap Improvement #104640

Open
opened 2023-02-12 00:52:52 +01:00 by Clément Foucault · 5 comments

Separate Specular Layer

The matcaps included in blender were introduce in the 2.8 version. At this time, there was concept of specular layer.
A patch was submitted (need to find it) to split the specular layer from the diffuse layer for existing internal matcaps. Unfortunately the patch was corrupted and we need to do the work all over again. But we can go one step further.

Color Neutrality

For correct support of all material parameters, the diffuse and specular components need to be color neutral. This means the surface color should be a white surface. It doesn't mean the whole matcap needs to be grayscale. Colored light can still bounce off the white surface. The surface can also have some kind of subsurface scattering.

Metallic support

For good support of metallic surfaces, there needs to be some variety to reflect in the specular channel. However, to not interfere with older matcaps behavior, we might consider making a different EXR layer only for metal reflection support.

It might prove complex to handle matcaps with metal reflection in the diffuse channel, not to mention if they have a clear-coat reflection. A possible solution would be to only color the specular reflexion (no scalling) and mix down the diffuse a bit by the amount of energy there is in the specular channel.

Roughness Support

Roughness support can be added by pre-filtering the specular layer and store that in the mipmap chain. This can be done automatically by workbench.
Ideally recorded roughness should be 0.0 with so that default roughness 0.5 is soft enough. However, this feels like highly constraining the freedom of matcap authoring.

Maybe an ad-hoc system could be figured out to "sharpen" the reflections (to a small extent, we don't want to loose the matcap appearance). This would recover the 0.0 to 0.5 roughness range.

Another option is to remap the roughness to a non-linear value that is almost starting at 0.5 (see attachment). This way, the default matcap appearance would be very close to what the matcap looks. However, this makes the roughness parameter feel weird.

Automatic conversion for other matcaps

For user matcaps, we could come up with an auto setup for auto splitting the diffuse and specular light. This would improve all other color modes other than the default white.
However this separation might be difficult for good looking metals. In the event where no good enough solution is found, we can disable the metallic parameter when using these matcaps. Parameters could be added to the studio-lights to help get a more proper split.

Main light extraction

This would be needed for the shadow to follow the light direction #xxxx as well as lighting the volumes #xxxx.
A Spherical Harmonic L1 extraction should provide an ambient and a directional term.

### Separate Specular Layer The matcaps included in blender were introduce in the 2.8 version. At this time, there was concept of specular layer. A patch was submitted (need to find it) to split the specular layer from the diffuse layer for existing internal matcaps. Unfortunately the patch was corrupted and we need to do the work all over again. But we can go one step further. ### Color Neutrality For correct support of all material parameters, the diffuse and specular components need to be color neutral. This means the surface color should be a white surface. It doesn't mean the whole matcap needs to be grayscale. Colored light can still bounce off the white surface. The surface can also have some kind of subsurface scattering. ### Metallic support For good support of metallic surfaces, there needs to be some variety to reflect in the specular channel. However, to not interfere with older matcaps behavior, we might consider making a different EXR layer only for metal reflection support. It might prove complex to handle matcaps with metal reflection in the diffuse channel, not to mention if they have a clear-coat reflection. A possible solution would be to only color the specular reflexion (no scalling) and mix down the diffuse a bit by the amount of energy there is in the specular channel. ### Roughness Support Roughness support can be added by pre-filtering the specular layer and store that in the mipmap chain. This can be done automatically by workbench. Ideally recorded roughness should be 0.0 with so that default roughness 0.5 is soft enough. However, this feels like highly constraining the freedom of matcap authoring. Maybe an ad-hoc system could be figured out to "sharpen" the reflections (to a small extent, we don't want to loose the matcap appearance). This would recover the 0.0 to 0.5 roughness range. Another option is to remap the roughness to a non-linear value that is almost starting at 0.5 (see attachment). This way, the default matcap appearance would be very close to what the matcap looks. However, this makes the roughness parameter feel weird. ### Automatic conversion for other matcaps For user matcaps, we could come up with an auto setup for auto splitting the diffuse and specular light. This would improve all other color modes other than the default white. However this separation might be difficult for good looking metals. In the event where no good enough solution is found, we can disable the metallic parameter when using these matcaps. Parameters could be added to the studio-lights to help get a more proper split. ### Main light extraction This would be needed for the shadow to follow the light direction #xxxx as well as lighting the volumes #xxxx. A Spherical Harmonic L1 extraction should provide an ambient and a directional term.
Clément Foucault added the
Type
To Do
label 2023-02-12 00:52:52 +01:00
Clément Foucault added this to the EEVEE & Viewport project 2023-02-12 00:52:53 +01:00

Hi... Any hope on using different matcaps on different objects?

Hi... Any hope on using different matcaps on different objects?
Author
Member

That's not what this task is about. That would be a workflow change and this task is only about cleaning up / improving existing matcap rendering.

Note that the different matcaps approach is what we started with during early 2.8 development and we reverted back to single matcap for the whole scene. I don't remember the reason why.

That's not what this task is about. That would be a workflow change and this task is only about cleaning up / improving existing matcap rendering. Note that the different matcaps approach is what we started with during early 2.8 development and we reverted back to single matcap for the whole scene. I don't remember the reason why.

That's not what this task is about. That would be a workflow change and this task is only about cleaning up / improving existing matcap rendering.

Note that the different matcaps approach is what we started with during early 2.8 development and we reverted back to single matcap for the whole scene. I don't remember the reason why.

Alright, no problem..
When I read the title "MatCap Improvement" I thought yay this gotta be it haha...
I hope it lands someday... to me that's the biggest downside of using matcaps in blender... 👍

> That's not what this task is about. That would be a workflow change and this task is only about cleaning up / improving existing matcap rendering. > > Note that the different matcaps approach is what we started with during early 2.8 development and we reverted back to single matcap for the whole scene. I don't remember the reason why. Alright, no problem.. When I read the title "MatCap Improvement" I thought *yay* this gotta be it haha... I hope it lands someday... to me that's the biggest downside of using matcaps in blender... 👍
Julien Kaspar added the
Interest
Sculpt, Paint & Texture
label 2023-02-13 11:23:57 +01:00
Member

How would the Main light extraction be useful?
Isn't this a bit counter intuitive since Matcap lighting is always static to the viewer?
Shadows were envisioned to use a static world direction right?

How would the `Main light extraction` be useful? Isn't this a bit counter intuitive since Matcap lighting is always static to the viewer? Shadows were envisioned to use a static world direction right?
Author
Member

@JulienKaspar There is #104641 which should make the shadow follow the lighting (by default, but static optionaly).

@JulienKaspar There is #104641 which should make the shadow follow the lighting (by default, but static optionaly).
Clément Foucault added the
Interest
Workbench
label 2023-10-02 12:55:23 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#104640
No description provided.