@@ -164,6 +164,8 @@ const LIGHT_HELPER_SELECTOR = ".dn-light-helper";
164164const RESPONSIVE_ZOOM_BREAKPOINT = 900 ;
165165const RESPONSIVE_ZOOM_BOTTOM_RESERVE = 72 ;
166166const RESPONSIVE_ZOOM_MIN_SCALE = 0.42 ;
167+ const RESPONSIVE_SHADOW_EXTEND_BASE = 1600 ;
168+ const RESPONSIVE_SHADOW_EXTEND_MIN = 600 ;
167169
168170function clamp ( value : number , min : number , max : number ) : number {
169171 if ( ! Number . isFinite ( value ) ) return min ;
@@ -184,6 +186,15 @@ function responsiveZoomScaleForViewport(width: number, height: number): number {
184186 return clamp ( Math . min ( widthScale , heightScale ) , RESPONSIVE_ZOOM_MIN_SCALE , 1 ) ;
185187}
186188
189+ function responsiveShadowMaxExtend ( value : number , viewportScale : number ) : number {
190+ if ( viewportScale >= 0.995 ) return value ;
191+ const cap = Math . max (
192+ RESPONSIVE_SHADOW_EXTEND_MIN ,
193+ Math . round ( RESPONSIVE_SHADOW_EXTEND_BASE * viewportScale ) ,
194+ ) ;
195+ return Math . min ( value , cap ) ;
196+ }
197+
187198function initialResponsiveZoomScale ( ) : number {
188199 if ( typeof window === "undefined" ) return 1 ;
189200 return responsiveZoomScaleForViewport ( window . innerWidth , window . innerHeight ) ;
@@ -806,10 +817,12 @@ export default function GalleryWorkbench() {
806817 const { handleCameraChange } = useGuiCameraSync ( { setSceneOptions } ) ;
807818 const responsiveZoomScale = useResponsiveViewportZoomScale ( viewportRef ) ;
808819 const renderSceneOptions = useMemo < SceneOptionsState > ( ( ) => {
809- if ( responsiveZoomScale === 1 ) return sceneOptions ;
820+ const shadowMaxExtend = responsiveShadowMaxExtend ( sceneOptions . shadowMaxExtend , responsiveZoomScale ) ;
821+ if ( responsiveZoomScale === 1 && shadowMaxExtend === sceneOptions . shadowMaxExtend ) return sceneOptions ;
810822 return {
811823 ...sceneOptions ,
812824 zoom : sceneOptions . zoom * responsiveZoomScale ,
825+ shadowMaxExtend,
813826 } ;
814827 } , [ sceneOptions , responsiveZoomScale ] ) ;
815828 const handleRenderCameraChange = useCallback (
0 commit comments