-
-
Notifications
You must be signed in to change notification settings - Fork 36.2k
Renderer: Rename shadowMap.color to shadowMap.colored.
#32608
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
| if ( this.shadowMap.colored !== true ) { | |
| warnOnce( 'Renderer: `shadowMap.colored` needs to be set to `true` when using `material.castShadowNode`.' ); | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So renderer.shadowMap.colored = true is only required if material.castShadowNode is defined?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Related issue: #32596 (comment)
Description
The PR renames
shadowMap.colorso it's more clear the property is a boolean.