Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better naming of things to help diagnose #3242 #3324

Merged
merged 1 commit into from
Sep 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/re_renderer/src/transform.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ pub fn ndc_from_pixel(pixel_coord: glam::Vec2, screen_extent: glam::UVec2) -> gl

/// Defines a transformation from a rectangular region of interest into a rectangular target region.
///
/// Transforms map the range of `region_of_interest` to the range of `region`.
/// Transforms the range of `region_of_interest` to the range of `region`.
#[derive(Clone, Debug)]
pub struct RectTransform {
pub region_of_interest: RectF32,
Expand Down
1 change: 1 addition & 0 deletions crates/re_renderer/src/view_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ impl Default for AutoSizeConfig {
pub struct TargetConfiguration {
pub name: DebugLabel,

/// The viewport resolution in physical pixels.
pub resolution_in_pixel: [u32; 2],
pub view_from_world: macaw::IsoTransform,
pub projection_from_view: Projection,
Expand Down
14 changes: 7 additions & 7 deletions crates/re_space_view_spatial/src/ui_2d.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,16 +389,16 @@ pub fn view_2d(
}

fn setup_target_config(
painter: &egui::Painter,
egui_painter: &egui::Painter,
canvas_from_ui: RectTransform,
space_name: &str,
auto_size_config: re_renderer::AutoSizeConfig,
any_outlines: bool,
pinhole: Option<Pinhole>,
) -> anyhow::Result<TargetConfiguration> {
let pixels_from_points = painter.ctx().pixels_per_point();
let pixels_from_points = egui_painter.ctx().pixels_per_point();
let resolution_in_pixel =
gpu_bridge::viewport_resolution_in_pixels(painter.clip_rect(), pixels_from_points);
gpu_bridge::viewport_resolution_in_pixels(egui_painter.clip_rect(), pixels_from_points);
anyhow::ensure!(resolution_in_pixel[0] > 0 && resolution_in_pixel[1] > 0);

// TODO(#1988):
Expand Down Expand Up @@ -457,8 +457,8 @@ fn setup_target_config(

// Cut to the portion of the currently visible ui area.
let mut viewport_transformation = re_renderer::RectTransform {
region_of_interest: egui_rect_to_re_renderer(painter.clip_rect()),
region: egui_rect_to_re_renderer(*canvas_from_ui.from()),
region_of_interest: re_render_rect_from_egui_rect(egui_painter.clip_rect()),
region: re_render_rect_from_egui_rect(*canvas_from_ui.from()),
};

// The principal point might not be quite centered.
Expand All @@ -478,12 +478,12 @@ fn setup_target_config(
viewport_transformation,
pixels_from_point: pixels_from_points,
auto_size_config,
outline_config: any_outlines.then(|| outline_config(painter.ctx())),
outline_config: any_outlines.then(|| outline_config(egui_painter.ctx())),
}
})
}

fn egui_rect_to_re_renderer(rect: egui::Rect) -> re_renderer::RectF32 {
fn re_render_rect_from_egui_rect(rect: egui::Rect) -> re_renderer::RectF32 {
re_renderer::RectF32 {
min: glam::vec2(rect.left(), rect.top()),
extent: glam::vec2(rect.width(), rect.height()),
Expand Down
20 changes: 11 additions & 9 deletions crates/re_viewer_context/src/gpu_bridge/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ pub fn get_or_create_texture<'a>(
/// Render the given image, respecting the clip rectangle of the given painter.
pub fn render_image(
render_ctx: &mut re_renderer::RenderContext,
painter: &egui::Painter,
egui_painter: &egui::Painter,
image_rect_on_screen: egui::Rect,
colormapped_texture: ColormappedTexture,
texture_options: egui::TextureOptions,
Expand All @@ -127,12 +127,13 @@ pub fn render_image(

use re_renderer::renderer::{TextureFilterMag, TextureFilterMin};

let clip_rect = painter.clip_rect().intersect(image_rect_on_screen);
if !clip_rect.is_positive() {
let viewport = egui_painter.clip_rect().intersect(image_rect_on_screen);
if !viewport.is_positive() {
return Ok(());
}

// Where in "world space" to paint the image.
// This is an arbitrary selection.
let space_rect = egui::Rect::from_min_size(egui::Pos2::ZERO, image_rect_on_screen.size());

let textured_rectangle = re_renderer::renderer::TexturedRect {
Expand All @@ -156,19 +157,20 @@ pub fn render_image(

// ------------------------------------------------------------------------

let pixels_from_points = painter.ctx().pixels_per_point();
let pixels_from_points = egui_painter.ctx().pixels_per_point();
let ui_from_space = egui::emath::RectTransform::from_to(space_rect, image_rect_on_screen);
let space_from_ui = ui_from_space.inverse();
let space_from_points = space_from_ui.scale().y;
let points_from_pixels = 1.0 / painter.ctx().pixels_per_point();
let points_from_pixels = 1.0 / egui_painter.ctx().pixels_per_point();
let space_from_pixel = space_from_points * points_from_pixels;

let resolution_in_pixel = viewport_resolution_in_pixels(clip_rect, pixels_from_points);
let resolution_in_pixel = viewport_resolution_in_pixels(viewport, pixels_from_points);
anyhow::ensure!(resolution_in_pixel[0] > 0 && resolution_in_pixel[1] > 0);

let camera_position_space = space_from_ui.transform_pos(clip_rect.min);
let camera_position_space = space_from_ui.transform_pos(viewport.min);

let top_left_position = glam::vec2(camera_position_space.x, camera_position_space.y);

let target_config = re_renderer::view_builder::TargetConfiguration {
name: debug_name.into(),
resolution_in_pixel,
Expand All @@ -191,10 +193,10 @@ pub fn render_image(
&[textured_rectangle],
)?);

painter.add(new_renderer_callback(
egui_painter.add(new_renderer_callback(
render_ctx,
view_builder,
clip_rect,
viewport,
re_renderer::Rgba::TRANSPARENT,
));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ type ViewBuilderMap = slotmap::SlotMap<ViewBuilderHandle, Option<re_renderer::Vi
pub fn new_renderer_callback(
render_ctx: &mut re_renderer::RenderContext,
view_builder: re_renderer::ViewBuilder,
clip_rect: egui::Rect,
viewport: egui::Rect,
clear_color: re_renderer::Rgba,
) -> egui::PaintCallback {
let composition_view_builder_map = render_ctx
Expand All @@ -16,7 +16,7 @@ pub fn new_renderer_callback(
let view_builder_handle = composition_view_builder_map.insert(Some(view_builder));

egui_wgpu::Callback::new_paint_callback(
clip_rect,
viewport,
ReRendererCallback {
view_builder: view_builder_handle,
clear_color,
Expand Down
Loading