Part of #18635. Depends on Phase 1.
Phase 2 — WebGPU projection layer + render target provider
Implement the core WebGPU rendering path: render the stereo scene into the projection layer's per-view GPUTextures.
Scope
- Add a
WebXRGPUProjectionLayer render-target provider: on each getViewSubImage(layer, view), wrap subImage.colorTexture (and depthStencilTexture when present) via AbstractEngine.wrapWebGPUTexture into an InternalTexture → RenderTargetTexture, applying getViewDescriptor() and viewport.
- Verify the WebGPU engine renders into the externally-provided color+depth
GPUTexture per eye (bindFramebuffer/RTT path), rather than the canvas swapchain (getCurrentTexture() must not be used in XR).
- Handle MSAA resolve and per-view texture-view descriptors; wire viewport per eye.
Acceptance
- Correct stereo rendering on Quest Browser with WebGPU (manual verification).
- No regression to non-XR WebGPU rendering.
Part of #18635. Depends on Phase 1.
Phase 2 — WebGPU projection layer + render target provider
Implement the core WebGPU rendering path: render the stereo scene into the projection layer's per-view
GPUTextures.Scope
WebXRGPUProjectionLayerrender-target provider: on eachgetViewSubImage(layer, view), wrapsubImage.colorTexture(anddepthStencilTexturewhen present) viaAbstractEngine.wrapWebGPUTextureinto anInternalTexture→RenderTargetTexture, applyinggetViewDescriptor()andviewport.GPUTextureper eye (bindFramebuffer/RTT path), rather than the canvas swapchain (getCurrentTexture()must not be used in XR).Acceptance