* Execute the draw commands to render into a 2D viewport. * * @param {Scene} scene * @param {PassState} passState * * @private
(scene, passState)
| 3320 | * @private |
| 3321 | */ |
| 3322 | function execute2DViewportCommands(scene, passState) { |
| 3323 | const { frameState, camera } = scene; |
| 3324 | const { uniformState } = scene.context; |
| 3325 | |
| 3326 | const originalViewport = passState.viewport; |
| 3327 | const viewport = BoundingRectangle.clone(originalViewport, scratch2DViewport); |
| 3328 | passState.viewport = viewport; |
| 3329 | |
| 3330 | const maxCartographic = scratch2DViewportCartographic; |
| 3331 | const maxCoord = scratch2DViewportMaxCoord; |
| 3332 | |
| 3333 | const projection = scene.mapProjection; |
| 3334 | projection.project(maxCartographic, maxCoord); |
| 3335 | |
| 3336 | const position = Cartesian3.clone( |
| 3337 | camera.position, |
| 3338 | scratch2DViewportSavedPosition, |
| 3339 | ); |
| 3340 | const transform = Matrix4.clone( |
| 3341 | camera.transform, |
| 3342 | scratch2DViewportCameraTransform, |
| 3343 | ); |
| 3344 | const frustum = camera.frustum.clone(); |
| 3345 | |
| 3346 | camera._setTransform(Matrix4.IDENTITY); |
| 3347 | |
| 3348 | const viewportTransformation = Matrix4.computeViewportTransformation( |
| 3349 | viewport, |
| 3350 | 0.0, |
| 3351 | 1.0, |
| 3352 | scratch2DViewportTransform, |
| 3353 | ); |
| 3354 | const projectionMatrix = camera.frustum.projectionMatrix; |
| 3355 | |
| 3356 | const x = camera.positionWC.y; |
| 3357 | const eyePoint = Cartesian3.fromElements( |
| 3358 | CesiumMath.sign(x) * maxCoord.x - x, |
| 3359 | 0.0, |
| 3360 | -camera.positionWC.x, |
| 3361 | scratch2DViewportEyePoint, |
| 3362 | ); |
| 3363 | const windowCoordinates = Transforms.pointToGLWindowCoordinates( |
| 3364 | projectionMatrix, |
| 3365 | viewportTransformation, |
| 3366 | eyePoint, |
| 3367 | scratch2DViewportWindowCoords, |
| 3368 | ); |
| 3369 | |
| 3370 | windowCoordinates.x = Math.floor(windowCoordinates.x); |
| 3371 | |
| 3372 | const viewportX = viewport.x; |
| 3373 | const viewportWidth = viewport.width; |
| 3374 | |
| 3375 | if ( |
| 3376 | x === 0.0 || |
| 3377 | windowCoordinates.x <= viewportX || |
| 3378 | windowCoordinates.x >= viewportX + viewportWidth |
| 3379 | ) { |
no test coverage detected
searching dependent graphs…