|
5 | 5 | use glam::{Mat4, Quat, Vec3}; |
6 | 6 |
|
7 | 7 | use crate::camera::{view_matrix_for_world_mesh_render_space, view_matrix_from_render_transform}; |
| 8 | +use crate::color_space::DEFAULT_SKYBOX_CLEAR_COLOR; |
8 | 9 | use crate::scene::CameraRenderableEntry; |
9 | 10 | use crate::scene::blit_to_display::BlitToDisplayEntry; |
10 | 11 | use crate::scene::overrides::RenderTransformOverrideEntry; |
@@ -227,6 +228,41 @@ fn active_blit_for_display_ignores_overlay_dash_camera() { |
227 | 228 | assert!(scene.active_blit_for_display(1).is_none()); |
228 | 229 | } |
229 | 230 |
|
| 231 | +#[test] |
| 232 | +fn desktop_blit_for_display_uses_skybox_clear_for_synthesized_dash_blit() { |
| 233 | + let mut scene = SceneCoordinator::new(); |
| 234 | + let overlay = RenderSpaceId(3); |
| 235 | + scene.spaces.insert( |
| 236 | + overlay, |
| 237 | + RenderSpaceState { |
| 238 | + id: overlay, |
| 239 | + is_active: true, |
| 240 | + is_overlay: true, |
| 241 | + cameras: vec![CameraRenderableEntry { |
| 242 | + renderable_index: 0, |
| 243 | + transform_id: 0, |
| 244 | + state: CameraState { |
| 245 | + projection: CameraProjection::Orthographic, |
| 246 | + render_texture_asset_id: 77, |
| 247 | + selective_render_count: 1, |
| 248 | + flags: 1, |
| 249 | + ..Default::default() |
| 250 | + }, |
| 251 | + selective_transform_ids: vec![5], |
| 252 | + exclude_transform_ids: Vec::new(), |
| 253 | + }], |
| 254 | + ..Default::default() |
| 255 | + }, |
| 256 | + ); |
| 257 | + |
| 258 | + let state = scene |
| 259 | + .desktop_blit_for_display(0) |
| 260 | + .expect("primary desktop display should synthesize dashboard blit"); |
| 261 | + |
| 262 | + assert_eq!(state.background_color, DEFAULT_SKYBOX_CLEAR_COLOR); |
| 263 | + assert!(scene.desktop_blit_for_display(1).is_none()); |
| 264 | +} |
| 265 | + |
230 | 266 | #[test] |
231 | 267 | fn world_matrix_excludes_render_space_root() { |
232 | 268 | let mut scene = SceneCoordinator::new(); |
|
0 commit comments