bevyengine / bevyengine/bevy

"emissive strength" should have a separate field in StandardMaterial, rather than needing large color channel values

Open
#12,251 1 comment 5 reactions 0 assignees View on GitHub
A-Rendering C-Bug
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## Bevy version

0.13

## What you did

After updating to 0.13, tried updating my Bevy render settings to approximate what I see in Blender (at least as well as they had under 0.12).

## What went wrong

I got everything looking pretty good other than emissive materials, which were too dim. I tried poking around for the Bevy equivalent of Blender's "emissive strength" material option expecting to find a component somewhere that is separate from the color or texture used foe emission.

After looking around for a while, I asked on discord and learned that color channel values can go above 1.0 in the case of the `emissive` field, and there is no separate field for emissive strength.

IMO, this is problematic because:
- allowing arbitrarily large color channel values breaks the semantics of colors that one would expect from working in basically any software that manipulates color (and indeed goes against Bevy's [documented color semantics](https://docs.rs/bevy/latest/bevy/render/color/enum.Color.html#variants), which specify bounded channel values)
- semantically, color is literally orthogonal to emissive strength (coordinate in a bounded color space vs an intensity)
- using large channel values defies expectations from other tools (i.e. Blender) where you manipulate color separately from emissive strength
- It interacts weirdly with `emissive_texture` -- if I want to brighten an emissive texture, it feels super weird an non-ergonomic to specify e.g. `emissive: Color::linear_rgb(100.0, 100.0, 100.0)`,

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.