@@ -16194,7 +16194,6 @@ function WebGLExtensions( gl ) {
1619416194
1619516195 getExtension( 'OES_texture_float_linear' );
1619616196 getExtension( 'EXT_color_buffer_half_float' );
16197- getExtension( 'EXT_multisampled_render_to_texture' );
1619816197
1619916198 },
1620016199
@@ -23665,8 +23664,6 @@ class WebXRManager extends EventDispatcher {
2366523664 let xrFrame = null;
2366623665 let depthStyle = null;
2366723666 let clearStyle = null;
23668- const msaartcSupported = renderer.extensions.has( 'EXT_multisampled_render_to_texture' );
23669- let msaaExt = null;
2367023667
2367123668 const controllers = [];
2367223669 const inputSourcesMap = new Map();
@@ -23936,11 +23933,7 @@ class WebXRManager extends EventDispatcher {
2393623933
2393723934 session.updateRenderState( { layers: [ glProjLayer ] } );
2393823935
23939- if ( isMultisample && msaartcSupported ) {
23940-
23941- msaaExt = renderer.extensions.get( 'EXT_multisampled_render_to_texture' );
23942-
23943- } else if ( isMultisample ) {
23936+ if ( isMultisample ) {
2394423937
2394523938 glMultisampledFramebuffer = gl.createFramebuffer();
2394623939 glColorRenderbuffer = gl.createRenderbuffer();
@@ -24261,28 +24254,14 @@ class WebXRManager extends EventDispatcher {
2426124254
2426224255 state.bindXRFramebuffer( glFramebuffer );
2426324256
24264- if ( isMultisample && msaartcSupported ) {
24265-
24266- if ( glSubImage.depthStencilTexture !== undefined ) {
24267-
24268- msaaExt.framebufferTexture2DMultisampleEXT( 36160, depthStyle, 3553, glSubImage.depthStencilTexture, 0, 4 );
24269-
24270- }
24271-
24272- msaaExt.framebufferTexture2DMultisampleEXT( 36160, 36064, 3553, glSubImage.colorTexture, 0, 4 );
24273-
24274- } else {
24275-
24276- if ( glSubImage.depthStencilTexture !== undefined ) {
24277-
24278- gl.framebufferTexture2D( 36160, depthStyle, 3553, glSubImage.depthStencilTexture, 0 );
24279-
24280- }
24257+ if ( glSubImage.depthStencilTexture !== undefined ) {
2428124258
24282- gl.framebufferTexture2D( 36160, 36064 , 3553, glSubImage.colorTexture , 0 );
24259+ gl.framebufferTexture2D( 36160, depthStyle , 3553, glSubImage.depthStencilTexture , 0 );
2428324260
2428424261 }
2428524262
24263+ gl.framebufferTexture2D( 36160, 36064, 3553, glSubImage.colorTexture, 0 );
24264+
2428624265 viewport = glSubImage.viewport;
2428724266
2428824267 }
@@ -24307,7 +24286,7 @@ class WebXRManager extends EventDispatcher {
2430724286
2430824287 }
2430924288
24310- if ( isMultisample && ! msaartcSupported ) {
24289+ if ( isMultisample ) {
2431124290
2431224291 state.bindXRFramebuffer( glMultisampledFramebuffer );
2431324292
@@ -24332,7 +24311,7 @@ class WebXRManager extends EventDispatcher {
2433224311
2433324312 if ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );
2433424313
24335- if ( isMultisample && ! msaartcSupported ) {
24314+ if ( isMultisample ) {
2433624315
2433724316 const width = glProjLayer.textureWidth;
2433824317 const height = glProjLayer.textureHeight;
@@ -25840,7 +25819,7 @@ function WebGLRenderer( parameters = {} ) {
2584025819
2584125820 const frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );
2584225821
25843- const program = setProgram( camera, scene, material, object );
25822+ const program = setProgram( camera, scene, geometry, material, object );
2584425823
2584525824 state.setMaterial( material, frontFaceCW );
2584625825
@@ -25872,12 +25851,6 @@ function WebGLRenderer( parameters = {} ) {
2587225851
2587325852 }
2587425853
25875- if ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) {
25876-
25877- morphtargets.update( object, geometry, material, program );
25878-
25879- }
25880-
2588125854 bindingStates.setup( object, material, program, geometry, index );
2588225855
2588325856 let attribute;
@@ -26442,7 +26415,7 @@ function WebGLRenderer( parameters = {} ) {
2644226415
2644326416 if ( object.isImmediateRenderObject ) {
2644426417
26445- const program = setProgram( camera, scene, material, object );
26418+ const program = setProgram( camera, scene, geometry, material, object );
2644626419
2644726420 state.setMaterial( material );
2644826421
@@ -26607,7 +26580,7 @@ function WebGLRenderer( parameters = {} ) {
2660726580
2660826581 }
2660926582
26610- function setProgram( camera, scene, material, object ) {
26583+ function setProgram( camera, scene, geometry, material, object ) {
2661126584
2661226585 if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...
2661326586
@@ -26617,11 +26590,11 @@ function WebGLRenderer( parameters = {} ) {
2661726590 const environment = material.isMeshStandardMaterial ? scene.environment : null;
2661826591 const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
2661926592 const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
26620- const vertexAlphas = material.vertexColors === true && !! object. geometry && !! object. geometry.attributes.color && object. geometry.attributes.color.itemSize === 4;
26621- const vertexTangents = !! material.normalMap && !! object. geometry && !! object. geometry.attributes.tangent;
26622- const morphTargets = !! object. geometry && !! object. geometry.morphAttributes.position;
26623- const morphNormals = !! object. geometry && !! object. geometry.morphAttributes.normal;
26624- const morphTargetsCount = ( !! object. geometry && !! object. geometry.morphAttributes.position ) ? object. geometry.morphAttributes.position.length : 0;
26593+ const vertexAlphas = material.vertexColors === true && !! geometry && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
26594+ const vertexTangents = !! material.normalMap && !! geometry && !! geometry.attributes.tangent;
26595+ const morphTargets = !! geometry && !! geometry.morphAttributes.position;
26596+ const morphNormals = !! geometry && !! geometry.morphAttributes.normal;
26597+ const morphTargetsCount = ( !! geometry && !! geometry.morphAttributes.position ) ? geometry.morphAttributes.position.length : 0;
2662526598
2662626599 const materialProperties = properties.get( material );
2662726600 const lights = currentRenderState.state.lights;
@@ -26819,9 +26792,9 @@ function WebGLRenderer( parameters = {} ) {
2681926792
2682026793 }
2682126794
26822- // skinning uniforms must be set even if material didn't change
26823- // auto-setting of texture unit for bone texture must go before other textures
26824- // otherwise textures used for skinning can take over texture units reserved for other material textures
26795+ // skinning and morph target uniforms must be set even if material didn't change
26796+ // auto-setting of texture unit for bone and morph texture must go before other textures
26797+ // otherwise textures used for skinning and morphing can take over texture units reserved for other material textures
2682526798
2682626799 if ( object.isSkinnedMesh ) {
2682726800
@@ -26849,6 +26822,13 @@ function WebGLRenderer( parameters = {} ) {
2684926822
2685026823 }
2685126824
26825+ if ( !! geometry && ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) ) {
26826+
26827+ morphtargets.update( object, geometry, material, program );
26828+
26829+ }
26830+
26831+
2685226832 if ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {
2685326833
2685426834 materialProperties.receiveShadow = object.receiveShadow;
0 commit comments