Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/components/shadow.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,6 @@ for shadows. These are set on `<a-scene>` (e.g., `<a-scene shadow="autoUpdate:

| Property | Description | Default Value |
|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|
| enabled | Whether to disable shadows globally, even if there is a shadow component and a light with `castShadow: true` enabled. | true |
| autoUpdate | Whether to dynamically update the shadow map every frame. Disable and manually update by setting `renderer.shadowMap.needsUpdate = true` for best performance. Calculating shadow maps is expensive. | true |
| type | Shadow type. One of `pcf`, `basic`, `pcfsoft`. | `pcf` (percentage closer filtering) |
11 changes: 9 additions & 2 deletions src/systems/shadow.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var SHADOW_MAP_TYPE_MAP = {
*/
module.exports.System = registerSystem('shadow', {
schema: {
enabled: {default: true},
autoUpdate: {default: true},
type: {default: 'pcf', oneOf: ['basic', 'pcf', 'pcfsoft']}
},
Expand All @@ -32,15 +33,21 @@ module.exports.System = registerSystem('shadow', {
this.setShadowMapEnabled(this.shadowMapEnabled);
},

update: function (prevData) {
if (prevData.enabled !== this.data.enabled) {
this.setShadowMapEnabled(this.data.enabled);
}
},

/**
* Enables/disables the renderer shadow map.
* @param {boolean} enabled
*/
setShadowMapEnabled: function (enabled) {
var renderer = this.sceneEl.renderer;
this.shadowMapEnabled = enabled;
this.shadowMapEnabled = this.data.enabled && enabled;
if (renderer) {
renderer.shadowMap.enabled = enabled;
renderer.shadowMap.enabled = this.shadowMapEnabled;
}
}
});