Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
AFRAME.registerComponent("gamma-factor", {
schema: {
gammaFactor: { type: "number", default: 2.2 }
},
init() {
const el = this.el;
if (!el.isScene) {
console.warn("gamma-factor component can only be applied to <a-scene>");
}
},
update(prevData) {
const data = this.data;
const sceneEl = this.el;
const renderer = sceneEl.renderer;
let needsShaderUpdate = false;
if (data.gammaFactor !== prevData.gammaFactor) {
renderer.gammaFactor = data.gammaFactor;
needsShaderUpdate = true;
}
if (!needsShaderUpdate || sceneEl.time === 0) {
return;
}
sceneEl.object3D.traverse(function(node) {
if (!node.isMesh) {
return;
}
if (Array.isArray(node.material)) {
node.material.forEach(function(material) {
material.needsUpdate = true;
});
} else {
node.material.needsUpdate = true;
}
});
}
});