This is because we're doing tonemapping for unlit materials but probably shouldn't be.
This is very solveable when doing inline tonemapping - just don't tonemap and just do the linear-to-srgb conversion instead! But when we're doing a seperate tonemapping pass it gets harder. How do we tell that a fragment should be tonemapped or not? Perhaps we could write to the alpha channel and tonemap if the alpha is 1.0 and not if it's 0.0.
https://gltf-viewer.donmccurdy.com/ displays the Alicia.vrm VRM sample as like this:
while we currently render Alicia.VRM like this:
This is because we're doing tonemapping for unlit materials but probably shouldn't be.
This is very solveable when doing inline tonemapping - just don't tonemap and just do the linear-to-srgb conversion instead! But when we're doing a seperate tonemapping pass it gets harder. How do we tell that a fragment should be tonemapped or not? Perhaps we could write to the alpha channel and tonemap if the alpha is 1.0 and not if it's 0.0.