|
396 | 396 |
|
397 | 397 | renderer.autoClear = false; |
398 | 398 |
|
399 | | - var renderTargetParameters = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBFormat, stencilBuffer: false }; |
| 399 | + var renderTargetParameters = { |
| 400 | + minFilter: THREE.LinearFilter, |
| 401 | + magFilter: THREE.LinearFilter, |
| 402 | + format: THREE.RGBFormat, |
| 403 | + stencilBuffer: false |
| 404 | + }; |
400 | 405 | renderTarget = new THREE.WebGLRenderTarget( SCREEN_WIDTH, SCREEN_HEIGHT, renderTargetParameters ); |
401 | 406 |
|
402 | 407 | effectSave = new THREE.SavePass( new THREE.WebGLRenderTarget( SCREEN_WIDTH, SCREEN_HEIGHT, renderTargetParameters ) ); |
|
495 | 500 | groundBasic = new THREE.MeshBasicMaterial( { color: 0xffffff, map: texture } ); |
496 | 501 | groundBasic.color.setHSL( 0.1, 0.9, 0.7 ); |
497 | 502 |
|
498 | | - ground = new THREE.Mesh( new THREE.PlaneGeometry( 50000, 50000 ), groundBasic ); |
| 503 | + ground = new THREE.Mesh( new THREE.PlaneBufferGeometry( 50000, 50000 ), groundBasic ); |
499 | 504 | ground.position.y = - 215; |
500 | 505 | ground.rotation.x = - Math.PI / 2; |
501 | 506 | scene.add( ground ); |
|
525 | 530 |
|
526 | 531 | // |
527 | 532 |
|
528 | | - function addObject( geometry, color, x, y, z, sy ) { |
| 533 | + var canvas = document.createElement( 'canvas' ); |
| 534 | + canvas.width = 128; |
| 535 | + canvas.height = 128; |
529 | 536 |
|
530 | | - var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: color, ambient: color } ) ); |
531 | | - object.position.set( x, y, z ); |
532 | | - object.castShadow = true; |
533 | | - object.receiveShadow = true; |
534 | | - scene.add( object ); |
| 537 | + var context = canvas.getContext( '2d' ); |
| 538 | + var gradient = context.createRadialGradient( canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2 ); |
| 539 | + gradient.addColorStop( 0.1, 'rgba(0,0,0,1)' ); |
| 540 | + gradient.addColorStop( 1, 'rgba(0,0,0,0)' ); |
535 | 541 |
|
536 | | - // |
537 | | - |
538 | | - var canvas = document.createElement( 'canvas' ); |
539 | | - canvas.width = 128; |
540 | | - canvas.height = 128; |
| 542 | + context.fillStyle = gradient; |
| 543 | + context.fillRect( 0, 0, canvas.width, canvas.height ); |
541 | 544 |
|
542 | | - var context = canvas.getContext( '2d' ); |
543 | | - var gradient = context.createRadialGradient( canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2 ); |
544 | | - gradient.addColorStop( 0.1, 'rgba(0,0,0,1)' ); |
545 | | - gradient.addColorStop( 1, 'rgba(0,0,0,0)' ); |
| 545 | + // |
546 | 546 |
|
547 | | - context.fillStyle = gradient; |
548 | | - context.fillRect( 0, 0, canvas.width, canvas.height ); |
| 547 | + var shadowTexture = new THREE.Texture( canvas ); |
| 548 | + shadowTexture.needsUpdate = true; |
549 | 549 |
|
550 | | - // |
| 550 | + var shadowPlane = new THREE.PlaneBufferGeometry( 400, 400 ); |
| 551 | + var shadowMaterial = new THREE.MeshBasicMaterial( { |
551 | 552 |
|
552 | | - var shadowTexture = new THREE.Texture( canvas ); |
553 | | - shadowTexture.needsUpdate = true; |
| 553 | + opacity: 0.35, transparent: true, map: shadowTexture, |
| 554 | + polygonOffset: false, polygonOffsetFactor: -0.5, polygonOffsetUnits: 1 |
554 | 555 |
|
555 | | - var shadowPlane = new THREE.PlaneGeometry( 400, 400 ); |
556 | | - var shadowMaterial = new THREE.MeshBasicMaterial( { |
| 556 | + } ); |
557 | 557 |
|
558 | | - opacity: 0.35, transparent: true, map: shadowTexture, |
559 | | - polygonOffset: false, polygonOffsetFactor: -0.5, polygonOffsetUnits: 1 |
| 558 | + function addObject( geometry, color, x, y, z, sy ) { |
560 | 559 |
|
561 | | - } ); |
| 560 | + var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: color, ambient: color } ) ); |
| 561 | + object.position.set( x, y, z ); |
| 562 | + object.castShadow = true; |
| 563 | + object.receiveShadow = true; |
| 564 | + scene.add( object ); |
562 | 565 |
|
563 | 566 | var shadow = new THREE.Mesh( shadowPlane, shadowMaterial ); |
564 | 567 | shadow.position.y = sy; |
565 | 568 | shadow.rotation.x = - Math.PI / 2; |
566 | | - |
567 | 569 | object.add( shadow ); |
568 | 570 |
|
569 | 571 | } |
|
572 | 574 |
|
573 | 575 | function generateDropShadowTexture( object, width, height, bluriness ) { |
574 | 576 |
|
575 | | - var renderTargetParameters = { minFilter: THREE.LinearMipmapLinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, stencilBuffer: false }; |
| 577 | + var renderTargetParameters = { |
| 578 | + minFilter: THREE.LinearMipmapLinearFilter, |
| 579 | + magFilter: THREE.LinearFilter, |
| 580 | + format: THREE.RGBAFormat, |
| 581 | + stencilBuffer: false |
| 582 | + }; |
576 | 583 | var shadowTarget = new THREE.WebGLRenderTarget( width, height, renderTargetParameters ); |
577 | 584 |
|
578 | 585 | var shadowMaterial = new THREE.MeshBasicMaterial( { color: 0x000000 } ); |
|
639 | 646 |
|
640 | 647 | } |
641 | 648 |
|
642 | | - |
643 | 649 | // |
644 | 650 |
|
645 | 651 | function addCar( object, x, y, z, s ) { |
|
672 | 678 | var shadowWidth = ss * ( bb.max.z - bb.min.z ); |
673 | 679 | var shadowHeight = 1.25 * ss * ( bb.max.x - bb.min.x ); |
674 | 680 |
|
675 | | - var shadowPlane = new THREE.PlaneGeometry( shadowWidth, shadowHeight ); |
| 681 | + var shadowPlane = new THREE.PlaneBufferGeometry( shadowWidth, shadowHeight ); |
676 | 682 | var shadowMaterial = new THREE.MeshBasicMaterial( { |
677 | 683 | color: 0xffffff, opacity: 0.5, transparent: true, map: shadowTexture, |
678 | 684 | polygonOffset: false, polygonOffsetFactor: -0.5, polygonOffsetUnits: 1 |
|
979 | 985 |
|
980 | 986 | camera.lookAt( cameraTarget ); |
981 | 987 |
|
982 | | - renderer.clearTarget( null ); |
| 988 | + renderer.setRenderTarget( null ); |
| 989 | + |
| 990 | + renderer.clear(); |
983 | 991 | composer.render( 0.1 ); |
984 | 992 |
|
985 | 993 | renderer.shadowMapEnabled = false; |
|
0 commit comments