Renderer: Rename shadowMap.color to shadowMap.colored.#32608
Conversation
📦 Bundle sizeFull ESM build, minified and gzipped.
🌳 Bundle size after tree-shakingMinimal build including a renderer, camera, empty scene, and dependencies.
|
|
Wouldn't the term 'colored' be better? To be honest, I think the term 'Enabled' as a suffix is redundant; it's fine for defining the block using only '.enabled', but I don't think it should go beyond that. If we imagine this throughout the API, we'll see that the 'Enabled' suffix could easily be removed and replaced with something much more like 'renderer.depth', 'material.transparent', and so on. |
shadowMap.color to shadowMap.colorEnabled.shadowMap.color to shadowMap.colored .
shadowMap.color to shadowMap.colored .shadowMap.color to shadowMap.colored.
|
I think |
| * @typedef {Object} ShadowMapConfig | ||
| * @property {boolean} enabled - Whether to globally enable shadows or not. | ||
| * @property {boolean} color - Whether to include shadow color or not. | ||
| * @property {boolean} colored - Whether shadows can have a custom color or not. |
There was a problem hiding this comment.
Sorry, but this is still not clear to me.
Where is the "custom color" set?
What does this property enable, precisely? When is it required?
If you can explain that in a few words, then perhaps we can come up with a better definition.
There was a problem hiding this comment.
material.castShadowNode allows to customize the colors and opacity of the cast shadow per material with a vec4.
three.js/src/renderers/common/Renderer.js
Lines 3056 to 3060 in 288d8a3
There was a problem hiding this comment.
So renderer.shadowMap.colored = true is only required if material.castShadowNode is defined?
There was a problem hiding this comment.
For now, yes. But your question made me rethink a few things.
This hasn't been implemented in the PBR yet; it should be eventually. The concept of colored shadows should be replaced by light transmission.
I think we could consider a more suitable name in this sense, if we consider that there is no colored shadow in the physically-based sense, but rather the transmission of light and the tint due to its color interference.
Should this be called shadowMap.transmitted?
There was a problem hiding this comment.
Shadows are the absence of light in three.js, as they are in the real world.
On a related note, light.shadow.intensity = 0.5 is a hack that, in effect, allows light to transmit through the object, brightening (and potentially tinting) the shadow. This property works without setting renderer.shadowMap.colored = true.
There was a problem hiding this comment.
Yes, it's no different from what is stated here.
The term transmitted should imply that the shadow should somehow consider the transmission of light in non-opaque materials.
There was a problem hiding this comment.
If not using material.cashShadowNode, should renderer.shadowMap.transmitted (previously .colored) be always set to false?
EDIT: Ah, I think it is that transmitted true on its own without castShadowNode will be used when built-in transmission is added later, right?
Related issue: #32596 (comment)
Description
The PR renames
shadowMap.colorso it's more clear the property is a boolean.