* Renders the scene with the override material. * * @private * @param {WebGLRenderer} renderer - The renderer. * @param {Scene} scene - A scene. * @param {Camera} camera - A camera.
(renderer, scene, camera)
| 331 | */ |
| 332 | |
| 333 | render(renderer, scene, camera) { |
| 334 | |
| 335 | // Ignore shadows. |
| 336 | const shadowMapEnabled = renderer.shadowMap.enabled; |
| 337 | renderer.shadowMap.enabled = false; |
| 338 | |
| 339 | if(workaroundEnabled) { |
| 340 | |
| 341 | const originalMaterials = this.originalMaterials; |
| 342 | |
| 343 | this.meshCount = 0; |
| 344 | scene.traverse(this.replaceMaterial); |
| 345 | renderer.render(scene, camera); |
| 346 | |
| 347 | for(const entry of originalMaterials) { |
| 348 | |
| 349 | entry[0].material = entry[1]; |
| 350 | |
| 351 | } |
| 352 | |
| 353 | if(this.meshCount !== originalMaterials.size) { |
| 354 | |
| 355 | originalMaterials.clear(); |
| 356 | |
| 357 | } |
| 358 | |
| 359 | } else { |
| 360 | |
| 361 | const overrideMaterial = scene.overrideMaterial; |
| 362 | scene.overrideMaterial = this.material; |
| 363 | renderer.render(scene, camera); |
| 364 | scene.overrideMaterial = overrideMaterial; |
| 365 | |
| 366 | } |
| 367 | |
| 368 | renderer.shadowMap.enabled = shadowMapEnabled; |
| 369 | |
| 370 | } |
| 371 | |
| 372 | /** |
| 373 | * Deletes cloned override materials. |