diff --git a/3d-viewer/3d_canvas/board_adapter.cpp b/3d-viewer/3d_canvas/board_adapter.cpp index f95def55c3..9446db6016 100644 --- a/3d-viewer/3d_canvas/board_adapter.cpp +++ b/3d-viewer/3d_canvas/board_adapter.cpp @@ -727,6 +727,7 @@ void BOARD_ADAPTER::SetVisibleLayers( const std::bitset& aLayers ) m_Cfg->m_Render.show_fp_text = aLayers.test( LAYER_FP_TEXT ); m_Cfg->m_Render.opengl_show_model_bbox = aLayers.test( LAYER_3D_BOUNDING_BOXES ); + m_Cfg->m_Render.opengl_show_off_board_silk = aLayers.test( LAYER_3D_OFF_BOARD_SILK ); m_Cfg->m_Render.show_axis = aLayers.test( LAYER_3D_AXES ); } @@ -760,6 +761,7 @@ std::bitset BOARD_ADAPTER::GetVisibleLayers() const ret.set( LAYER_3D_MODELS_MARKED_DNP, m_Cfg->m_Render.show_footprints_dnp ); ret.set( LAYER_3D_BOUNDING_BOXES, m_Cfg->m_Render.opengl_show_model_bbox ); + ret.set( LAYER_3D_OFF_BOARD_SILK, m_Cfg->m_Render.opengl_show_off_board_silk ); ret.set( LAYER_3D_AXES, m_Cfg->m_Render.show_axis ); if( m_Cfg->m_CurrentPreset == FOLLOW_PCB ) diff --git a/3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp b/3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp index 0f1381d5e4..b369d062c4 100644 --- a/3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp +++ b/3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp @@ -702,8 +702,15 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter, OPENGL_RENDER_LIST* anti_board = nullptr; - if( LSET::PhysicalLayersMask().test( layer_id ) ) + if( ( layer_id == F_SilkS || layer_id == B_SilkS ) + && m_boardAdapter.m_Cfg->m_Render.opengl_show_off_board_silk ) + { + anti_board = nullptr; + } + else if( LSET::PhysicalLayersMask().test( layer_id ) ) + { anti_board = m_antiBoard; + } if( anti_board ) { @@ -723,6 +730,7 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter, } } else if( m_boardAdapter.m_Cfg->m_Render.subtract_mask_from_silk + && !m_boardAdapter.m_Cfg->m_Render.opengl_show_off_board_silk && ( ( layer_id == B_SilkS && m_layers.find( B_Mask ) != m_layers.end() ) || ( layer_id == F_SilkS && m_layers.find( F_Mask ) != m_layers.end() ) ) ) { diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp b/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp index 742d2e7bf9..89a83fea71 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp @@ -220,6 +220,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() : &m_Render.opengl_copper_thickness, false ) ); m_params.emplace_back( new PARAM( "render.opengl_show_model_bbox", &m_Render.opengl_show_model_bbox, false ) ); + m_params.emplace_back( new PARAM( "render.opengl_show_off_board_silk", + &m_Render.opengl_show_off_board_silk, false ) ); m_params.emplace_back( new PARAM( "render.opengl_highlight_on_rollover", &m_Render.opengl_highlight_on_rollover, true ) ); m_params.emplace_back( new PARAM( "render.opengl_AA_disableOnMove", diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_settings.h b/3d-viewer/3d_viewer/eda_3d_viewer_settings.h index 38abb0bb2a..3e0af7859d 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_settings.h +++ b/3d-viewer/3d_viewer/eda_3d_viewer_settings.h @@ -90,6 +90,7 @@ public: bool opengl_render_bbox_only_OnMove; bool opengl_copper_thickness; bool opengl_show_model_bbox; + bool opengl_show_off_board_silk; bool opengl_highlight_on_rollover; KIGFX::COLOR4D opengl_selection_color; diff --git a/3d-viewer/dialogs/appearance_controls_3D.cpp b/3d-viewer/dialogs/appearance_controls_3D.cpp index a9dac8f0f8..1d463f945a 100644 --- a/3d-viewer/dialogs/appearance_controls_3D.cpp +++ b/3d-viewer/dialogs/appearance_controls_3D.cpp @@ -71,6 +71,7 @@ const APPEARANCE_CONTROLS_3D::APPEARANCE_SETTING_3D APPEARANCE_CONTROLS_3D::s_la RR( _HKI( "Values" ), LAYER_FP_VALUES, _HKI( "Show footprint values" ) ), RR( _HKI( "References" ), LAYER_FP_REFERENCES, _HKI( "Show footprint references" ) ), RR( _HKI( "Footprint Text" ), LAYER_FP_TEXT, _HKI( "Show all footprint text" ) ), + RR( _HKI( "Off-board Silkscreen" ), LAYER_3D_OFF_BOARD_SILK, _HKI( "Do not clip silk layers to board outline" ) ), RR(), RR( _HKI( "3D Axis" ), LAYER_3D_AXES, EDA_3D_ACTIONS::showAxis ), RR( _HKI( "Background Start" ), LAYER_3D_BACKGROUND_TOP, _HKI( "Background gradient start color" ) ), diff --git a/include/layer_ids.h b/include/layer_ids.h index ef6f6f8b9a..c3921cf0ea 100644 --- a/include/layer_ids.h +++ b/include/layer_ids.h @@ -462,6 +462,7 @@ enum LAYER_3D_ID : int LAYER_3D_MODELS_MARKED_DNP, LAYER_3D_AXES, LAYER_3D_BOUNDING_BOXES, + LAYER_3D_OFF_BOARD_SILK, LAYER_3D_END };