bevyengine/bevy · error · ViewportConversionError

pre-computed size of viewport not available

Error message

pre-computed size of viewport not available

What it means

ViewportConversionError::NoViewportSize: the camera's cached viewport size (computed by camera_system) was not available when a world-to-viewport or viewport-to-world conversion was attempted. Happens for a freshly spawned camera before camera_system has run, or when the RenderTarget is misconfigured (missing window, invalid image/texture-view handle).

Source

Thrown at crates/bevy_camera/src/camera.rs:340

            sensor_height: 0.01866,
        }
    }
}

/// Error returned when a conversion between world-space and viewport-space coordinates fails.
///
/// See [`world_to_viewport`][Camera::world_to_viewport] and [`viewport_to_world`][Camera::viewport_to_world].
#[derive(Debug, Eq, PartialEq, Copy, Clone, Error)]
pub enum ViewportConversionError {
    /// The pre-computed size of the viewport was not available.
    ///
    /// This may be because the `Camera` was just created and `camera_system` has not been executed
    /// yet, or because the [`RenderTarget`] is misconfigured in one of the following ways:
    ///   - it references the [`PrimaryWindow`](RenderTarget::Window) when there is none,
    ///   - it references a [`Window`](RenderTarget::Window) entity that doesn't exist or doesn't actually have a `Window` component,
    ///   - it references an [`Image`](RenderTarget::Image) that doesn't exist (invalid handle),
    ///   - it references a [`TextureView`](RenderTarget::TextureView) that doesn't exist (invalid handle).
    #[error("pre-computed size of viewport not available")]
    NoViewportSize,
    /// The computed coordinate was beyond the `Camera`'s near plane.
    ///
    /// Only applicable when converting from world-space to viewport-space.
    #[error("computed coordinate beyond `Camera`'s near plane")]
    PastNearPlane,
    /// The computed coordinate was beyond the `Camera`'s far plane.
    ///
    /// Only applicable when converting from world-space to viewport-space.
    #[error("computed coordinate beyond `Camera`'s far plane")]
    PastFarPlane,
    /// The Normalized Device Coordinates could not be computed because the `camera_transform`, the
    /// `world_position`, or the projection matrix defined by [`Projection`](super::projection::Projection)
    /// contained `NAN` (see [`world_to_ndc`][Camera::world_to_ndc] and [`ndc_to_world`][Camera::ndc_to_world]).
    #[error("found NaN while computing NDC")]
    InvalidData,
}

View on GitHub (pinned to 396ca72708)

Solutions

  1. Run the conversion after camera_system has executed (e.g. in a system ordered after it)
  2. Ensure the camera's RenderTarget references an existing window, image, or texture view
  3. Check that the camera has a CameraOutput component / is active
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/bevy_camera/src/camera.rs:340 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20). Data as JSON: /api/errors/8c8318e3e1e2f429. Report an issue: GitHub.