From d19e6243d0294bf83a9f6debc6f55e14becf43b6 Mon Sep 17 00:00:00 2001 From: Jiali Duan Date: Wed, 31 Aug 2022 16:50:41 -0700 Subject: [PATCH] Update Rasterizer and add end2end fisheye integration test Summary: 1) Update rasterizer/point rasterizer to accommodate fisheyecamera. Specifically, transform_points is in placement of explicit transform compositions. 2) In rasterizer unittests, update corresponding tests for rasterizer and point_rasterizer. Address comments to test fisheye against perspective camera when distortions are turned off. 3) Address comments to add end2end test for fisheyecameras. In test_render_meshes, fisheyecameras are added to camera enuerations whenever possible. 4) Test renderings with fisheyecameras of different params on cow mesh. 5) Use compositions for linear cameras whenever possible. Reviewed By: kjchalup Differential Revision: D38932736 fbshipit-source-id: 5b7074fc001f2390f4cf43c7267a8b37fd987547 --- pytorch3d/renderer/cameras.py | 24 +- pytorch3d/renderer/mesh/rasterizer.py | 18 +- pytorch3d/renderer/points/rasterizer.py | 15 +- tests/data/test_FishEyeCameras_silhouette.png | Bin 0 -> 5609 bytes ...ial_False_tangential_False_prism_False.png | Bin 0 -> 15497 bytes ...dial_False_tangential_False_prism_True.png | Bin 0 -> 16461 bytes ...dial_False_tangential_True_prism_False.png | Bin 0 -> 18710 bytes ...adial_False_tangential_True_prism_True.png | Bin 0 -> 19562 bytes ...dial_True_tangential_False_prism_False.png | Bin 0 -> 13529 bytes ...adial_True_tangential_False_prism_True.png | Bin 0 -> 14470 bytes ...adial_True_tangential_True_prism_False.png | Bin 0 -> 16676 bytes ...radial_True_tangential_True_prism_True.png | Bin 0 -> 17331 bytes ...sheye_rasterized_sphere_MeshRasterizer.png | Bin 0 -> 2331 bytes ...ctive_rasterized_sphere_MeshRasterizer.png | Bin 0 -> 2331 bytes .../test_rasterized_fisheye_sphere_points.png | Bin 0 -> 1327 bytes ...t_rasterized_perspective_sphere_points.png | Bin 0 -> 1327 bytes .../test_render_fisheye_sphere_points.png | Bin 0 -> 1680 bytes ...test_simple_sphere_dark_FishEyeCameras.png | Bin 0 -> 1913 bytes ...le_sphere_dark_elevated_FishEyeCameras.png | Bin 0 -> 1867 bytes ...here_dark_elevated_none_FishEyeCameras.png | Bin 0 -> 2575 bytes ...simple_sphere_dark_none_FishEyeCameras.png | Bin 0 -> 2019 bytes ...imple_sphere_dark_prism_FishEyeCameras.png | Bin 0 -> 1975 bytes ...mple_sphere_dark_radial_FishEyeCameras.png | Bin 0 -> 1820 bytes ...radial_tangential_prism_FishEyeCameras.png | Bin 0 -> 1913 bytes ..._sphere_dark_tangential_FishEyeCameras.png | Bin 0 -> 2169 bytes ...e_dark_tangential_prism_FishEyeCameras.png | Bin 0 -> 2143 bytes ...imple_sphere_light_flat_FishEyeCameras.png | Bin 0 -> 10823 bytes ...ere_light_flat_elevated_FishEyeCameras.png | Bin 0 -> 8764 bytes ...ight_flat_elevated_none_FishEyeCameras.png | Bin 0 -> 8702 bytes ..._sphere_light_flat_none_FishEyeCameras.png | Bin 0 -> 13733 bytes ...le_sphere_light_gouraud_FishEyeCameras.png | Bin 0 -> 8128 bytes ..._light_gouraud_elevated_FishEyeCameras.png | Bin 0 -> 6141 bytes ...t_gouraud_elevated_none_FishEyeCameras.png | Bin 0 -> 5953 bytes ...here_light_gouraud_none_FishEyeCameras.png | Bin 0 -> 9322 bytes ..._sphere_light_hard_flat_FishEyeCameras.png | Bin 0 -> 10823 bytes ...ight_hard_flat_elevated_FishEyeCameras.png | Bin 0 -> 8764 bytes ...e_light_hard_flat_prism_FishEyeCameras.png | Bin 0 -> 13040 bytes ..._light_hard_flat_radial_FishEyeCameras.png | Bin 0 -> 10340 bytes ...radial_tangential_prism_FishEyeCameras.png | Bin 0 -> 10823 bytes ...ht_hard_flat_tangential_FishEyeCameras.png | Bin 0 -> 14251 bytes ...d_flat_tangential_prism_FishEyeCameras.png | Bin 0 -> 14199 bytes ...here_light_hard_gouraud_FishEyeCameras.png | Bin 0 -> 8128 bytes ...t_hard_gouraud_elevated_FishEyeCameras.png | Bin 0 -> 6141 bytes ...ight_hard_gouraud_prism_FishEyeCameras.png | Bin 0 -> 9015 bytes ...ght_hard_gouraud_radial_FishEyeCameras.png | Bin 0 -> 7331 bytes ...radial_tangential_prism_FishEyeCameras.png | Bin 0 -> 8128 bytes ...hard_gouraud_tangential_FishEyeCameras.png | Bin 0 -> 9887 bytes ...ouraud_tangential_prism_FishEyeCameras.png | Bin 0 -> 10534 bytes ...sphere_light_hard_phong_FishEyeCameras.png | Bin 0 -> 8151 bytes ...ght_hard_phong_elevated_FishEyeCameras.png | Bin 0 -> 6073 bytes ...radial_tangential_prism_FishEyeCameras.png | Bin 0 -> 6073 bytes ...e_light_hard_phong_none_FishEyeCameras.png | Bin 0 -> 8151 bytes ..._light_hard_phong_prism_FishEyeCameras.png | Bin 0 -> 8933 bytes ...light_hard_phong_radial_FishEyeCameras.png | Bin 0 -> 7386 bytes ...radial_tangential_prism_FishEyeCameras.png | Bin 0 -> 8151 bytes ...t_hard_phong_tangential_FishEyeCameras.png | Bin 0 -> 9876 bytes ..._phong_tangential_prism_FishEyeCameras.png | Bin 0 -> 10538 bytes ...mple_sphere_light_phong_FishEyeCameras.png | Bin 0 -> 8151 bytes ...re_light_phong_elevated_FishEyeCameras.png | Bin 0 -> 6073 bytes ...sphere_light_phong_none_FishEyeCameras.png | Bin 0 -> 9015 bytes tests/test_rasterizer.py | 159 ++++++++ tests/test_render_meshes.py | 382 +++++++++++++++--- tests/test_render_points.py | 44 ++ 63 files changed, 566 insertions(+), 76 deletions(-) create mode 100644 tests/data/test_FishEyeCameras_silhouette.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_False_prism_False.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_False_prism_True.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_True_prism_False.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_True_prism_True.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_False_prism_False.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_False_prism_True.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_False.png create mode 100644 tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_True.png create mode 100644 tests/data/test_fisheye_rasterized_sphere_MeshRasterizer.png create mode 100644 tests/data/test_perspective_rasterized_sphere_MeshRasterizer.png create mode 100644 tests/data/test_rasterized_fisheye_sphere_points.png create mode 100644 tests/data/test_rasterized_perspective_sphere_points.png create mode 100644 tests/data/test_render_fisheye_sphere_points.png create mode 100644 tests/data/test_simple_sphere_dark_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_elevated_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_radial_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_radial_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_tangential_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_dark_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_flat_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_flat_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_flat_elevated_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_flat_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_gouraud_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_gouraud_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_gouraud_elevated_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_gouraud_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_radial_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_radial_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_tangential_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_flat_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_radial_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_radial_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_tangential_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_gouraud_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_elevated_radial_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_none_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_radial_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_radial_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_tangential_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_hard_phong_tangential_prism_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_phong_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_phong_elevated_FishEyeCameras.png create mode 100644 tests/data/test_simple_sphere_light_phong_none_FishEyeCameras.png diff --git a/pytorch3d/renderer/cameras.py b/pytorch3d/renderer/cameras.py index 4a4405eaa..1dd3fde1d 100644 --- a/pytorch3d/renderer/cameras.py +++ b/pytorch3d/renderer/cameras.py @@ -6,7 +6,7 @@ import math import warnings -from typing import List, Optional, Sequence, Tuple, Union +from typing import Callable, List, Optional, Sequence, Tuple, Union import numpy as np import torch @@ -91,7 +91,7 @@ class CamerasBase(TensorProperties): # When joining objects into a batch, they will have to agree. _SHARED_FIELDS: Tuple[str, ...] = () - def get_projection_transform(self): + def get_projection_transform(self, **kwargs): """ Calculate the projective transformation matrix. @@ -1841,3 +1841,23 @@ def get_screen_to_ndc_transform( image_size=image_size, ).inverse() return transform + + +def try_get_projection_transform(cameras, kwargs) -> Optional[Callable]: + """ + Try block to get projection transform. + + Args: + cameras instance, can be linear cameras or nonliear cameras + + Returns: + If the camera implemented projection_transform, return the + projection transform; Otherwise, return None + """ + + transform = None + try: + transform = cameras.get_projection_transform(**kwargs) + except NotImplementedError: + pass + return transform diff --git a/pytorch3d/renderer/mesh/rasterizer.py b/pytorch3d/renderer/mesh/rasterizer.py index 3e61eaff4..8d6291eab 100644 --- a/pytorch3d/renderer/mesh/rasterizer.py +++ b/pytorch3d/renderer/mesh/rasterizer.py @@ -9,6 +9,7 @@ import torch import torch.nn as nn +from pytorch3d.renderer.cameras import try_get_projection_transform from .rasterize_meshes import rasterize_meshes @@ -197,12 +198,19 @@ def transform(self, meshes_world, **kwargs) -> torch.Tensor: verts_view = cameras.get_world_to_view_transform(**kwargs).transform_points( verts_world, eps=eps ) - # view to NDC transform + # Call transform_points instead of explicitly composing transforms to handle + # the case, where camera class does not have a projection matrix form. + verts_proj = cameras.transform_points(verts_world, eps=eps) to_ndc_transform = cameras.get_ndc_camera_transform(**kwargs) - projection_transform = cameras.get_projection_transform(**kwargs).compose( - to_ndc_transform - ) - verts_ndc = projection_transform.transform_points(verts_view, eps=eps) + projection_transform = try_get_projection_transform(cameras, kwargs) + if projection_transform is not None: + projection_transform = projection_transform.compose(to_ndc_transform) + verts_ndc = projection_transform.transform_points(verts_view, eps=eps) + else: + # Call transform_points instead of explicitly composing transforms to handle + # the case, where camera class does not have a projection matrix form. + verts_proj = cameras.transform_points(verts_world, eps=eps) + verts_ndc = to_ndc_transform.transform_points(verts_proj, eps=eps) verts_ndc[..., 2] = verts_view[..., 2] meshes_ndc = meshes_world.update_padded(new_verts_padded=verts_ndc) diff --git a/pytorch3d/renderer/points/rasterizer.py b/pytorch3d/renderer/points/rasterizer.py index cfa65da25..c533126d7 100644 --- a/pytorch3d/renderer/points/rasterizer.py +++ b/pytorch3d/renderer/points/rasterizer.py @@ -10,6 +10,7 @@ import torch import torch.nn as nn +from pytorch3d.renderer.cameras import try_get_projection_transform from pytorch3d.structures import Pointclouds from .rasterize_points import rasterize_points @@ -103,12 +104,16 @@ def transform(self, point_clouds, **kwargs) -> Pointclouds: pts_view = cameras.get_world_to_view_transform(**kwargs).transform_points( pts_world, eps=eps ) - # view to NDC transform to_ndc_transform = cameras.get_ndc_camera_transform(**kwargs) - projection_transform = cameras.get_projection_transform(**kwargs).compose( - to_ndc_transform - ) - pts_ndc = projection_transform.transform_points(pts_view, eps=eps) + projection_transform = try_get_projection_transform(cameras, kwargs) + if projection_transform is not None: + projection_transform = projection_transform.compose(to_ndc_transform) + pts_ndc = projection_transform.transform_points(pts_view, eps=eps) + else: + # Call transform_points instead of explicitly composing transforms to handle + # the case, where camera class does not have a projection matrix form. + pts_proj = cameras.transform_points(pts_world, eps=eps) + pts_ndc = to_ndc_transform.transform_points(pts_proj, eps=eps) pts_ndc[..., 2] = pts_view[..., 2] point_clouds = point_clouds.update_padded(pts_ndc) diff --git a/tests/data/test_FishEyeCameras_silhouette.png b/tests/data/test_FishEyeCameras_silhouette.png new file mode 100644 index 0000000000000000000000000000000000000000..a6fd9978e7ef126de49b3a249e187dedb5374846 GIT binary patch literal 5609 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 K7g?%m6ZBt-Br#F| literal 0 HcmV?d00001 diff --git a/tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_False_prism_False.png b/tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_False_prism_False.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb243739213c64c85e1d437c40268de42a6ce59 GIT binary patch literal 15497 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

4-c z-4OpkJ&Sde$tive;opJ3lxnNympCxI)9>of{Is5UxV|*y`y}Y~qGxIw2=raNgq1t@ zg@ZxN-{>M50fkCOclv#J#DL-IpU!;gi{FxLk>-ov(*NwNM zH^%F(zKUOg6<2#Zvo;$(WdP->|J*p=M`+5HM#AW-A(|gOnf{X;(EqL-=EWe9A~*0$+;*?r##8_1XD@baYUewAgC?+#v7oif7owsR#yzRZ*p=? zSe186%>Z{M0LK?an!!)5EgkPyz|T{f_!&ciHr1E#vmxWg&*J_YFN^k>32K_-m+qzs zsnf zb7i}JrAAe$$qMt$z~u<8Y!l|b&%g*3XLdQ!n*?)aYEi^>&$0ew)p)VYkN;r25i0YGPxwEBR__}Wf z9?R?dp-h5`$OCEsNlr5WbCmWog;l=NJCe5m%LV!13nZxDz-$!-6DC%x4( zoRVOFJ2hhYxP6GSJw|e}$;yN_+Se22@IyDz^ye9k40>v(N|A48GG);>7=@3c$qcE8-Nd&85PI|0)A z$6a!BJ!SGeW`h0Asq}n}@@+krOgEt1SNc!ig8;`5(wO5%OzXtwq}pUR^Pk4&zgK7R zTip(ae|{+n*=m~GP4_(pY0v`aMea-^i967fK&TNrt#qi^k3TFAq}J@SDgF}N->uhT z*qDTCQq|4WUUBmYICuk{mjiyQ(kc5>G#XtY4c|diyL8BTx&!$!{QeFb&2`-AMElTO z?IyZlk?Y5|2z$C(kjwk%GEwIy(s5s%ShGIhgR4wEMhuG1J<^px?Q9=S2|cTvq?Sm) zYMiRKif}mk$IH51Ppg^a>49fe&46b!7zN5lo!Xon#eFAwDn|Degg)Ja%KyF&oGxVr t%JTm^bo+k?j{onl_5VjtpZ}x?;zI{{d*ly!-$F literal 0 HcmV?d00001 diff --git a/tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_True_prism_False.png b/tests/data/test_cow_mesh_FishEyeCameras_radial_False_tangential_True_prism_False.png new file mode 100644 index 0000000000000000000000000000000000000000..120bc42b2d9a6192443db11690a93238f06ddbfb GIT binary patch literal 18710 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 #u6h!$gk8D}~Dc66luO>3UlAoAoPC7#q3>TwaH z>#9pMC$W)KN`|vrR+*+xQ||yrBk~=wvx`fHfkgu|N-qO$!EM1E--BL+_&l_AgPzdW zn%iZzKZ4RX(AW-)-g>FC9E?q@c?RuG6=;;mneT1(6Wj&Td77nTw5s6RQDE!Il2~_m zDEz42QtVe4$o(~*D>=o(OWskvZp1fNn4Gz~TISdAcTW*Ob@X=yGC;~p#m_#cY@+3m zX)LQ>mB01j#ggWKdbO(Zjf+@>^woR{`gxgA>xzQ?-W1TGeY5f{HO343zULP!#ABt>hmQn~Cq9)Q{QUWcEvIH{5IM=x22z%7o2_*SW$I(m9V{^#G-Q&=96`}USs z%F>9>#VgD;l$fao=^VV)j_P?BC znla*h$sH`kqgwLi@xlya*H%ZMCHkEp-<|-hJ-SGFKy_d{h_K#3(*vkVN?PC=0n}cw z1~}s)gfH0<)>29)9S0^AO0rE89Zz{EHzj{q(>0dLqG*s6P10Zh94z0z^WTd#C*!}* zN}%Z>^%QPdm;GQfG#Uh5kQqz#%nCFhr5!L)C0*bYpDh>WaIQ?<^i2+xEFI^dqYviM z8VZn`ilMN)FZe}+zl;`^>07*&k|R^buVbF&WS-$bS`nIg46gbx=Fnu*!?Vixf0PLQn9Fz_9Oi(YkeEhXh5%@RM4Ty7t|v)YTfBiO(ZQ)+r84@!!-Xv)} z(ou2)PjCR=|HH7Se$mG=b?Lyvo+9xX!S*v&34WVI!5kE<Z<(7O z_jGP{aBO>3O=oF;1*_pU7|41N&4HoGK61N9eDlW2N|>JPw!10-cbvCoF+Nl#K;L9w z;RXi(9bl{8?$gs&=T!GhSYmX1E#fqs3A&l@1t#zz_@B-XGsSEN?cY$<_g zgtk2b`5qd_V%rJ`k5h+MmP#&_IYm1M0!^{4481!@aL;a?NFS0MD3NytC~a;$ErBV0tJK7RJW4~ruo&k~k+;5~Aj0p;lJ!&mmXJkj6U^VC1MtLL)jp2FF8k1aO@CE&ea&niK96g^BEztp~{hQ52Ay_zB7$%%7<=KaE zeL%&KcK1Z(S#eb*QiCcMZ}=#Jj;K+dyr!Yt;_yVHDNOZ~#KJ;P6dasHY~1=$^}EvX zpT^|SZor`dBn=2H5FQH>6VDqQ2DM+&>&xH&lW$B*eQ$xC!q6bzcX{OZvkBS7VPC2(cCBI`)RGX zts<{K;}qVjz)~OC+^&Nk{&BL&n_HS=5_G7MGD$M?fTitHX}6%~Fgn|*jI@xlH5Ng4 zt5nKpJmJ)+tt>_No!>GEy9@~XVw7+1QzK&tbR4pz42-7x-^M-oqhLUkzoK=lz>L~ox| zWH&Q+n|dnnQBzy$*H}5-VRx=f@T7@mnzdJ2e{(O92(fI6jQ4SLbM?RAQ)z`$J_5V? z-{|>dmoN>}c!&~^TM`30(unnc?+)(+HW#@l5qi_YH+H@7jOQPyYQzYwS-jKz4)x`o z_olWVf7;4x`SXE@e^fJM525wj6+W}9Bkx~JDbp)h0>*>C13?2WM>aYGeLheol<;Xf zB3g=*)pAwR2PYYyXfl%T^m}u)8JW2a?d_LPb1`=t-?hM8_~?a|+B!mi10jBS6@!HM zyS*e&7+6>VC@&xIXLp<5+^7I@p-wb|+r$HMnKP9%s@BcX(jFH_&0l9~>R#9N)@8_`r#zPGpNGFc)lS-2vdY+b z-dhWz1XSm4UxQ6|Fn-O7d zJ7=s_kG|!K1|nNShfil~+B0=8N=JeHuj6N? zH>u^s2m{4$X~Z-EoLSbF>a^_!#1oAl7}Gcc=54_mj<5Bz2na#1`Ev-M$wA-iFpCe< zX$vH0Ej-Fr?RzvU>)k#-CGHcLAh>=8@thz!9eWo3=;py_>&1+Zjml_mRJe;Yf;eM@ zZX}~D*A{_8$$`6mh*0!d3_KTI3T8mh;y6l>y;##mRT@|gAI!f*O^_bHPw#H0BWE?` zfIZ#%_#kOoT?M4`pZ9cJnFkJ=LJ}{o?@8HF;dCxDds8OL#8Ggc)$k_^y*6 zo5J?=(3Uw1?f@_}(_M(nVB!1G7WxXY-Q5$d4#SyGK|(K=;~pvfv-iX3N&WNE*3T=E zG{X^C-urI=^wh1QvMOuvpdjq)ko#;&OB;Fp0CqEAgW4`ACCvE#fOS_V0oPLj&>A_Y zd`l~=Dp8a6;yknHO!ULXtIfR+)#JFirQDn77RXzW$pc`-2i<$EwprX7dHX{TM{5!K zpFiLU{Gy}MAu&>s?W%#<7PE>1(%OJK>=1NzDv15#Zb|7}P8Z)r2^z9~qwaxp2h~sm z+i&xj2*6#uc$NUF5dgmLZi?v@@pO~Bw!m~#1 zD4kiJVAG{S@j!4Yzya&V*CVh1mz!1Y*9zf$1vM$QQq3gR@3hq;m*KRNe55b({*aUJ zko_~FH!b9*cLOQM_hX}L7gBRn4XSqrc#3>enM2@+kehm2GiM<-y^3lX(jyzvp!z{b zJ^HrZfq_kt@AK0u&IOIZXZ&ZtK)<#Yqn?pm9i2=t*eaEkf?_X1)m8n=r*A#4DB8QL z6&VmJ1%m$4og*cGt+w3MT4a1`Wr3GQI4<}__rc%CPpZre( zl85h50~@S*UWWliktJOLVmA|exFgshwh>grF@e|T>_3~o@kHTiZaDyq*on+4y^}@k zty9LZ3FCe!#uBg%mT%-n56`n+l$ME^LN-;L%-17s zj}9>iPz?>x<&ps87a8|>38IFJ?B8csOT3GZ|1&X)$!UNWFroWoaOQsW_Y)5BN>Ii5 z!w{f9_{1^?5xG-6zkc+YkNB+*DpmdsaZ^iHvX6=(^XY$M0)~I?wk}Nb zXej$lPXJuCqlg6l(kk#0RQ}WgLvQKI!56oZ4D1907PoTJaVwS@Hq=yz{mG?)2vPDZ zfoDdtHNxRXipJqY!wDq_YSq8T&sA-2S1TI1^aX0UHSJ&Q|K(K}&kPYY#<+Ua1mw@E z#>Ll+?e(BDMKI&N79L_`gq93I03C1v1X$(>dVv=gc!DKR{dbA$I+&Q(#q`I5CCQ+u zk2W`ls9>+0Dy$?Rro+znzQoic`hw0}CM2gm=|9G=ar&mof5ok~{L5?Izv&Rqj*jF% zCgAmBQ(N>EP*Cn+yNj@Y_fV0mQdg1vo6Iudy!W8bDPHmj=jBT&XI?pit#pW@!X10O zU0XJLnGWlw3R)e8uOnTS8e8BN!|*nIzuHlGzJ%rWx6b#elkofDfWuC5&wgjX9@zF= z7Ffn)oyyk-;n-M{kRy53a;4w}&w7NMRpbecl3-aC#T}NIcq`D)hoI_#OR(j)ta!61 zvowdsiR}|DuArm#MTHetB{I81K>NdUK9#tR&4geOko7Q+?$|}h%rx=HQgHU-OR}gA zZ$$#5(pMi?YxTDTRf~V+$BAm?a8R)u96LLe{lIJB_=_S7yR}9R9buPUivBA_697aJ z&yrh!fd_f|!2HAHB(lq%ip$9;NSW82cpYCDqq-xsfSKsl)tcXQS@)!o71f1;w&s z_q*!%4~=C-rM^Yo7~?z%zlN}03g)p^)t9k#H8>2bJ3If*D`mX%{=b&xl29$KbNZ$K zgJaJc38i3rpR{&G?kAt{9~_JOGb%}187VMEujAhszKW~TxzpGcLnzV2;iR!@FFLV} zA_Qa=_C$<#EA0=JL4D=k3(;N*{?{+U_`A_x9+&+)Z}?P96*vA&=Hr);iR&>@hgM3Z zxTvUjwXoK{Aac6&4>UBmUFn1ey+wBa4DT#)09(ZWSI&DZToiR)^uj|ys(mu~>SYsU z{p-h1-20gaag#?j5yF*J?VQok%LQUAkj~D|GQ_IA4CUu61q~>S1OQ!Uk0H1DIIN$o z)%w5D2cn8_xr3pCg^q}wRut-@|9KIewB+ZXPk84}xJmjqPYeR^(MUM>) zAqBe5u%lPYfJ_*eicM=eptt1G`1m@X5q$B}Fz94``7pq^OUY$lwpSmu;X*)JgnFb{ zZAz^lelzXKVaD}HxTM36O%-_Ir?_|+%;7uwFsNq!@J@XQu4U z85q5f3_GQSW26Yo?f``j4|PfetL$i^GV}C8RpIlaJ$+7az%Xmo$_e6ePZL|jB`@^? z#PHJ{{T5c|z-YFpw_!ENzkuBALB%KWF=F16_3(kK%FB>=0OA0LYTk$H^_ow`S>Q)R z38rU1Lpu=s8)@^PWD%K&zj2h++MDhv!Ec9UkhH8J@CPoRLVWczBE!5l2tpUP)bP#j z0!>Yd`!QivS70OSxY&2-lERl;^NYAI*EA45`sX!d9Otop*U#9}f@z>7-46PgIO^#q zvljf1wJzkm+U=}uc%ciiASlIsN@NrOXo#y4PfaT@G2)&+I@2g0Gzi=1K*hOuF}|;> zggz~0hHU89n-IP2Nf5cyCp$<*^}2ax_4Xe09P@7GTqZWEZT1VL%v^G9AKBs=&9}?v zD{q-8*|E~`$HvKb+8@V#h?@`*s_7TRuh;#biyCP1!&(dy4&gG94!>e_s3c4@oJKCL|~3>$w$ggeaqjCHKc3pc$iLXY;mKG3w7axs9uNvG4Ra%R@mE{b?@crgwzF;Y4wfM69Q$@SXB4|N=wq4D>?RT zgY^!UK$B_9FCvKs4W3=-A|%ssNRP`%iW3;69YzS$cfIlZX#!e!RB zz6S({PU(HKt*CSPg+85@mR6L-8eZIwcD2ONFK@FFg;Z1*Xg`P8D8Cr`^{lXWzpTz` zW0BNO2hd{-T3uaT1ZjIMTC{WG4WNpG*}nFir-pzywx36;R$Z_xOKlhTRpe8|B`9|m zF{Yd)P+nB+MZjP|=nhBw3;>}D?wq&*DzfR`R|K|_P-8$INdd@bJ&zYB35{ToeLNvA zTzE8*X@PAOZP%-t8!Ik{-;vzEzY}CL&vNz6WcJ=Z^>nI&FH8|S`<5!VZoFMgt-}f4 zsh0-a#lEV^)`$_b{gUo|Y_v{W@eNY=tzmh+h*AY@{MBi3-5~ zxp-52NlA<6bL;iya_wH{;kZ=$06}lFM0spq~xc9*iI{_D{Qr@Qpb8nRhCN=?r`fj=SkCyiC-B|H^o|(>Xxhni$J7@pR)*Z+3uv2!HMcN@TR$aBH;;EXQG}=>>9ittohir3>ht`d) zj+tT(smCwx`~H02uaDF+ggHNSU0U!?gAb63IBV5FD;3!jhtFx+15wZ5f}W!a#~bMZ?V3x! z+#>?s#_simt~*Qsch^T5PWGdyxl)ed& zN_>6?I%ZstVo?IzoW|Qi|AGW&M?u?H5*}sa&%vZK9MYC5-(81slB_2 z*4C~yf$&dpBKjZD@mwtkief@B2;tMTK8U|+H}^c>{KGKi-}Q^nqT?@%<(~ab1khBO zyH&nlmf@tU%**Rp8s_HPF8Ao;DHE&LxFF@f(>K(aUK z8wLCl9uN4KdBXzx3Jcac?13uSCUMNlWo+>VJg3P%L?UrwHLZyhG)f8pr-hwIjPfLg z@&_)NwV<}xE+keGh3>`sfV#>9{}?KE&emh^wH8BYJjv+gvd`JEZcC z={?683u<2ypohjOO~60h`p-9qMuRsUE?(QaSoGB!NlgVQ(prLd9snRBuHDX}Z%hm5U zxGY?zhbP|+{(#$hqGNFx`R8koJ(+{Ju9u8ewMgohh_Mlz<;9VauC7Hbz=Z^aeb_{c zM5?@(UHo?5zVZ65!Tfq8=)o|wn^ey-UJ0OHc(D;Br#9I$M{xZed$#2jsKaNYSSb~u z93d%|_OO6ju)U3D0m4UpAwypP85b`i`5=i3s?OE0QWku(_Kf)w_4$$U_S`jsPXG9Z zIA6|@JQTVQXn2NAWM@Uxiga|c_N!RaQxJwe06z5>k!x6CRgFJS_S?(qJ>YuC@xfh Lf3RPjFa6fPtE;2w literal 0 HcmV?d00001 diff --git a/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_False_prism_False.png b/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_False_prism_False.png new file mode 100644 index 0000000000000000000000000000000000000000..e794f1ab52b6dc7cce46fd0295eeb8f302a4c704 GIT binary patch literal 13529 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 HeIEXQfnun} literal 0 HcmV?d00001 diff --git a/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_False.png b/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_False.png new file mode 100644 index 0000000000000000000000000000000000000000..7d74060811346893373ff939fd81cccbef6f5d7b GIT binary patch literal 16676 zcmeHv_dnI||NpV~o*^Wm2xUe{QQ5K`GDFBpHs^?BC1sC{Malb_C>pr8S=As6HKy(_<)eJx&V&Ge15aquw zL0nG|AkZU>hMKC8|F<14oRusUH7G|+E3a;JM6{H!tdFH{}vOhsh`|x zEpdIY@yfB=j}Y~9=%?Y7f!0=;!qfr2$>^mIeCwOxhI3D5Wk`p>V-SduuNI{TEDS{s zERWxS5(El;egpVfAOd)aV*THn|2vTXZ_Z!?Zuv7WWpz9`F@0eUQv0C(3Xwz7y~~F5 zbd;NlwiC50{qq$6chAEbBTVMG@&we*by=_X&~5IGoE9q!O?0gR_%?!vYaM!WmF0T1 z4bpwZNgO64JExOu_v@R8Zn9?W0CTc)Ei9+?*f}1IaiZ`P0G=^xFW_hrlWd1D6V;V2 z1k>HWN+`^(M2*ldeTV>s)|$kr-v4T6Fw_*NmBjTffkT;0steSoUIhe=ov@(E^XF0N z(P`098ebWm^OF4Q!l5uwA6X!%qW7&mB8sw+(#CO-VZTfD&e&G+h`cKzN2r~Ok_hCw z9ZxuLw^xU+y&f`h3bh;8j$Sc3(i-l01!}+daag8Q$-aluTr@>Ps`&-Ky1-Cpej0O6 zt5G?2f>eGimjdJ}Ay+4jiZZ+L)ke0#ilh6R2==frrx7*6y7VCoSap3`DvZs(2V4me zi^8y}#+cvMWi5;j#3$DCAqx)@yhr@cCq}y0Nunr-L8t|5+*0=V?6_rTqoFpr zrTaDoiM)jy`-j%@-UW%rQmx-JTh?2=KTrGsX|s`nv?E~iXS$&|^z4o*H!OcqC7OH_ zfsA?mX5Sxh`ZlAJG#B~JWlCep6}marhkF4kpd$tqbmj!_x!d=&&cGSkyRpHci~I%t zo;-DAe_h&CjoEJBM_3(+9g{4PMuI|}?}@uPBQmKx=ZGzdCrMO?l0;BjoDx(aGZVZp zwr1l(O_?s8EHztYknS5wP#XJ>&Uj*(E6@!g0s3d*&yVg|F=q%3U?t}*T4{(}^_D+G zz8#fRw>mj~hMmYyEYdD9sx}x>gR!|fV5+T)k_=*!yDSMwlvL4Xx8qLh{8~3e_zuqX z7TPLPeQGpotUcgtQc}@LChSLtKjh{E=OHgcWj@B)NUHb3c3xY6{W{7a2kPam-Xrhb z3lj@&U($nKVEv+^)#gd7qLSk+gKF;;NIPV6c+7aMT|KlbNIoRdDUC|rb8C3URJ;8i zq$~KBsQq04V2|zmJH}fZ(49pG=ZwEO3H{t5WHah|z& zUbd#PMt@VQR+F`vihP=g|NHnrg=FN%^FpNe1{}8qDxp&XrHR|yLw2o^XMYmw1T_*~ zkJO&KbA_6`!AE}xCO(6NMj;Y%6CF%0_?qz<2mUP$(!m(Ey)vk#sG}c0(bN%bw{hIo zO%<;8Xb=%-Vl92-a)++ES|hKP0R%H+s>e6n<0A~)3KZXe1lCxxZwG56i2b^_!tYrh z?ZRNNSU=12&cbhP-!t#f_lEpb32jIx6NotB)3pRb^7dPF^4`3p;vB{|q^sN#!}pD) z;w^Cl5>0-e*{iw}AMa-HsI(RZw%2yn&fbXC(o(rPbTU8~nEEww5eo>28gMF#@7P&E z4lU%r^Xh5?$JgcaYi-ZQak}o~4^alxWto3p0UdWxYnchy*fk`@8ei_Yv!@6eS`l}a zrv(Y!Fc9aov~K785vNhJ`)bB8=X9&F>!`U6FT8Vk)6c-%5XQBn_5l=1v2#%(zUQmx z9-5szTZesR=Nq>s3?&4*A}Z^eP<0OG><$43nk*G8vO~j;Sz=?+uBRbKdnD~16uCkq zk9TRxDmUQg985wdK~&G9p0hGVqoPs0oc3||6f~;DxN!rb9)uD-GQafpM z4Ss*mGUV1F1Su!QDF~i+dpo7wH0I|*zKk$qaxJawrE5tW=d_3HjbCT+yZq|9II;7t z8LgWk)VAyd!^M0H6i9iX{@~nI=^V;!*^c47(LNSL^ zlSk3BB@D_sjQ%}_<%6w$l7o3lOu%5uFSKsq#HJv)+B(*pA{2>R40^qb^=NtpvF%Vo z#paxPSRagYRMxWS-H#$N&!#p8Ngws}a!u>pj(sc7HG)2qI|}mU5?vktOkFK0u5$EJ zj3k1Eg&6c1739|v;_Fy2jq#}(iX#X{qZD4mba|!c24G7hOL`aSkQT0P&f4ZF4$d)o zoN>>j!aH&o_uf^B4JLV<2wMudJ4DCY#vmuZn9hKQPRurOFy zp?_R#a9m8QT5PbYbahc-H>7@5`Dc}w4zrG$;3UR(LRu$5%@m(=Lc*yaCk&B*uCHggq<4j)CuN7Y;rKqT4qvp164H-WR z{SYCqkvzV;;m%R{m=Yxa{yPQe*&wH(1WZ`Y_wlcopt50iBls2_kUs>S6J9xIz}lXC z0Zai&>oc=pRj;2Yc5SJZSZ!Rm2s(-k^Yt_*C3ozQd zNY?*+>WR-rXtF_Rf*Q7|wAN(;?4y_kDfio@v34CJ31#5|te(Pn4f!2D>u8a)f~m^A zGuf`n{946g$pV6?0gAi2n)-_-iN-%RJw8{^L+ngcwE4jX@(i}0{w;8;*eNHZuDKhz z-$|o#s?zoo?cRK(k0ozVk~L!Uvw;x~wV>D*4(qe=MLbfO&?8Z;3twL(c-gCtTp(gc z@m*B3M4)G`eN)pH4=h!Fh)(5xal7MXLZM)iitg5ilx8)6=SR90HVl=XeWJ3dCbUB2A;kv>@6=Z`n&suMq=Vfy9iA3DB_&#M&MppwEf#jx8cz3qn zJ@LENb^5h5ygt$yL0InP)^MdRjK?e&tp(&xrV=io5q|zBGfp1AD-L!{TNKl%^}!`- z7{M`Nx0$M#@_X%D9e04Vcd|X_w^e7zTK%H*lShfS=#PggEfqBt(nDJIrMCoBzGpaG zS@~hs<1(F`EDPH?EmC?pefw%O5S=8(|_bJuq9$;bI@v-Aoc2*KIeydE-Uni~_WKYI=F&ddA{;t5%VM|D)S$ z)CR&D<2%0PA=3_hr^#eyK7iAVLQWB>aeelN7p(Gjq>q#hL9DO98bfE z`UQw$@zSDHy$~oWQ}VgOOuw+q4}~9Nucf&fhr569U3zyNG$_Pmvx#Q?Rl~R!Ry(iu z8VC3gnJ^H8cw=D8A`+IHq*6Tb48J5k9kqaO-oa8V2Z*VgF9c63QPA_9cy~UI)-AHy z3;2_lDRsq0+c;W5#VRLwqZLSHyCJ@8x#p*d_R+=XncCXiE-6o(2VS!r<&`(*@sYe?p zJFz2-8(!sfIy{+g+4ED#5({cCl;-&iH?%i_xH>=UF>O0czGz=Y5+b2BtURilgD*Yn zCuSt2ynlVxT7*u0KDDkTx%t?W7^o0WjtjK>#Ns}}ZU<$RDl6R2{sz&0UPZRYjOGno}e{^3zd7i+$(P1ixE`Rm;fsoUVVRTT$^XK!BCErB!9qB&=16-1@@-k7*rv|EZicU4Lx2PYw z3?4&AxSM?EQG=l~Gcyd(mBcC88o2azDbeJ=uU0?O^_t0f%<~;ngyRe1xb;H1>r~F# zFY&8Eyl11_p~XOR5xGX^(fY>AYqQ2s*T5x0xBZYeGzzy}7L@kd+4*-iCi$i=3FqZd zp%RuTN5jL>Q<~_J+N&KPO*`ofaRlR!a*zkT+^4(fprc=Mivg#)yV#6`$1!LVGE?+V zHkE<#{JH)>bXibl`n5MREt`pa`1WUIAtO_J!Iv+T=t65h0xQ7Kc{IOy$g6VlX~#Ex ztxFYKwzST3%{{02uN)0UUt8=qUsSp#dJ$>t7`Scjbp6U(89*vlDFDJ zuH`RLkh33r6IF5j;1WR%+2LXOXHV)OHHi)Ypqc)Ms{j=C_f*zx{_N+oHU@=vhsikKG0o4zSaw|owB8hB;p zf$0~9;z;%sFE&Ujgcw1dZ*U7RMFYfe;Gep21YOf2?b*S|t|#nV32JGIl?}+?xVzq8h`*`TH?qppio?HjLf@h zo3pBOlGv(*M%5@XBow*hQn4WL705V6B4~`pBzP1E5)KuDoUkd&UA`AC$&tAT3)vj+ z_4H>K>S>MA1>!o(9Ar#Pm7?_bc;h2~e62;%IZZ|K36=$`IdpArcLk{veZENw;tBfK zo0%78cLMmLl#}F-=~YxF)&4KYD2eB@A!(qo6u79hzMSe)*{x)W?-|-qK98>EcI=r= zW@nB#wOD%}OC(wz@~h zJX+6moN~^K_TTdo8ghcVFxHuOjO(x7LbWu*CHVu!S$L6d7}U)x>dTD{%pk&E%H1W<8O`oCN)g&I8sQ`>CxO#)5l<5C=_kyml|~p0UJt_Z65%7z!ckKc0v`U*$deo9TW&b0~4$ z(sEW(QL9^9U=nV+LH{ZJ8f{D!&*xr>b^7?jc{8Z&p;FLEb{#hVS@zq6%lCq5JD{{X zK#OX8m_7nInaIIQNB;?cpo%TfYfz>Bxle;e-XQFLJfCDjLCGVOkfw&Y=8G@2*sT$V zn<`bEJnd@qoZf3py?^Vos*-2>`lTsQQm%-LR(ErDb@R`?t1Tkvi|O&S<=43C=Dk+G z5s2KZ55eL$2*n8O9)2N_1HeP&qx5vuMYiA0cTbKH-ZH|Y!=V)=jKj31Zb-2l60-nZ z|NG3Z49hPQHVEt8r*1PXw|(gR%yOm847W_Kk{p~h4U=GsWZxY>HHK`oV&nP_$jJOT z89^1~@D+vaOo9z>gUeJ&;u>t~;QhPk5 zD^V{NnHHT)Fo&fjH&`SI$+hLPR>IjyWt>L#4J4=%az8 zan0NIIw6y)Q*H-==u&A%d7kTismx2Z0B&$;K6#mn4QgF);eb|0nboDl7-)ACFj`c} zyo!sm^_nA5D_VFc=KcaQMWNq0kRwsbYyeIYO8$b%m(sj%5M!P=?*72Jx;Ygb8Ffws zi!MOkHscBwO|&x^`Y{%j{;6^>2!s~99^bd;e=1XQP(}REpAux|2DwPZl)SxRXy9DL zqjgWvu;OkBZ)gqur;UoacI*yBzUU&x)0lQRBxgLI#UT3chlEcFpWbOI*k&;{i$4yU zEHXEpoM*;6XA^%#1&;1v!XuA5QHESTAjvU&c;x535~_VkevnP=RF{g_W1&JX-JUN) zW~H{3-R}E2Fqc)>ou5k^B=BWuF~jHLvPn!dksQM|@-=OGOAM(U?D?&HW{vxr3Q4}f zf+9MJM-*y(J(_W#yF)Qw#$nXBv55LYQgpSU$S&*s{=7m6N5}LS6p^xJU<_) z-zSS^5^`iexgxf;eR~NF865HPiBurRjSsmf^Yc_6Tzy>nNyN;4L+DJDX8?0qlxy`Xlo3uGh1Ez?x&vxQzxk>4EO26 z+`9%;xP0kM#2B4uuRU2ydwP^_I1o5F$8VmKL=QBtv1#MdK0zH#S=(MtIbH`2rVrDc zXe%6naDmsD1iGgdB(UhPRF~<5@6d!PtL@O5RWcrT*O$L5`NCQCF@}k5qgd(-UT7e2 zrI6x7_(pcY=Iu3rO@}key<=kxhQBpqN8fsN8*_vSm-u)(ObX#N5aerSWMu8-;BkDtf?`E zj}=T$aD#w$k8nS7moTvZ>ozI9QVk+^qaXq$!GRE~dnHmiBD{3Mbo#)Y5873kXav~bA zvdeh#q%gxMzM|LARyXr*1LeH%({Y>?JBC-y7275%u9zah-hL3t3o7N!e!bFF-_+>j zD74nrMKG#9{1_0C-A*EdHdY#AyQE_9H=~(urp5_x4~wxsi9CIwygp-?mYzHyNll6Y zxOS6%8IIOBqnOFm^O($s`kGS+q)XXyKPN!hC=bWoRabM(0zjQZv~DMwWC|8g^s>$^ z!rVq~ec~NMSQz1ygW7WH<}F(RQLV_LpUz#fJ>Lq>kW{E^xWowKm0qYk&k)teH$uJ8 zw3(!y`T6;U)}W2`^}}E>0p|?2-;&J%M=3g)ve>{7gat|3yi3EJaEF`@)UZGDmKdo* zqtBawu}HYYN;8q#3N-RSU=L~G7Az=5Ze*L)p<-@!cW2$Yc5yxzsc5GzsxA=8FoF)5 ze(8q}=qn4_o2d>uT|fuj38&hVz`WD+4I$1aKs2m41Rk)F1^X%SYt;;;kN~*vxNRcAVqLRfi61{kHy3w z=&$9^gv*fp#s?3C*d5tZ?#O9>*Z!U?6p97%M#=Kl^p%O+V2weknJX;$a4#8tnA`YQ z=xbwRV@S{`eJXp;?8#^=YXIc$Qirq-MYwAHoK97#&%0PrzAgM&;HW@Hw^thVRLI5i zr3wW`9SFBvb-xk1Rn%r6X6C*y#hyv^T>Kt}(o@@(lG21k3gc2RU3@Z9 zjNtfuUh@pIIyLN5kRwd~`Yv+)P;2_4hg=>EFzqg*n$Fj2vS;fj+pr#SYb;dehG5sv zEg!58gIgLZ^#3&Ku{qx*V=fy|n55{dKpvki_6wvW)pPF4>HJVu#`=GEr8 zcym$RR$mz@_cGRb(9bcEu2ZrfNX)|mWJ0s^BoKjqI16A*Kpi12=CKx~AzULvOoaawN?9@cWq?Y%ryRTmt6DX+pF*c6Fb&ii4 zBnWcLxpC2w@3!C9%1=|TWGg$Zf>G>Qwx+TzEd!i^%V@{!h~qNd^aPTpwClSXCjB3g z9RIPaN-T9TQ<11QtxAjrDq{^TZgVd;ar;>K)Fg`tu0T?CctcA3!G{m8APo(dZI>t8 zGu4vFM{3pFvfm)R*9yN?#U&fK%iI=4JXf2S$TMwu7Fzt_0kFB{il8a{#Nk)J(^OQT zqp$DL`Y*J*>1|^^{>2ui+c0JXnMvmuM(J%0kl+xULK)7=ndA*)Dh%ry5>5kO#-sCFuW zd~P{V&q0tc+F|O*#lJj;yY)0zW z{m*lmjpZUrBBR)j##dJ6=f4Z^#hNkSNAdnf5^^Aii4Y`mEk7};lv1=u6PNTf&&U)p z>PnObP|0R&0y_v(H6856dNA5WozB7B_po1hBfuT;;NAXG!_OYG=@!v-X&omgxi45%i(YFDcM+4NNzX@F)zLSnYB1UbDwu zwo?4V9chAyfJwB82{0rE68?Xm=UiI>;X(2qnG+@I9&c~INf4B(mhz6Izbh`zuD*MR z_}8$z{APZltjEH9e^u_I*O!cE1>f}aHwtTSG+_NjQS3Si`Ext)WS1}N=V#ejemQkl z(mS6&32UmA8iPgMCTq))`-Jn+LcU%a@(M1X)N!djzcb~=PyzlJU5g4=RT-=Tws_!g znG!(>)0hQ_gI22)M@=2=3zQc>DuzuI1wPH4T522Be5O0_$G+JjQO)CbgO{TuCw-(( zzL7?I7wncR0u_Bp2E4G@tGmvrI_R4*?2oXTJeeYu)2JAC@E?^n<-1=ZHfXs_!NKeP ztnzHiu!UUFVG7yKha7EPia=IeCa-!KpcQro5^H>rhG0!z#PZY$>@g77y@s5ni zE3KoBvUmwkVsgt4kcXA0FUJOcY-(vISqMs!Kq~5*6a1ku%2JP zV=gU%BjgU$aTuw_s5G&eix-wVyfD^i5rj`d!!C%)oXPc#^8hec$`hfkH<;+tKl@f1 zWriW{GW%iXhHk=+#X~-sJ@Ef)lf8igBLF|x?v2YF7xY@y)vRQ%13Q-_*&(KaBmy@r zlyNgMfvrTJ|H0R;29e8`RGAPz)^Zvm=d78Y6>)TW7cGBTj8v@Xu=eh37F{e`NoggD z(=eq#EJi?MLRw>Dl8`KDo^b~@Pi}4RW}f2CTI76)_5^4RGkcxv4RtG42is4!J%w(I zWoA1qP8+~^96sE8*Cd?vZXAWMs6|0YGUn)PGIeaz$U`?Hp+73P7EZ2NvpTq zEAyv+`f}&HLo@G4>N?|?r(9Z`B{|=ygk0JfqS3lCWIu6k4gvnC}A;Oyde;8VN!%#xhjf7Xl_>gf}eIkb^IZ$!#S~<4l#tV`EF_ z7l9nca*w{>;n7z5wYTEYPQXOyW$YGu@6SR zh$FX*ioTP8CK!}}4#?wTsqj-R3=7y5abUWNr*3JJO@%)hJ*L`nCD;g?m$ayPS1#<5 zewaRZ%&>t_5*>XG0tuMI;WZfI-%F)q8%|xSV8c4!Kh3dU)U)k(MG4>m^gE zeg@ADf{n~Hp)N4#@S2YL9PQD9Ti|N8O0P~Y37L%B*L9}^RkN< zUpVa8P2CIOE$p9&jg19_o_+}Sp>n3%mn56QqvI)rfAY0@I;9y+6Ld~{!1iu0R$lw3 z`F`5GWA95X`1Q7R)2yr$*GkEd)59;5LPa)nO@bF#flUtz@+y2|k6QALV4e&31X>FSugge8@1 zy=)B^eU)8Yl(Vm!@$^hv=+Pgu(HNS@;MS2PYNa!=v#oCa5t7fu#_<*^a&m8tB|KhY zQrVZ@-vHUfwXSvLC;{U_9*$l!du>UUQJ&S;rJU1sVR(is?$^Uaz13@$_Wfp$qd*Y>r)AWzG9@t!kPUmj?_?N_7%1)~=Gm|oagoBG zh6#~}WOU@Nqhr9M(eAnt7QvpMDyIv zt+t!|fAIDJ?Jy-B2WM;DsFFD$q{P{%hs5iYFfP%u&X>;Gz*B)X7exW=a8c4R zS0dR{ARAXu|2Ni*p{t}sAj7RE9)ZSrMtQZUJ7YQ^F+F0J5elOK&u;V3HMtsLP>K&| zmXJ7UTu?#+8t`%|<0y@{!ZqCBJHy!+;LF;OP+8@GxsHm3I3u#sP~u!tnQ4rYYI?jUmLqIn{;^UOH#A)o}1}WmHO9GB{xrTK`<-^+NTIcn`lywYqd@ah}FfH4pY$m3PND-tR|t54Mn7J;g0$y1PFz z_U_ra^;oq$v}=q|z{kiMe3IElZ67nv3iB$qM@&UKIwG)K$fqC%Hb81PEt87;F}>3i z3l(swz4FnriocX%I$!Z}%DUvCuYP=wg|N?UJ&^FKs?{Sx75i0R<`>2^Sa~H!B{AC4 zVo!lD#^?dB-mU;OxE$(h^IN>i#t?n;9)3{25QqUIZ9oiwI~N#b2!c2H z(C>~27rg`_N2c=*J@>$i#2o+e6di0}4vJ4l^L$OE`;QZCFy$nlY$o|uz>}vOXu^PYMCi zONNUh@5cFV$fd5bvsS~r6pkf@(rpCv!K+<|FD&DMm8e~M`rYO(o*5ld5tv%OxnF+w zUB(1%=%LC#k1CJndKoJH^I`_|9 zq1kDzKG(VivJ{tYK2eKG%H-xZF}{Kddr<~&#E=F6ALzAcGk^!lhA#a|IkgDsyg$o{;Sf=Ym_;>?M=YQW%DgoadB7qbv@da zrCf;oJv^nQ=`X{^hq=TWM7Th>a_AQ$dsPEBu@ZW2vbV$=`ud}PQq>_JOUksPKQ zx~N$Y{6fGu#le;1o)l9S;AAD221E}n0Xm4aacf-5cV}T$$SBn*)L`p)Lf0X?h(fxO zIcauP6>%f?A}X}voLz{W`7QL`*O~&>BD{eiZ=jd_q09}nty9;-7@~(fK=2D_Bxrxz zWR@*O>uw|^>KP>7dLQQSh=u6UPBaMq6pu!G`Jg2%vo6*Oh~SEhFNVgy(XFP^npY|M zp*Lo)_WN&={HOn5eSt{GVsjK4P?)hFR`#Cj7cS{1eVs)*Pak@+DY4^ClyO81&&V^j zSR5if^GLSo5Q(j72^v|rC|*9~`_KKDEMy9XzQLRmgo<^m#O5Rw^&mKvxvGGP zSD3}JqhLb#BV`u&E1Q*luC{CndZ9?PoaPlt8EzieDey6Li4+hCIC}v_;FURQ^A%e6 zbkfbDUgdBS-~lqO(K=pSb>yo2Jq<#CHVHJx@LA#N3mrP%7kag1ry25vPSE|;Ux4~_u zu2q}mBR<7WWEt+A-8W?sb(fm1f>B{dj$lsHOV2!@*{-oMQ9I7>BLo9O{R|RtCMi+u2=7r^ z^ooi=*iEAU>?B=WzBLz)Q>`3nO5v7^P%;HSXlkL5e2}q9A9703QsWerIZ3r!IQyhm z%_*nyimC7oU1V65^h+!U&C+rwBct}$rl%W+&I`FW%IsDsQ*l^NXbHt=AgPP>sh%!b zGs4FG!DzPvpPXWg!%+cEHg?DZx<_%kGh>*twr%5ym&&eFkYH-R2WWgZZulR?a2U%bZ0Vnzt%5h=Y-l-NnXd95KUVYM6`qbKFC`hu=tKBqZOp~tHmRB z5QM-2nh8MhaQIK+_GP2TE65h~nPZ5ky@ruV?xf7*_qIjhBbgVBtnVmwYVcTo#;Gh2 zvOA}Hgk(^Sv}X5~zi)?WiLHpEBQvw>&aG5ypNCc~p{vvY7|SnPSQ-e1;rxOlK)*DFZ22n58LdDIn);;e(z{RLib2WWvn9N-x zyT)AFG(mlgz+Rsz;rTuvmzUzx*Elw@LvA7U9bU-yaAy4p=oeoM-@Mb=@w}W=wb{L1 zeB@%t!~x_b=rhZ|;B!Ah1?JjMJ=Xkvtmx|9}l{!PHP2s*AnWS zFN(z#9VuNbs6D)fXFahG?-1ngiU16LFbWxry{JjH;@18yj2bKhetaZm(p^_#M* zka0`nI})GLVfZ@SpHBi9XRbbBxokV|l@C5VCVpQWdU z;g0M}lvMiD-bX!LuX>2^fI_`;hxYaC!ImN}0%<|$`t$L7jZ2;2bR_d+f5OJOM;mUj zd}WZta~tThz|yPRwsZ|QYY6k;?lt*f;!*EuD_>Z5&-WKHa>TgbKd<+$=Q@ zlJ;-}V5n=h${B$xEr8L+Xz`QY?TODwNOzFdm$z9cnnev#+*&^^f-w?1#bp?%3bC*$dD`xQGJr3iPe$_`larAqDjPa6Yv{e_W{%E0S8WoY&GUB8r{oaT~qz0 z>`pAAj?R&+VU}Sj@;yM#y#VgJ?BqO_x|rD3yIF?<10HZtjyz6wy?9K-!~M_whVuRM z#t_`z)LQSGepzU*;17GQ`q=_Ky}PIC%59$iG}AJ8rk+S?B1UCCsHu@sfJp3uyGPkM zlvWC;znFhFco*5?Th9Dn25}y`AjtR zHn{q6o8a>KuUm2mEO&GMfKNa$^pTnAj8A%#{B~M4upW)?5LN=A_B22q`H_Bw6-FK% z7B9i!$RJ^Nr6LQ;KkI&(6V3BVT=p?lMIYbiKe%u3(`16QtUkAP_((u!!jX^bo)kun zBj80!&)xb3{GNDV7Z?e+JncWDhwSKeaPeFFrdwFk1%m#>w0gaqMmClCi7F0OiN)lJ z{p!YBmDPn9E0NrZ$rFi*<0a$(fC6HA3 z;e0**trC+M;)uJ1kDeW8W*?jP^C)ecOD8K^R*sZa=uz$O zzL52g*f^Qh7S8x1yA2)mQlS*{*sNKQC&a5y7(a& zR74<$fZK>Cc+gg)0QmGSoWxvcWC^ylg0!N%<9@|ZJM8U869`=S_}wCM_>eEI&$`LE z9zz`rC}8EsSHZ6J9&-vjarh-9KAIcfk;b3~5S$ZFg86b^mNarvx|n>pWAO2lN?mFg zYO$VB@H6(|h~FOC3E(5=^)PyB)`W{`iH4=Hpp$K_1hsDbnl*k64m4t}4FAjlUo;sZ z*W=kXM(owp&9tr+(!sw&>sP0L=ZVGU;ZUbgqm;G%_rq@MlYffpMDu6(em-;FVt4^lLlHs>Qp33a$eo_0v212xu|nS2g0HmKpig)!}!!<=!b|^(=eZdind?+B(aF z&A?4g)4RX~Bu;VjmKkA{9mlGEk1MY2{Fg@=ww$}2oSf$0aYrM5S0IEBM$E>M3Kh&{KTw66oo=f`jd1+etQ{)=)&h2#@Sy~pU51tzJoF%( zcuZf+5S0e~cj>qI#~CjOBv16e%fF!iU3~uEP4NHSg8zT=9{?r^41J?ZGCy7B(}A!8 NX{hU}l|8lz`#(ofsPq5; literal 0 HcmV?d00001 diff --git a/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_True.png b/tests/data/test_cow_mesh_FishEyeCameras_radial_True_tangential_True_prism_True.png new file mode 100644 index 0000000000000000000000000000000000000000..785e44250bd89552d1061836b628e71fef50ef70 GIT binary patch literal 17331 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 a*XTOe56xlJPW94Rfb%a@$Go5YPW~Ijk^<-e literal 0 HcmV?d00001 diff --git a/tests/data/test_perspective_rasterized_sphere_MeshRasterizer.png b/tests/data/test_perspective_rasterized_sphere_MeshRasterizer.png new file mode 100644 index 0000000000000000000000000000000000000000..9387f060f2df1344e8f3965da42e88fcfbcfe969 GIT binary patch literal 2331 zcmb_edpuOz9^ZS9O^rsn3}yJFhoXs;j!2jeCpp!4H8Uo8BpTJonA4ydW~)<4Wt1Z2 zRa93TWJtPVLW%N96B-T-E*WUY_E7ggB*TX{) zL~!2j=ng>$Xd=)&P(saG=T||{y!XzITX#pKd~TD*8EjghLRqC$Hr7^EdaiyjvH9|K ze@PDP!2ZhVV-sgFf8`mG<+rG{4WySSk9q3-bf7nUXqsW+pA9EOP09peC#-lA7v4Qm zFmzY%ZjGC0>a2KVapw`Yux6d|tm4+afjfJ`zS(yW8J#~h|4S+eb@S&nTirOKd}?}A zVk%-kp4Mgb(isc5-Q&Jrgn5%Lp@ZYT8(s1r2|4n~oD)%!;}|9tG;gXr#Gkx2kpFBM zT`F?&78GB+e>`o=(0I;qRiL4w!_SNEwVoTxuQ-nG zk;uwyhbm}Ul8;5fc@=u6_XIb*l}+aC%9ZqHea@@6uHr@eI`IitmjBP`5^Emc?H?-N zNTcoanPntjLDWOqC~GiMIXX(0&zJfNBFbs)YGpk$BCWjM58mAA+C>aBeJD+_P@|Nq z)Zj>_om{k-4ZY%W;|=}zPDr;)Ftjrojj5M;x!;ZT+LgW4*3fJK-vQ~q6ZEn7p)oH% zu0PijNHko3b2ZwK^u-5%p+D657$eXisB)TRh$UFd9V_Wi@G@#wsel3Y1=6K=#VE&u(YBtsrrVYSl!O6kKn8KxxsClS$ zzo;D2p==}>O75t!jsY;+l9FpHY>jko+D#1twm#Lr=oC*d12)gR4dG<=_Y` zQAdnCXW<;Zl=Do)9I|>hVI=Z}MG<_)%M()Xo}c3}+hjoM87RrH^Szogi0DuVb~ks| zE7iqR5Ya%?zqTGkN8Es}85>ij+fni69oLZvT+u$<(Sng^cdRE-TTIGWNXj_P6J9|U z+=Z(CFveW4e$yAPztgw^8Y&xGMYpBn%~OyC6MUGD6#3(h-v9Unz_tCX(8WWeh+K8> zscO*v`pnx<74QpWTF?N@;4>coN$o-8i<&MHnx4nj{7*M93^LM8F?(Fm zejKooy0)!gP7gSm;{($Fk7nxB*C|0ZRAuXhp@cwF(yaaO;&U^h!g|b6vI3ZNplq_7 zoyVWLl%+e$3)0Q7bhy6lhogxIn2+Wau44Y+G1H0MYwHX7M*s0=UQ_kGO#>$p`Mi(S z-&fQP8ve1q9+=LX$FwAEu@hzKtX|WT%Bzp=KwWU~ES!QP>&k8+5o$;G%`VEf#Jm<7 zI-(I&2{x4p=l*xMUzz&c9>8}SG@T@vcT^&tu#0EvEduZ!;8nhjp(D1*fJugLCs{!U z0f-NDz(GU#jc2C7nbpx1!p=93LNu+?_MNl7(APQV!9@t?asb z)p^AOrR}Z|*)W+9e^BZn%7o~Y0#gzNXLs1w-v_SxYy$Asq_IL6`ONpRB#QCdix1<1 z=I##J?_n@nfY==haaUMks{EIIDP_nRsV9(G5q7ueH;|@y!0IKMcf0}qhuhPex(FF? zh)ukZL5bIDtmy;22g5=jf*f3Hwg3$hr>8hS+eC?VaCtTZ#@sa6U@X-mJ0${)<;Mkb zdx5c;;l0c45G{TF@&;`&J|;8>$TU*#gvy8+aDLo@&_R$BWp$&vR7fF2gj$_FRe@~G zK-{gqS&V!coFB*P9)_F@DwHDB%6?`a45xHLptxc_)5D+#nxCvQ+MS)wT7jYid2EuXj+>He7unlDkdAy0*aON&IVa04~6&aO>h6%& z#GssJjWe4?Dockh8)>F+&=72@*UmUHc5tlN7ik}*kE;e#m_*?}ki3ug zCdH?-X$kuuCkC%p+i5e$fx~OmzhT31KE#t4OE+^|0(hMpU+my8_VPYB zs@rh9>AV3~^9Hy{U;cU$gM9{ER?Q a*XTOe56xlJPW94Rfb%a@$Go5YPW~Ijk^<-e literal 0 HcmV?d00001 diff --git a/tests/data/test_rasterized_fisheye_sphere_points.png b/tests/data/test_rasterized_fisheye_sphere_points.png new file mode 100644 index 0000000000000000000000000000000000000000..f80690c557d444e05f13b113ac62809756b23f25 GIT binary patch literal 1327 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..39f43a3a9f565ca450fcc7e0bcb976ab40d0f6eb GIT binary patch literal 1913 zcmeHH`BPI@6h80qfIN^bL3Sl90aS#*b66BgfPn0Ttwm``q)=h7Y(@vfkOxH#?ugZ3 zgHVE&u_$z?t+fsW)CxsGM5}_dh`68wB1MV8K$FlP`~#f+)ceal_nvdV@4Mfedn-6G z>kag*^Z>vhJd7O=fT}_iDC()$D)=mbE-RcJm{=&8815*b2Ab~f=dH|*4(xEtl`L~R z5|23siznLzFMYGk6Z{oIB5>xhw(98rYrOGHpFH(uPC3op>0`4oRX?2$<*h># zUf(#i6G=!f4v+k2GTY5O0O9SolL`mM`D>RSk~X6{#&B_O>)hQ-G|mCI89X-Jei}2i zgEedJPI3<;w`g!eyhG8~4HY=7iX@az)5)V4d8a`#AFzhpiIGdkPR?)jWI3U-gh4^J zx2pmDz(yf|!zVSm3;MaaxkD4%XOd*C7+LGGPWkkb9`jeO)SY~ryb#-4dcR0(1aW$K zViuk}HXu(mEkqyORfNMn@h|Ia46CLc=xsj?=Ww~)_1vr2J6F*-1!fC>5{Pt|<^kwv zd((ncVzJc(a#}M29z76?An&WC#k&VSH$!ENxz~Q1yG$`snC#XV4DudDbJr$nElgeI zo$alpN?C+X*aIxI{qRY5~I)Y3%jeHgdQk93qG)PBq-lP!<;qVvZ1UUpg=G z?WX`M4&_v??~jxCeM@2adQs$#aPw=R?Sb2A0{c93N)YJXpV%&SM<{Gnw8cy6Uh1BT zidb-_#Yd)%kRFcJ53xEdMe9=)F|0E7a~M~a}>tL@(V&It!i+!Bq%M!>zt9WE)hgh;L50QvcVc5 zli&5#@Erg`aF*9c5GIRmFhW3eRl2=9!l!HYS1z|E^1ZX70rpZs)N{NuQPc5< zDyOHaH$~*En$X-E`ro>ULoulTJC1o^afdb)$6UP_swBy5-hD>@*cq6*LUYj_oJIY} z5nIks^FY+);^i->K-ObW=c0i=BA3f81h_06qgTw%&h{T?8MPVywikmhMqlun!Zd>3 zD_84#Z#nH_W2iD&T%j>W&7gKcrJ-STE05=^Vfgn5-P%?Q^cM?=SG%vNC{z-{x`ORn z7Hw7g6H}sh^vKZf7Z-Cq1NM2f8f2z!GruVYJPAwLG7Y}tQwCjkw$e;f*wuI0A+HKp zd}@pX$|=)E&f!q*^yiNbkaW*vq)dabs}L6-ObJauIr{>uyT>JDYV<3hYl;T84pqkN@-TEaDjCb+3H=P+}Pa7dpJo zKPj(Z!G#+^=O1ms(+CAB%4z@WP+NIoQ$T*9)`+!Ec8FmW2P0orpH1=!tv3NPkJQ)# zQuPd6GdfGI_nTB1l@^H)?Xpc%;*lW74U#)&XcAlG747sy%0ZF*5;A4ljCyYno~DCe z_Rm9KdX+c`Jd{yaYE%Arm?TpW%Mf042EkKQS3*l$yd_h4JrXh*0-dOURvHXOR3ihi zhA7J@%af<*X2Y}1&zFcxrcFRc+=y+jy@HXIoyTO838i2hbeMWi5MctH<2G8-*bOL) v|NX3N^s+O;%kf@Vv6g1^VgA+s3`OSOj_hb87>vqmm1@%PkQny4AYR!&HyZ}N literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..8111b2776881d7477afeece22696163c28fc2199 GIT binary patch literal 1867 zcmeH{ZA?>V6vxlKz0lSbEiGv6v|Nf*=0qB6LW_u33oWI!BI*3t_{CRjrAp;ekSy z@!4g&l)3q;(l&P;S%;C?r6!wtHW7tV@iAI^um|pgSm4e@`!SX=7v3BTX|^w-Mam(4 zbY??9*#+l!@nVfj-@!VNgI-S0feq!}l92#X*RUE7_4# z8y|yG3GV&A%DO{4>D0WmdvjW%P?oq$oSSp z(}m>t;;fjIuVp7)PBv!5Vf|wiURv_=YMDfmh*ssoMRrwVU6!z4_qYPzXQX4B9SF7G zZw!a13Y=Pu!nxew*9^it4XY9YyS2W)zDJEq92KCZwms|UP_98uOd^mk_B>+0DFXJ1 z`rUC{GNl^R)Fc`@>nj7#YMD8#}BN8-;9DPzeLj zV@t!#l3FGNw_Rv4i#-`|JGLy%9JpX+Nf6niz1ZBNj{L#O%?Sp9cqKih&{5N&Nw>y# z@^Tf>R+s)=1Hv&vMLsk0REeKx4SM7BwS7A(ZF~J8R8G4k9>u!-@H6r4f|T&OZV$2` z-MgyMDse+B%lZ1oA&Dnq;my{Kn({z@{`zF`Xj3FeSC_L24KMxS=CLr^g|ojiA-S}P zd^Mep6y?lugsc<7kYu~NX8wBy&@{`?dyChiRAjtb_pY1(hHoUZFRYXSo!j!V9$%b^ z;CE{?b#FV5gZTFLRRu4s*D7=ApQc^@XRlb!+>i2>;4v32OPrdj2yOV)g}Oa|13L%x A-v9sr literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_elevated_none_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_elevated_none_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e6a7d6a260009216ac64576717a00e3ba83658 GIT binary patch literal 2575 zcmds3dpOkj8h?K?gW;fwam%%YVavUu$WX3fhGH$9h^*GOjAi$PYJQS6MQBvYWlT${ zY|>>}*KrG}7M02^A}!|37G@%hIX`orp65KzdCp(wzy1F6e&6@|zMtRcec#{ra+>bz zuB5O|0RWUdJ$Cy8;IJtUh^r!b-L6{z@-IAhJMTMMC>VYeP5w>;^($cyRpR};8woZH zF2RpZdVn8mOF47Y$hQsep?KI^(Ruq+)-_49#kvUP;i;Pg0q+ldYaUbEC4L^FD|&8< z;r{hU{uVVycz!r0CWallQ%6}tUHzuE+<+@k+D_G-*fcjccUF9Wu8(lb^M@APpW(NA z!6f_RCUGkZ(cJ(E)TQ|q-g)$+Dh!loBuhfQsNc%Nt-bB9C3z}6TXEEo^R@HyGbLB= zrvu62;q*vH3d+DyOAE`H7Fq^5Kx&;H*&|C_54KOHoiY`BED^4KpoDS=Z6|_HFW@#S0MA&?;OYEsi#*bO)2R>*Bay@Wwhdt_Iocp>&4TFAvd(@>gpQRubKIRch~e9 zD;t~mH!W$CrjuKdunkpA?$p#&hK7Y3%{e_$rtM+>${pF%=CQGGAvxg^FkGsb+J_v zr~a7fG+3Gq@+PXPsusm7BL2$~xhpmV^xUhJq8`2oGd(HThMBYp=y?B%?yPueULX(* zR>!)pagifJN2Pd2RDArsm;B+Hc#|a3fG^mc5sdh0YillT~xi_^Z8rO8?h{QJ} zBxG=4AnC)Xv(Vsv9xyBic~I=c{BwS3{{2X{-l>Z!KnakKGgF z9oc+7-{L?$OYhWC98A?G&V3yfWs;;YCQtoQPZGblDB?fLvnVMuxCEtNFO`X=o|!Oh z06|M%Hy$5+KaVZ2;qAmsu}CC}>gKr8oHY@T>E%yzy@sUN$jHcui19bA>Ak6>UBJ%2 zeEGCqO5jn+idZO25R%(SXlDKL!P{rgo;9IycGH~Ed%bvQ4h#$|B*uS_^XM3Nk_-$D z9TQIa3CXrkszASe97;%ms^9|F!5QhZUPMSTToxi!)48ShoS1LYMy*mq?^4=t;DO-@SXc`g4$N zodFduGY@(ash_ZbismqeXu5CG^m-A%l9FtyzS9YesDJ==C>%0?w7He^TrEY}FDv$+ z=A2BD$C{juj$xv*IgI3p6RDu=L`mx@bq$RYcdi=_bf*94F77p?8zP`=1d*y}c%o#N zk$GsNjw9}ewJ=IiMr2emf$a~>O9P?g&O7bv4B`4?kczP>UPjPlRWD<90brvM$jr*X zg^-{imR`yHXtWB#`&IS3hnbmzg7uq`&PV#mL$VL01ak7rcyEW`A-3NFsln!sQjk$kOG6D^WK@H1pq5u4 zQH2wC$ZW=yPd?JDRz4gFa>%>XKtOpxB$@cQes_4)oljvu>f#Yle2{utoU?t7w6{8s zZ6d7pdnp@&PS+R(&FEZ9Kud!3i{8z~*&?Hw7d_l-7&?2vjuY_I-dwAM1a9G15?C1z zSOnDXt1pU1t*y2rVTu>`JgT8)x`Jl5+OuGDrSbeTdT2#{K|zLIO6V^qeB0$w)w>D7 zEoq}|1T^e*Oc>}7}0mA<%PwKMwW2H4jg9*wTK ztdJM-?!Cnu*{ay3Q*ZnhUmEBOw#|NF`vaYn zNRV%cFR5JoCKGyWwd^wcXsrZP)4DRRk48ic*or}7f(ndHJVyIyb_jPfcA%AA>*B3X zZ+)}cT{6Q94wv|^A?SVjMjPQabWu_oXxQbc+w(x>)zbZ9=rIylV5W2;{JoE(8MK&i x9_TFN_(}FMD@I_HEMfaG6`tzcyy*7o!M= zGXGZ@p=KuiaMX)oZ8E|*p^lo>yigJcZh1_CaqrP%GS&_L-mMDMEXM=)FUlNEMV!< zpun2{U1+1g6{7E%=Sz}?Esy~%H_@TojCvyab6N(0wOW$|x9J99f~~K#0Ob>88m(#f z1^gp4SWnkA*}0>X3`({s?UNk^4Pgoyx?0pG8m2?B>;6RL^>=4GZM8?zM^lsc3-Lqroqh8Hd+}j_QioA z&Wnh%=~~_Zu4Jxm@n*xaEe}b+HAhH8arFUqJRJl`CSW0*5H##)G{(0lSg$JSW*ZZM zDS=0SOigvnY2{^nah40?vGMV*7f8+Z6+9+J7IOAZN9VT$6aXaBFqiy%%gu})*IQ() z0j3*Pb*D2iJuq(xID6PpqsKpJ3BXjC)!h%JenHvqAP=@H(?W5QhgTa=&f{3z6{V#gLd-w)(f zW(8hRc0s%k*RM8ORoI9egO)@jBfb9GcH4vBL)@_Sufs*lyYT5_4s}K;ZSwGfH~+*x zGt;#c|J?li#0T*+6Ml-h7E+r?#iGx=mwzTHJjVdnP2luQN&ILYe-C}sacStO!;*SG zJ5MGasaQHwDfAKHlcP3?GmPxqSV+T2^_B`34i0ok7592zkjT8CMU_8XgXdsY_hs^X8#Q7pN5ZN<=%WOrc*W&f7Y*FO}mGS{|+3GhaOr}n4u$9+`5@g!R4VPI4+sM#HH|Z=Fv5bKgQs`S3Ql1HA zlJboz^14WZjFK!LU{Om*@Ir4x?RA@LGr!Ftd0o$sjW3Ymtl!0?Gr(%&G1Xw>=zN&m zR8;KfBhw|wOjY?_dz=`vs$7N>*`RT(m~0Qd?Ccf8L7iVids@vgu*y%KC%VU;TG4yD zV_Vb_xVb;jb~NX@nmrtUy0+{>N871>=*}9vm9?^=v>!MLC9=;woz1COd>iMxbCZ}wgW^o zqRV`-C?lfeW&t7U;uIOI>D9z%PTE?q&(>dE{iLZ0=tPJ#ed7*MVQt?Yl^cd1|37Kb a;eluI*2&?godPP9m|vcUzk8{xFySxM5j(X2 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..6923d3a240901501f3b2380d54575979a724b5ed GIT binary patch literal 1975 zcmeHHX;4#F6h80eNdiU)SY=a4!dj~A!%}1tNFZ#YFfEOiLJ&l#8xE*ZFkTo-DxzV) z0Yo$iIHa1$$Z(j4YEAP^73ZQr8<<)8}hu(4mY~4&0a>4x?fo5&U{m6ad3oYB#z5(QZ z93CG~M+T5SI2k^6P)#%JrD2ld_zrcd-sD-Z|7mhWeU{0FpeU7Hc4{+$7J}4eF%nCx z$f-kZ;b?yn+Hywf6dIXaNQzd~ZPG|*!PaXFI_9)7P1u;fu*$i}6)U2R)}3Z1S-`zm z)$2BtEA!<+_Z`*V0ny`ZJGkQL&q>ir>R*nszdHIJZzebe+nkBDkO%oXH{nu)%Bqij zcybxv(ASEi#4pa^MH-{ZoW%Dxf;HI^GnDj952~u|X534P33P8=;Huy&T#RjZHuS_x z8xbIRJK9R1(jfm3?FtsgHZuz?7%2A!zs3~O1n1j6sG~m>rvU`U@ntxlYguAQFDQhp zFRsNkUyHQ_a;s5RE@Y*hMDqlaKB)5)73KhV#PPjxzWw(QLO`eRd9^NZw;YQvl-l6@ z{DCQhd4_!fu!a)cgghKeA)aucK`N7-k`eWBd_A0>SyomyEJ7m$FnZ0{G>nb%OdVOk zPEY2$VG`G?p5`3j8`PwVaWX7I+9UwvH%_DyAhE_IrUyN3U!2hO0Z7*a_IU+j;iTnn z2~ECl49j}HoYe#mX$^;iK~+LXXV8)zT_Dh4%ELsDy7eBKKyJpt{xrb#=?~gmmc+{3 zt~I3=00K?OI;GR-x%3to1S}n1{UR^CDF{$zw}}f2sH+wOdAqr&`n9MT-xNS)MvZ>< z%71hChyOdN;=!@8^(tMolRzIwL`IgFVzqx_y!>)z%{=3mzi}|%M814Rw1J9qi5N4b z!kFA-_OCN!`Z3{{=weu6&tArSf{M!!ENWcIwhy{ju~% z45}7Bt&e>}lVWylDHr%!<8+E;ibgVQ&!O-q`ew(L{GSh1(ES;}`uQ9?16bs89YacK z-p$Se)~%g7eN?&!Ojv=`JSZ3A(2zi5Sb@+Hi*{Er2_%`Am}pllX5fd2h=^j-)W_lK z92WGSp)oi>h8N)&uewI z!r(#GLcAszp2>7svpp8)ho+Zc@_eeY^JdURs!yDYY6o}Qg3DoM`>k)J`8Rs8$OrVeQQo%k= zqr3Ih9S$(Lw1;OF;t8}brk6X)%c6>!ITxjB)B|7R^H>M35Xc5*zKnncCl2j^vQ87` zHa(;a3l@;DMWNSuq=E(0!XGJN4+j#;=PW8`Q;q}a`J#awPISc(y|bHEa!0^`byK8y ie)2ng&HouE@l*X(YeT0l4DnnSWAgV27FKvm(*6MTCN1&+ literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_radial_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_radial_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..a37c072cd37fecbba8efcb2174baad20592f1ce9 GIT binary patch literal 1820 zcmeH{Yfw{16vuZr=_NdZJX$J`(wGF1M-f^FgA{rpfe=tco>E5#WN2Za5_HhY^VVX( z@>CvWT7gS>iD>Zyb)YkC0-+IMM#fYxuq7d)NC1$*M1Vz2Id;P90AMo`Q9$(Pm!IB0Qr;Y5f#3baraU?0 z@_OC7on>AXxgsmAJ9(aaB-1*&b#>9mkoI~QZh)-mc)`GfDsIh8%ja|bP5n#@d0=X2 zxlDdwTaPtNNdIB)y0>3K3Q|R&w3nUfGSAV+=gccysKJ8gS zB;s0wb9Q;l@+x@T3iS7mJ}Gc!hYy0K^tS3w7E(B=BgC?iAlfZ$uunNtPPj3Ns%s4#2WGo5z$1~u_C$S? z!2FISF#lHD`+_&WyQtq7DH2EbEax-V|A-I-0D)>;cEf=!-i(KHb$vb@b4x(9Fo~b0 zJc=}R69)mfWCc!Vb~zL)k2^yU5=smCi;_e^d8r>0a9p6q=*;Z^A3?qql}HH*B_k~1 zsoZqyEkWZ}kUWn$aP65y*Q=U7duegH#g>oS@~~Dsn4vthPzC_s2>=OQ4+VaszpLUw zDI>Y&U)Fy@{_j%pRdRgxN65)1BGwqV9qWpFCMNktL$3cYZo%ANT+!)S)em>A1k>z) z>l!z?e>TJXA{!~<^7EExItrfRnV1$27Cm}7v2%+>vCW@nHq`gLiUxf3$iv4$ta7BA zN7b*JuIk4fYN5w^s@uGNHz^ zAlZ{cch>f2@4{(;Kum{*pPV)850HKXqzz-E^*oIUU0BZmyPK!fa-qgG?TTrVb{{0c z@D(pcJBxPjQr36dHn+VA$?YW_P}s(SB!9NUb*9xFlAd8#t-fp(K=Q-Rs{&pt21ygs zPL8t03X(Qyovfr5M@VvqXSs|PS4eue>Gm`?dqZ+xiH<33hLC(?R%bEuU76w8R}RlS zf2?OU#p}C&XA^DiJ#3jU3E^q#Dc7VXzeeJ*N=t6U>zAh4#0htQA-OvPEPcHgqj=Kp z3ps^n8`@olH&n^-RL9x@e*+t8;k)yDD=+8uH_p(2bE{6 zu`W->0j2zWgMx8^najrpC72INuV+xMonR{TspG`UsS7~*>3B}U4CD1by?FyTEP#cR Uu5SDh^A$>w1ci&f4@@}s7w@p#zyJUM literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_radial_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_radial_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..39f43a3a9f565ca450fcc7e0bcb976ab40d0f6eb GIT binary patch literal 1913 zcmeHH`BPI@6h80qfIN^bL3Sl90aS#*b66BgfPn0Ttwm``q)=h7Y(@vfkOxH#?ugZ3 zgHVE&u_$z?t+fsW)CxsGM5}_dh`68wB1MV8K$FlP`~#f+)ceal_nvdV@4Mfedn-6G z>kag*^Z>vhJd7O=fT}_iDC()$D)=mbE-RcJm{=&8815*b2Ab~f=dH|*4(xEtl`L~R z5|23siznLzFMYGk6Z{oIB5>xhw(98rYrOGHpFH(uPC3op>0`4oRX?2$<*h># zUf(#i6G=!f4v+k2GTY5O0O9SolL`mM`D>RSk~X6{#&B_O>)hQ-G|mCI89X-Jei}2i zgEedJPI3<;w`g!eyhG8~4HY=7iX@az)5)V4d8a`#AFzhpiIGdkPR?)jWI3U-gh4^J zx2pmDz(yf|!zVSm3;MaaxkD4%XOd*C7+LGGPWkkb9`jeO)SY~ryb#-4dcR0(1aW$K zViuk}HXu(mEkqyORfNMn@h|Ia46CLc=xsj?=Ww~)_1vr2J6F*-1!fC>5{Pt|<^kwv zd((ncVzJc(a#}M29z76?An&WC#k&VSH$!ENxz~Q1yG$`snC#XV4DudDbJr$nElgeI zo$alpN?C+X*aIxI{qRY5~I)Y3%jeHgdQk93qG)PBq-lP!<;qVvZ1UUpg=G z?WX`M4&_v??~jxCeM@2adQs$#aPw=R?Sb2A0{c93N)YJXpV%&SM<{Gnw8cy6Uh1BT zidb-_#Yd)%kRFcJ53xEdMe9=)F|0E7a~M~a}>tL@(V&It!i+!Bq%M!>zt9WE)hgh;L50QvcVc5 zli&5#@Erg`aF*9c5GIRmFhW3eRl2=9!l!HYS1z|E^1ZX70rpZs)N{NuQPc5< zDyOHaH$~*En$X-E`ro>ULoulTJC1o^afdb)$6UP_swBy5-hD>@*cq6*LUYj_oJIY} z5nIks^FY+);^i->K-ObW=c0i=BA3f81h_06qgTw%&h{T?8MPVywikmhMqlun!Zd>3 zD_84#Z#nH_W2iD&T%j>W&7gKcrJ-STE05=^Vfgn5-P%?Q^cM?=SG%vNC{z-{x`ORn z7Hw7g6H}sh^vKZf7Z-Cq1NM2f8f2z!GruVYJPAwLG7Y}tQwCjkw$e;f*wuI0A+HKp zd}@pX$|=)E&f!q*^yiNbkaW*vq)dabs}L6-ObJauIr{>uyT>JDYV<3hYl;T84pqkN@-TEaDjCb+3H=P+}Pa7dpJo zKPj(Z!G#+^=O1ms(+CAB%4z@WP+NIoQ$T*9)`+!Ec8FmW2P0orpH1=!tv3NPkJQ)# zQuPd6GdfGI_nTB1l@^H)?Xpc%;*lW74U#)&XcAlG747sy%0ZF*5;A4ljCyYno~DCe z_Rm9KdX+c`Jd{yaYE%Arm?TpW%Mf042EkKQS3*l$yd_h4JrXh*0-dOURvHXOR3ihi zhA7J@%af<*X2Y}1&zFcxrcFRc+=y+jy@HXIoyTO838i2hbeMWi5MctH<2G8-*bOL) v|NX3N^s+O;%kf@Vv6g1^VgA+s3`OSOj_hb87>vqmm1@%PkQny4AYR!&HyZ}N literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_tangential_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_tangential_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..da8754cb28d29f87ceaf322a4ffec39127fc02bc GIT binary patch literal 2169 zcmeHI`BxKH6uvWwA&H4ZEE0mUghd2|K%!D)2?_`p78OCOJr07R)uSjqRS;y@v@9Yn zF_E&l9jICh78N~$qeu~L2`WXccnD$@GzdZjBnCQ(+8+H2`a|cJdGqGo`+fI*-+M1R zJai$O$zuWlJ1Ed^2>?nCQK0KyJ9!I!0-%e7{Cp#J6!kt{x#UqWH*0ZGq5(4wBvOV= zbH-9?-h|85t+Lv-uEgw|&Dzx$17CQ0lCl3kpLd|$u9l1)vIe%Rw)`fje4!9iE37EthaqB}+QpUG~ua1f?lQ~QwM z7pd6lfK-1Tte%2TKQcC}0FghD5j$PAX3vr0}&FWK_VttE=1cW6??} z!3u!7&f@1@nza3N5ZfaoIbG(Z4~t;L@>f&HT>2{YaP~SL#xTy}DnlXxcD%3hAJ9)1>L5r) z5s^?*s-q!xJcj~dMyB}i=OfpD!zyZEr129a@>T1O-8WnS>fwhv_GLnm3Ah2tH6WqdOhmJwG|& z*n49Uws^0KpJb)0TzR<5j58m~Yz*igeAvEYPa0KU=&J+xvsi=`ZhxK@} zuFd_%aUSc=E$iM7$@RJHykNi_%c&l=&@q@qSzx5I^vofeR;MoM_zazeNpDW=zc5&$ zCGD!y-l?mlQCds@6?5IIgD)@mJ<1XR~m-NnW>X`pJL_Q=j#XM*bHw4VLTtoMNGwx}of4L=7|&61uh zDSt0{?!;~=oy~9gaflL|n3Qx%OK*=JJ=nxnhSNeaoS0SZ;1F-PKJ!kPJ5muqd*PfYvw=pO)N}B0$sD6TWi(3b<~3VL;cRq$I|}> D^$v?m literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_dark_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_dark_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..265602792ffcfea047f1ffaffb67310581008bfd GIT binary patch literal 2143 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_flat_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_flat_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..57146d9fd9688cf94012f069aaf34da8a2b25f47 GIT binary patch literal 8764 zcmeHM2r>l(rF$TVAQCFwKSH`&gbk5UlyEeRfdL8(q$LL;j_x5N zqj81Cp)tcwSLNPLnEV#ii%On zZ}2E1ZgB?AkfnAJhDtCXrvOIg1Sq+7Amkf!Gtf@HY}-3MfR_a)!N|~XU|^u9x5R*4 zT3Q;WnIm#M!E)g<@VOq1gVX&rh?*J`E41p1eF*bN??Oz=Ly88oLzD3JF@S5&MCX;o{I-nxO0m2Jz@1(e;aAq)--j11W`FEKM8XY8r*Gjv_jRw3S* z)nay#7Xg@^Q1>`EIH<0!zPd0vX=p~gEe>(vxJ5@WOiPyfvLmf{MH~*WcyNJKIE`c= z;QetM=*C7dt&kj!ky}WP*pe7Jm&pkpC0MQ@je|Q2NWHna`AV`=KiK=o6#H7D}Q0F)RYe*xjA)NK8x|rEnpo%p=m}klZBed6iAj=ReN0 z0MesWK0u5JK&Rz!M1R>~XRhjRki2W~E2vUmZtT7^v_|yJc9e+*^IY5q0Qde;1(dX~ zus|Rv=Pp9nNTq?qMQACO;&C{*efMlcQUOji`9=g#)I!|vt!%NsbNX3SA^28&_#)qs z*`OdoBqu$t>g*HNJXDK$?sqC+Eqwh;rlh3gz~Ep<^0F+2>Yec=(jlfS+rDnELv2*i zj%fkDMe1}MZg7}d0{C!VgcbR|T;yHeFF!;J5ioql1`L|P`9`i4^&8y24R&S9ufJpT zGy?z%iF6t>y;5kt>tuglq-+QV#%teG&U0n^iKlRZnXljg*Q3oRmXqIgt`I~3V)qYO zKDEwg2l)GjiIxu5n4Ot{@%1?y2+^0T%*!UjHAOW})Gc4pX>6yP+g(JFB|F=lTP7(h$|smVJNT!uDef!6>9|L{;#W7>KQ}%gesw^5@cRR8C6}+J zDSGv+-u?U~lCt_c#^nb3QeOph0c*frh!DZGpMr18=!Q3!wJPY3!F|iN-N?MAxA1kfl%@5U;~B z7uG`9C>4^;Y_F`%wN~1M+{)cut|}Xl801)?)U#P z_OOx#jA`)x!$zG#U+JEmn~Yhkzcf<;Nduwi^BKjvyuZzzhK#IdEw3m1r&iAWwXU_= zJqJ-SoQ;Ls4T+7j)GbtFdzVY$p)j5UNZW8jbF&1?+1uf}h-+iG4RG!hd`4^|em&}o z+djVguI5*JR*&}q#j}3<&*b&Nunr+0UnYn+$GGR;_)dIgqam2+%XzE1({b5(NTT+$ zvUTwDrsi75&>v9MH)YLbHge-@$?J|q!+z-`%LOay*^fT%x8QWH zWqSoRmXuvcC&UbrPJB|RanPVqjP6hN-x z(rvB!liM1~Ksl;(n2ed5-~mcb4ZEln*FG(qWbkF0sN+oR^v!C` zxdRZe{7{#vCN!s^3wSuczb_pjYP)QW@JEi1s%!>4)N%PF-4i-aYh*Zt?_<4g1D{5B zFt5>lw`Xf3wj57-7Q&)35>RBb28gxL^waH8OGChx_E}U*E8mk_NBTNg5ZLwG&(z&w z2-H%o_)3zyz7p@`d%cg>+j~n$&S{|R6?=Y#ZOSWnNAG%1oC{Z(ce)`ULIl`1oeU)| za)0Z6uiD#?PfE9UkAOPUxQX|e7oXK1XYpR?->g{2a?DMfCL$Yx@b$F_*9JgX)mv$4 zV9m7a$D_Z85p_|Catg3sGQHKYG?NJ!7U_SBnD_6KEwk0XZcifBby-3Ne=eMzh1V5A ztuBkrrW?q6BiMPAFOg)X!BSn4r2>y+s`~RjEh(|R00f%(5J0i3rTV2MV9lb6V=(Oa z@*aGYc#eLuDtPJzEhIP4kTOH;FOOVwkP?9@soeRsx)|_1=%)*hsdZ(mj8;vpodUwr zq{X%QV2L$7hNEzxXFd$cVfPBRYp!k$A*~yYHmL2LRcRpQ`+C2iar*9h#iq8|)2*o4 zC){P76%a8$VzoPh(Lm)5penN8^Nt|0W(Nnh-+qmf{i(8tg`{L9DWBvS7PsQQ zPWot@B;Hk6#xP{&r%>zIWGd9TfevP~tcxQ_>=E>9h_G$+#9wZo!|E+n70hnZSa{EX zW-aHKa!n~TPyfi;bd|Z56PQ-NVISC~G)E?#M-YRO-ck*$12pO`x+$`jO_oXK?uz4y zqgIxj_FKi#9_!!A#*8GdabH{@wG^EEP|Mq62+^U*DpcI%WdM{+ojcE0$T{$0*h&U7 zkyAOmlThDrm38o&_R8hIdIO&U z)$kO3C?+AS|LNs+GhJN*urCXZ=PB97q(}mLLr(hsT979$79g(oItK|To!1{V2+s;N zJr6i79CfWy3e_`elC6lT?9OF1O|AS=$u=b%AMexS0CY$}F2&E6}ZD5}96}2(up*@>AgYC|=5SahsILo~0-IBp3hQsBC^D+owyv zj&%VCsb*1xoBJCP)#eYAfNtKTx-U;=H{`Ir8C#~0x20r%+yGKXF$Z-=?SUQ%5>6T} z9$*~<>`fv_HZgYm?j?CfO)pKZY*j*TS>FKmJ@oV(lrC_Mj*ylNO?t^=qgp#Da78>V zX1uu!+TO|r^I`nA>XAHmt~WZbpZ={;#vc=|kl+n6BJ$dJwqFBYZpw~MkW)s6t?gwE z=VlRm^oU!&*>3L^sN`~!a%qdzazVRoW+;xsBJkP^DJ2b#1n(5UN|DUn-1R}A?R;0} z1_RsPUXf1Z!*W~~s>&XM@T@uKD_Cup*98Q!9|z`_HDu1jR-FueJI^#?K(sulS33Yl ztvv<*K9sTuk>;3|ASbK}$Kkt0{YoomC$D~-UPj3@PAO|kL^$;-Z=HDKnL-tn+Fk+V z4QaBHB?N43Y|?I?dv(>Dj)IhqTo4A)@^;J~cOoac)_%?}0VX7%tulL?_7r8(J%0Rq z48VjI*JbBR4YfEicIG<4J}hRrpqp??u#Fy&5@+-aJexwiu^{sB+r zf_R11gaPwip0xfC)TJ{sh1W-&D1y8f*K92RLUB$O%AN25tA+hf3KJX_2RUjh09z(` zeVVK{(hJFb@Hag#jUywnoUB^5<^%#!z9Tt4vS;Z%Q%NRmh|V`WYIY~XXBSwixZCC1f?mt;g%=H)xGbxq@C&O^^-pDuwR+44~;rGBHS zFpmqp`DIC?A!ZRrt1gC|iDr_cQYwn9QWjt%ygH)=^KS+{zyYgp#Q2cp32|L}$|Iff ztvFu{iBD!Up*?h{bi=6$nJEHXah}X#jBQ1yQ;5QW=Zc6-N7eouA}@}FVqZ|vYUO=1 z14n!y|KUCpbV5%Xv$d6_b=0}%-BE~6*zrh@T!^V@L2i*Vm_%Le1tZi|Tr1J;+B_kp z#mrYEX}G(AaIGP6G#7IU-CYni)}c^vRI0~Z%Q__MF%&sGuFlSD$D92zI%gq6CoA0=zHqVS026i?+btvW_)zsW7 z)4;Gk*_+~pKiS{kUs_rkM_J>JaFvcI7DS#I`dfM1-2LcoY%k(66(PzVX9KB~JMuk$ zpzd*^D*PF&>J8-{)9h4ig+i2Oc0FPAv2}e;o^RvN*Cte?O3j_*A-8@r zt1mHasEM5ZwZR*wDC_$CD8l;wdm{+x@ci#d>ju*w)vKaS4$fiW0g~>;wfWl_m6KfK z9RKj<$|5`RRJ)P049%e}x8$OtG2Iv}ZWd9+clDgkl35o+JHB)2iVsswD(!#c_O}EX z|9S3U%p=M2FB^LqW zmjPoXX1@BEZJY2HFLLNfc+6D2?`&)2InEV{igJ{@mxipGq;J}}RCbJ5d~Blx<84Q- zU-@#GrleY+ci91z#T}q=fwb2x!T77`D6oxyTHz0+m#>usGG{<$EzeFd5P{<0x)8D+ z@^**I@ghPcRGm5uXM(N;YAA&boxSiZr_Z%P%AIQN`D`NjLn0&ZFj4zN2O@WKbCbM; zJpEB^e@ON8_H;ww>HuQ5k5PR$dOs#V@)+ka*VNpMe@BvRI=4Ra&YY2G^hHn;WW-a^ zg6y$cWFy1D7+u{BL4_Y?W@fs#gS!GWvV;hIGJ`d(Ibs%m$6G9sYg)@- z^@BbcRJq3LS6F*_+tN03F6zRUKQ$kTU3@}R?`qOyp*-@$>RZ>jmbI=vb_GW6#(>J~ zEN3_!aW~t0kJ(1V6{a|JKSAZ#CqS=wsMo`{>5oc@)$6R1?s+}Rzpl0nA)LZXzuIysgBYrXYub#_&Awh4DV5 z$tn&~vVd|G1buKD-<1l~xGqkiax$@u?##Nyy2pWS)bW6KTHCEU(~|4=`?io0$8I+!8)TuJc7O15iB^`aKD+k=jyCYr^q6Mn9wx|(MxtPcO$eS>UIXkEhE z5^Q2bYKN!!U_fQ3`M}Wg*XhE7V}E%Yfuk@b`}gICh~AOONe1{Od@S8v>p`^>n?^Q8 zRZB@=Y3m89{_i8G*D~xXVG)kyyITKr?Irf;B=PTW;z0Lj=>~QiJck}FpXf!00mnc& zZRDYIR=^Eo&O(CH-0-J|M)|6@A@>lfIUKR$UhBT!Z`6=yO02aX`*6}x(Ro(2;h zCQxjx12)6`D~)Mj+oy-g3vC*!ewDJs&YTf~6FLSAIN6a=??=DrFmz5f_Yo%W0vr~p zfa9`hL6EZXIFUu!|LzJ5lMI4H5l?rZl!y?`y3vlNo!0a1rk&&Z$iH20zmw@VYxb-w zBm5E*TzoJ8gIhM?IpI09%Hls?Q4^nvyg=0dCk>kXVa!7!sm$PS20{}6HOn#a`yC?q zH$zXl{Ztk`UG6eV(2DwTW%3tB8gnkX&rY;YtlBAqP%^wVZ5d{K&4a$ln_BsbQ0U7U z-&3DOPz(9OcLK|lAh6F~Ij~ZWInSHjMBcqrNsyn#jsB2)t$<3A4Tuc4({fdNT20-3 z$GG5abCFS(CJP;Lvi*fU+VK!ME!CJ#`}f5rH4HB{XDQ^+1{dS&iKFV;a!K)P;laVC zk#f13HSHuJ25}h|zn$U?Y4!=$1S+}2m$-5NJ0AZXkG=ZS@tU;+Cxy5QS^Vzj)?i-$ zUPVpKd#lhsDjSd8eM#Bk=d~|tGU0{l^V1xG>a=MTFNN;>Wn!t)(_EKB@O`(CxL-hJ zQwj7SfYwuOfqR?Y^qLmeDI9xnNNS(I^Cfzs5NrJ)NKS{TKx%yX72MS>R9) z(A?bI7flMuI|apVF8<2z7CqJ(X{)+SGcvp$@ZTThY==b&kP~%$7iLodqQ0Bja%C*T zf-HVC(g*Q%-pQRnNsS|a;gY+SAJr!r)^X$h7CY$&Qz|02JU3_QtVCdo`@_jmvb{jm z&2|)@u^7vkcR$I#LHs)|_&=8?Zd9&_8p%CnqYTHGfYA>W9NxC%sjVuKxe{pW@wV{Umj(X{-t5QMjdu=cE`b#8K zf)b9y?T(m$)MzqhdK_GrLqy31Qgjs21U74()cWEz|`H-j9 z5b)q@ZF$(s>H>}oa!8{JPG*nnUJG6++;6|o52fNc#ix~5ue~38wXj%bol^Av?r2c8 zZM4|~w{M=JDs(P8Lj80uY#Vt@ev{(_x&Kb6uHv|)i4`+G;+~fXdQJ}?GOWl4;=;{W z$=RnK(CUJ5{;Dc$6?;Tgxz2HJ97Z^lH+$mK+28<`jk$x+Mw$_=7lEXJp*canvJ4aS zQ}k7k&je25E8mzmlliZ#Rug)P1nZ8>S@|9zd2LWq5Abknd!`BJprNc#qbx9l6qtN_ ziZzmQ3cWH;^5_nmfqqY$9n{Ol>&{o7cwk9bsG+mURERp;fu6R%Nv9%Cl#3%P|vB8!oB9Dy3)PYr^f_`hr(2w`4E zJlrli?P&c+V4rNy^los#NiZ|_H3Fegl~8HQYE^hkwu%edsP{y|)$~uG3;oB5JW!s{ z^{OWmtWxT5+o6qw1TsFAt}ViuU2D`LFXXaS{KI@CGIJBPus9C$?&3tG14$Zu$uhk@ z)_;qYFXY*dTaHdCvsE2s$cDZp^9f#rP0uui_8PEO9RYEwNLg}7(eomOzNZhukzZB2 z%5K^XAvd!*x2tC>Yq3U<9#U9Cf%K6~Q^`Y7`3^ zTkDno$XMSrHc(wmwtmQjNgl}OA}P_a0fLvqG|UbM4Ox=7J}X@OlI-@a6Zl_|ap|ed z(__8WRp-oFD+1PI@aZr_ocwDI+4|&gRl_28;5C}G<-7jeXH9~0*Nx>h zw}$A+qod$vtq_0Jq_ACV*)W1(*6XS9^_Diygf^5JE&yQf zA-$^F54Gfa^vAn)<-j>Ozxxi1kdCa@4l9zol0v$K_(<_cM@ox-wzoc9Ezku#ZVKJ8 z3p37$>Ct=@_24TXsGOO#csVo39JyCG*M0|7^)lr>-yz5~9eHS8E`Sgv1iFa;;$90y zhfU}=cHWmb#3WYhsjus5aJHTwkW>P-tg{OmmphhxGvCV>cT4p9;U+W)1rj_iixVFq z)O*NbEO1bb%X8XN=&Kd$2Av7=s5M3-@L~UG>kVI1x|UrljXfx&V2bK-n;kSJU)Lt zeVx=RW%gGn$rlp??Wo`bVNBci!iSMDH-X>ZD$Kr=k^Sn_tp91rvGM{6FB?}h>RSR- zzPzak^)OcY0#;uW`5^tk6ihJz6P<5^djt2*IvxFkgO8{>nJFduKdv;GMd!gF1Z^SV zSTLw#JgT->lB;G?df<+54e&4y3-;?bKYnA`iRN46zkU80?JlR6K;~0d1B~yl& zM)F}XBvuJBkKqofF2F(aI=8E2XRm{GdDpRBcD9MRtz%XcY{~Jj;hCBhb^$5Q#EPh+ zQeHx6ED8>oc!wq~OS$Xzi)uc%EVP2|TstX^e6MdV$V+=`?rndd~^tOG;_U}Bosp=>#PpSq6?h(*1+wHzi zwm<7JmnX1XY!U>15C1p)ED9wof7K|}8rlHSSt1LtwrhQ-UbO^kQk=BjXa1atUCMqY zy7?HwjgO~mtD~Y9XhO2}O|oHpfgC%Uk7MmIFRCcp3|xS}@hbu3X?(Br4riiNBb)j z=$(n%7h$$xi|-Yx+#*6k%)IAZ8-!3(CX5$*#v_A!jBA7KBSi-eE($YQHc&3xpZ**t zr#k!*0felcped0ys(IUgpYd}i^kjcRt!tpnUap$qj^8lUTy&utTxQU%I zNWwFd4(t1C6uc{>Y1#f7a{^sk`x&+(DmW@i;G7QCXdK+JYFJ3=hJ*i8f693RImjOL zqJ+NE5&`z`G<2Zq|^_Z?pS4^}#=DF6Tf literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_flat_elevated_none_FishEyeCameras.png b/tests/data/test_simple_sphere_light_flat_elevated_none_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..ef564031a8394cf23144096a1c4c200a36868104 GIT binary patch literal 8702 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_flat_none_FishEyeCameras.png b/tests/data/test_simple_sphere_light_flat_none_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..457c16abe10ec24b41fc8de58a454ddfda412bc8 GIT binary patch literal 13733 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_gouraud_FishEyeCameras.png b/tests/data/test_simple_sphere_light_gouraud_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1c86c36a012e3be753b27656b02dbd1ca07e8b GIT binary patch literal 8128 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_gouraud_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_gouraud_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..f684668c0b3c47c0778f2ac908ee5657f3c0fd73 GIT binary patch literal 6141 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_gouraud_elevated_none_FishEyeCameras.png b/tests/data/test_simple_sphere_light_gouraud_elevated_none_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8d29d75fc92ead689de056b89165b2c1a10b1e GIT binary patch literal 5953 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 G{C@$8lf}9K literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_gouraud_none_FishEyeCameras.png b/tests/data/test_simple_sphere_light_gouraud_none_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..64c1e70aa94bbd9e01fd57b790e8bf0e642fa718 GIT binary patch literal 9322 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..42329dca845bfdcd209896511c16b3dfb3eb9785 GIT binary patch literal 10823 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..57146d9fd9688cf94012f069aaf34da8a2b25f47 GIT binary patch literal 8764 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5c8512cc715c7be6a745f0656df6363f04b8ac GIT binary patch literal 13040 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 H$K(G4l9r9H literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_radial_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_radial_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..edb0032f28850e95475d65b8498ae4a8b08ea532 GIT binary patch literal 10340 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_radial_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_radial_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..42329dca845bfdcd209896511c16b3dfb3eb9785 GIT binary patch literal 10823 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_tangential_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_tangential_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..a60ed0db1b68f18c08bd41d3c8fb557a6179505b GIT binary patch literal 14251 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 RV)?J1Cz|??tJGh;`+r^tvYP+^ literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_flat_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_flat_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..965af19609a90c58a716a0b636d1760eba78c868 GIT binary patch literal 14199 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 a`&igkq6DZK;^6X+I0Idid)0UBqy8Vi6Lr-9 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1c86c36a012e3be753b27656b02dbd1ca07e8b GIT binary patch literal 8128 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..f684668c0b3c47c0778f2ac908ee5657f3c0fd73 GIT binary patch literal 6141 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..6858e7d4eaa4017ad281c2221eb17d2143e3b212 GIT binary patch literal 9015 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

Y6xGS4vAxOGV`wvlbrG;W%z6I%M# z68uLJ-bq8zQn7Qy!?;d&LoeiELPYO6NO{-o>;@+!~18S)JntjUFsKkiEOF?eij z()x-prl7wUfKS!(kw(X#QHeB@=|dU%tDUIufwj33O?HA!)a3cKbA?Ts#EOS7Cs(+f z(4UfLZ3rtGp{Ir}n%-MG)tTSEeA^5AW>?Yw2j?Ge*bmb9WaO;-DIj$dYOPTwCcK4| zkW=CFJZJ^eK{CW^72dHF8vuc8e9>fKPERz*5upg32wXHtO_l*&W@1n~mzfXp01(rW$rJQ5!;;|=tH(YC@oBVB%l-F@q z=WN)_DtDFZSRs{sQ+?&4=*V6-5$1RfYU+YowUVU~>J_VJ9cquZA?R3+$W!N#^n&}6 z_tX6KSte-eg1byQ3_JT})m3u8-WM@rT>l+rhO|}ni_=JHDSNdM$KTV_1ChnJsKe1r zCgZ}xA!*`pG&SY0zVl%t8qcgqq~3y-(jBK`C?mnk({Ub{Hx zqf^cjgH2IipFHxE+xb*HO|q}{7_sh{_k-d0g%HJK-J8em6v&Qgs)~N$UtGh^%=m^$9sJ=S7n728fW^Lg2vnDNzTM*o`<#Ai$` z4p*EL()>0FVMtQsPGG2{eBUnHt(4&eW31MExhO@c4`pyUKi8LfQ!C&oi*ON1F-$l{ zoXPwzDZV3vX_nc%OPjov8B@N?xz{}=mGw)yek!jmWg$`R*HSmERowVMpoZ>zM;YRy zbn>}OT)!F)!m0;=>J(O4Id7x36Vmf{xDB?Fs=r2k2ZxwZoBH@~`Ypq2pbNAjU4!F~ zV0}(z>b1=?wQt&AYa zx9ghPWY!J`{0#ib>G8mVUeQ7r6E|=c#d533tGCq%>7GwnfnbW9cuxCUC!S(GDHD}$ zvGx3IJKO<~JBF@ZtUwm6SkTTy+ljV6zEk*U1a@3)PqoC$xD8_~;ssNH5OvTkY-^79>u zdlb!mS)4Ix>L+b9Qv80bL%x(tnE{un?*eA9z!U?uNZJGP=x^ z%E_LGqBzy1&+4|G3iJJq=x8}tYd$52+w*ES;4&m1~1 zYB=#lZeSSsRi~pstTzc18_DCwThSQ|lQa6^M|W4lJc7CmVJfAu!A8|zao0xDlm9TXdHOdpuse0)YmvR9))2Ev)ZKJfwt3e->pSjhhhOWab&*$((Rclp+PG3@r zmGX*qo{U+)(Z(??=L>?mBMH#1^woJ?ae-^IDa4l;17*~RTy z!-J6t60|-|WtUvR)S|d}xipvktW=vSOP=CLCHENwT9BFSiR%MT6$1@$s0N<BZqE%9pZWwL5=`dEmz|17SV3d@jp0KW;hjgXShBW+zUd3F|s30D1=!l5YDF8+P z0U9JN`HzaA^Vxl^&JHuKPW#g}Afo>QUE3LL2FYrVS;Lp%v{z3JIn{-P ziegDOdk6gkv+@Lgm4MZEcipUjsnTTD^-FMCQZ%Iho*T(4V~e}?dQpUuVBb2vjT^E7 z*9BQ{Sgmzs1n5;t0_m<#Sch7h*zske3E#9A`}jK_(^#Qc*4cjvc*kW_B`YEv;Hz+?#>iazM7jQ3!{Tp3+@n`%2~O~ zd(dKN+Zic^l%2x5D)pK#490BRT7(Kq49cYbFROYlc{&*@3@~gYPvombQ63$e?4|Y}YA%Ma<+uQriVd6JU8HbZ zlaUzwbZE@yXs3(78Y)d!v$!z!%q-g&2WuJYHeYlRj{jgHV(rN+Fml(EIKmbdIWLgJ zg(ct-fR69!))3E9BVx;@NZ9lLHPHJmi;G<S?82wK}52U-%In!Fb$G3>5<4h-x z10!fF(~;-I9wq3qE#ahD1IPdA9}xeqOu{o6aze!g*RMYqC_ePb(){xI^0V%7{{s)E B?|J|L literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_radial_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_radial_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..3b0feb67e112ec34f9b91c67b17f4f8e63dace6c GIT binary patch literal 7331 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_radial_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_radial_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1c86c36a012e3be753b27656b02dbd1ca07e8b GIT binary patch literal 8128 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 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_tangential_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_tangential_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..e3331ddf41a43ac44b0e4a073d8f7bc4848bd553 GIT binary patch literal 9887 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 BL1q8| literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_gouraud_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_gouraud_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..800f05ad83bf1d492c21af6f0cd17b43df583ab5 GIT binary patch literal 10534 zcmeIYS6EZo7dD=R5<&|DGAbZN5mbsu5kVk9M^UMYg3^Ktf*`$wo&bZ$prTZ121J3O z4=wb7SSV@&2&f?tK)Upjp7THc{@35#clqs$lk?=+XP>>+dDpw&z1B{#v$2p6l@o

q`74yHw{1>}EsRh)CVQ{?NcI^5~0s*&xjawM|D8{gX z(bu?(7N{tI&(j_YIKn@@vo4Lke;M(+@Amd~0I(N;VU%>cW}Cwlo=hf_Sox&L_h}-GOECIrK7SqHXV{uWa{o0LK$)4*oz!vv}oBQdrAJa&?&ZMv`qy*yvj2_j+oJnnJZV=@8N8`#@NvRx9xo^9|;jsxA zU>8H;8sX0#h6V;~KGz3URhWdIqs zk?0qVdc-aRTBbD zlid0cNEyQEON5T}Mu}5*sY5i+Sc66Q{zrbbe{h(avxX$rXR#R9Kr;mW3Hw(AIr}WD zim@&}U?y|EtDj9yQUfwIu<+If-yz!_h|7@=ma5PWBU@Wr5;K+5a+>SR*iOj@+MnfB z0Uo+Nc9p0MM8#!aFZr>YW^NuLAr8IrG6)m9JDP)uTk?9}f?E%Wg}96=aeI_BWr6x> zLPr<&yR8O0fUqjL>=0&Y+`mW~yiB!ie9&BV>o6Y-=KA`oWzDlJ_DXFIj)=_B8Wf0& ziQ#Tc_kLvvIKF{zJdD}yV zc^OhW1rowK+>>x5#8j^sV3x1DY~x(rWZZHgib_g3f^~wt+PKMZogxEODYD2`Ncx1) zT}bT&k;Gdadq5bvM!rKVmEXZ8^x%~z9I?Z$t$v*K;qIB=6vJ4fIfA}nGMS@}m{qea z&_}I)TeWu~)a3T~cp5x1A|e8q#GP6jpRGpX#n`ig}nsq z$b#^4l5ZHzvyEBj>#m)2l9-O!CQ(%$MGIW6PHXnBvl?;v2vJm29J}NysiG-1s`Pv+ zD|WzdO!xUYDaK{QV$-b>oZ8OEKXCs!lbma`f6g+Wvu&~Do@A%t?jI`0rnKYy>K&R* z7f`Hz+lwfeOP=6Hh2{`Wi*tQ_b%c$`xv}zZ@jMVd=iQ4sxTcpMb|h@8ssH*{ImMec z92{>P7lu4gbD6xed$R;rxrVv8XN6Lp;!c@;5*$crLH&>|&-Tnt@_fm!*Kv*g@mc7^ zlxJjkvDCZHA%Tda;X^1?4b?~NBM2G0*oc7UWa49ncJ}nt^2zQhdz0in%uC|?+1Xhf z$e#puE?vqxecU~F+n%?(_cL~)LdH~2fYj6LE6L3cw-0SLe86OG-rYS{_eO(~Hy!fs zG+cr25h#aydUA4PWJGu5l>OfQ3*2R$?!DWs3bs=w{!xx|P3943QKlQybp0sE$#1&c=5gpq(wQ06{+Bs?FU@!wV=0%q0$Io#)=++|`^z zHdL()=0};KP_?G7o8Wbmq!1#n^<&4&5c_kjaPVcra=c1Lc+EV%*z#3EHs7x-F8s(= z4YT3Ud)GD?)d7ei6Pjcw?EWd*mt^5&>;f*9NdRGPzW}i*Ik>g;pp55n0wuFQ#&f_d zN0L{4F*ca9rTrPCK61O*=4cVFZU^If`eHm~brHE`L6pig zd7*n*9zl2D&UHelGq&7Hx52&sVG6C8r>C`c=GWStsHUq^%TkTu(KFtGk#~UADgJ6z z;rW+>f$P~bwj0rIo+Y}Ix9xz|(v%3}>ny}DTDM2FU1;;arm^*?2Nz*22n1bdv6)wS zyK{6IV<_U_*08EXesi#bTcGfVk z*==s5z`f?^q#u)b1zn;Nw>S(fg!tRQS}^^&sQv-+o%T7ufZ^OJX2hHqF6tIm#9@0{nzC!0@ zvF=ZKYdJAQ^=b=FM9ghWTM`r`_6ZV6LOtt6t>Vo1U+vDvNmMA7wy04HRF#8 zxmf$;%32xcdg&=Mec`~ue@1H58EF7BZKORxMY_9i`3v{f>1c!Z1gooWqMIB|U?xG0 zC5hd%Bgm(Iyc4{e2ON(;Cko%Nl=j8goaASoGzw&@pS{LIZN?5}(I)%7WxY>r#`fqV z=!%~Ho22N=W`Prao9adb#-Xxn-fAK>!UsB!Q=YkoeX-LSFK&p$RD1@ud}=*s>u07a zL|j)t@U-UEJH>f0s~GaanoVUPxCdb7cb?j&-^nyZ90{C!F(i zt4y5hw#cqc`RpXW@KL?A5%N2l}i8^ST79+R4kkV{a+%@0=YZvXH!=e({Z}y3h>(5c@7=Jqf>7KaZ9<)QKfxRC)K|$h}y`T1UEMP5S)U$v>Eq@^y zSJv=8#j#h-!aoBZ*i_lQb)#s^E^x(;h-o`}KJcn^cjw|5ZlG>*RU*{-@4?mxS2KgC zH#fRQaUKwQ-vM-Bd9~N9RvL~Zl>zZzUs^i;VhQ6ng#9S+RPbp^{qFPrb=Hh+=?yo3 zCG|wB3*{Z6ngo@$X|qMRX53DRQj?^jWIAN+oKZ$u74Xjb?MVJV{kgwn1YVbs`5hEU zcgkHzZeip6!)3uhBM{tuR*MRqgzYzlx*WX`>f*)ev3nMw(ehLYT|IMWX9uOVdj1rT zHg$-Pw!1C2_@rqWRgEZ$94EtN8c>N@wB%9pi(JM*g&SM{7Moom?w8e5${gHG4vQXT zlU;U5Hu2tVCxQd%*hVJEx9M|5Ex;*#pHAl~Ys3oXcR1|F#QYH;E~AR4rm6#i&M(6t ztPe}aGbRR~r2WJf&)9ac301JHLGx|kQqmQ5yyb>tm}NVge8PwuU8pZ5SQ~SM(bpYt zPn&YO#SwY`lE%(L2~J^iyAc0=7{R2Hc+?&;^pJG-ldxo5Kyc9dQ8nPY;Y;nZ(A3i< z$@@Yj({B{D+Mv6ne!kMN@seVGX!{IUTJaCc)g6lR+v);xF>&O_?B<6FM6%*@1$yD5 zUz<9?Stq2*w$;P*sBGIXh`V+R5w@}^@U#-$UlE0!+YzM5Ea2}6Lv+KceYR2C6{Bly z&y=`y_(!upxe5q+_RL{^7VfQQ=wJ#IKQ@>w97opTU&p*W2yLNoJW&(_m5mt0t zr^7bR8#%IWcIrQ`I}mqoDJJ~@nplczyoLQANDPQs>n%Jglg}VcvCrsSfweq|;FEg@ zu>`5>Ck8&ZAs2q|Wh4NP3}EHqr^*C_@dA-XKJHG4vPz2=Y9lQ;>5 zf78{^ismLQDM*dGeUTFosX$jJ=e!hY+}+sNFvM*evQ|};p%YdL3}@dqT?y*!*@D#O z5F>YeiN{X`LouV(u=irsj|c|^Cx;Mpm(uvjo6m%wPOXp%aJS6zzn`zu)mv{cXw|zp z8Ot4e{?2R3o#0+BlKtzHl{g_&TqxvE++{nh!?O%Bw>9tdry2pBT1Fo1JMF}xcq z;^=h2K>5)&KsFCxU9-~N@!Fdz6xoLro6!&S-z?)i9hIn3(_(J>L8jf|+4VkY&j* z(fL2-)RnEdzZ}En_WrGAdW7HgpFk{L1X^S$v`BZ>U?eaJU?ex;p?afJK-;q+Do!$q z@6lpw!`7UQ2A!MCEZ%SP7eEuHZ8`D~=3r z25YcCeg<@VJmz5sMdw8j^m{Y;Xu*rl?IBcb{?GQ^5I>;EljfB1U>8^TEHW}s2X2YB z_yB1Rc?A3-^EH7J-_jxevsG=lE`G*$vfVT%YZO;%iO#kEqm1mqD;t&7+4l)tVJfnZ zqn#b|w?};9pGv9}+yqkW--hzaq92SpTIb-?Q*_K$&)Z>N+R8fYB=0HM@=bA}6(0Q?MwQc`{cXJ{biHgN^C)anU!IpdIcq zPZ;jAR(%@dm{ zzFqU$0$qz_h~QZxH`qYO)h#Brq3;viGeNOC^?B{GD)Cpi&`kCN&^0bye!K$#=D>pth4N1w<1SPjL+4T7=Bb}ySm};14Vh0__=JM1 zih-@a9U4tyMECT^9|E6iiv_Hj)E`Nj7e_V@7Y1zEHu9WL87@i{+=Pkl-7>9PZU{MA zH0Ik5@6dc8W=`4=Bk61vN3N*iqsRZDmDCQ5(8Us64F^Yln1;1yfFkCZ@a)tSHo|uxo zS#_gm%O}M9Ib`jtoq&!^S7IRH`)KIFpWnN!Hg{4*28nY(I^?=wr6oRh(I9qo< z4=`69@OYl05ZIv+$dk5P`Ip`|xCB=byDFpGT8?4EDK$B!QaVpp6u2hBm!cNjc1soTH{&o3Sh zVZALrXQvB)=Nj*vg`eqsk1^k^baDLPRiCe-_Ct`0Nm+{Z2W8b|!?BN0Y&nZi#SNYE zJqCYwe7Z{7E=Dn3UY!H&@e0rqkKJD_GaS`Yi2PxUsMGaic4Y#&MB66+*B!3*oo_-` zIur6yj#&AVzZ`0mZnwL{rhY=k``Oyem%Nu3?>v#4vOPrF{d4r%wOrziz-e*xOHw-Z z?6r@5jT7xnNiBzr8=qmiGNdVg@fIR>P;Rj0-=RtaRmM`z_Qgf$#5F$Ld1mUzXFxKr zv~!9l^kP}k`A{a^5trcyv`pg$bkO&bgNjRCz91owv++)@fA3BYBLXiRaE*dsRi54n z5l9Sr&#F3wABsco-oB@*ye6ZNvkq5S7Yrq3reG&d38Nnh1`1Gbj`*ni6CbR;X1{G2 zo1g{1lKT3OOZ8lcB^oZ~or}GH$YbMnrC6@MlKPjyIn<=u(W0~0_)||Uq7qL~!Z~B4 z(a#Cz?1GtwtudgKoHzlRqyGKWa=4JLk#c0CSRtfs2jYM7AW8Q<0Zf0ikyGYzrTVAF z_i7balbm{3Y}<{Xgh_P0RAcP7WfP(Gc2Biq2f?NJJ&;Vy5A$6M((*1JHIidH_Z+)r zk}@u6y|r}Cj?q+I=7jkx#wmS>lZsqu-Q?k2 zE&WQw%rYu}#F~%p=$$RZubv}nP*&ZKrU|C2;w#yEL{i~#QX{`NXV82i?WhK7G`Z)4 zdNw}6{=e8}XL1TL%}`9T^wU`Nh;C+n#?d0H$s}zA{q&YKCpgg~@^(3EN`gmI!>!mQ zIxO4C^;r;y-bs-z7|_FK1GtAI=J0FJy}lr>UxpaUSWK?o>o-0hM(oM|@SoZD*M3PP zk1HZ$q4^8&yO<8bvc0*Q$Z&U?8ZatoWDtiva7T*yR1*4FH)=3W1_J@&S5Ur_tA6ftweG0eM1v)6ZD zv?CL<_KV_rB-=6O8&6bAa4xB-&Wt(BglqDRVCdZ3f_JFJA?X930S`nuJMdO{O#$a1 z-qrEQ`tUA+mQ91=!-}(>4Ah+OIu40~5Wg-n*PC;-PkmfJvk&hi#+tML!5>A+c6fNt zTA_+|!^8`T%qa)ltFZDrrX#BO{QEZ`2~HMW@wd7zlx_uPNZV2Bs^eaz#OO3;(0{^r z2@S7sjLd8c>JPU&MV7FZ_+=e5cdAL&Z;&TkNX(->z1J1{{G+DcKRIag= zci`qIzOj>$J8^=oNyYxb>j$?zwbXyod?kZMy4Y^!Z_lI)%!KalF8~6DOwAr4?vD+ShI_(#Lm-OUtWSRE! zDb2&Sb){Lt6=Jk5CtsDmYt`5s>BV7zmN&&_(etFJQo+mz&lHbCv#20ALT(f-e;75s zJfB1>`O)-QZ(MXwbd*2J+Do-JaDC=E`Ij=dlUC zyUzxaS>k!?1wx?k`d;wjNaPU^omD^BmHy#N(iA(C`zw}GOhIuoF2eX@W4N=cl8Lw+ zpT>76Rr(X>V+tt+(dmX&Xc34+V9-twyK)7MRWXuu0e8Pi4l2h0dB`}RQrFJYs`H5|H~X|NAw9A! z3*+qi$|E=_U9ns1MkU(3A(R*-b!SUsn}=T;@YqI;ywn;e$bYq27ksCY9ChDwQ=R#1 zRIz({q}RC^9=N|*rO0@nf;enljyC!sZvG3I238mjAx{Igt>Vmm)x-96Y8hF{uW&0# zqlayCPb45=M@{i(uldyl5I$pJ7X_?+9Y@E!BTY)cv_^<)^(q0E+9D&R`B6;9$h{F> zSEVoX2&A+RGnNUJ)5k>&Y5R1qZ!c-T8yvY&Abn3GWxd9Ki@~|Sou$n8jfkOdP`ysl+4?=ajQrB+hrFgBR2psM%=RA6{);0 z{Co8X;A}&x6=R8`x1LzjM0;IO$|JHb{Q2uPHl^RqR2zDi5lG|PBj8&5;JZLM-!!w< zcy8ZjI7kCIt2lc7W_$DrJ((T4U0|5Xh-{xBV6hGhEr#qL|6GA=AC$R_Er;7#1B3NY zh^{K0Q_s!ur^y`dQhDcOF2}~|!#!#Q&b$%Lyew?-F6H%){rx9D`f+23nj=TP3b^M< zQ(V8fNg*xaofMa%|x@y5HHcfJF2W31!k$X$(Zg&XvD4#+A_ zYta=XUC~c|*EzQm+BR3T^{?M}aa-?lw5ylYneTf9v6!C98O3hzUO?IuA7SbN+L21L z3)}@lC~}`0Pi0Wm_s`5N&Eq2PZLKoU!RkH#-B4P~o=sXKf;?WKUiWK5Yfu<+2@Gia z(dYPO5uZu~uGO5LdK$p?Fhm(J(E;m8%>>@NDFHu(M_4)teOd;NSU$9&@*eK|~EHN3C#V z#%Cb4*)Op$N5k27Y>qate6I35Wfj`U7uE-iY>@Pt8~Ocn>YgJRNZX5}2#5?XxFFs4PYw1i`U@OX$GG$!|DD!NO8#F10~kNWFOn& zY!fF2mJm(TEem8O&m1k}#$Tdg2goqX3_5Dy|#fOG9j=T~&FPYgp{}$9~nVq1&hi@*30;#G~^4mAo`kD>wK)T%`a%C#)3~!uG9CuTc2^i8N7Wt z;Cx3hn4t z=_O2dMvr&uv@`{>U5XOz@lF{rH99P>usXODR%pu4f#ELs!jLW7JZ~v)NE1!cWuGJqIz^w|bgDah5b{D%;FzP^Z3ud2Vc!+>Nh=eLMp--ERZ5Yg)Noif+6a5A`*{lbBoY3sN~lTkUK@-y zV{6C`@Z$OMLyQr0PwE_gSNo4#1sz8bxhn#>R?iUZGLNK@d_etAoRc5!4Nm(CEMhYO zI=z}FCLu(02)9TKpd!wEBPgg+H`N8qddQjx5UD19`KcvI1*QY6=!dL z2)L@RT>T6kNrZZRhMW2xa5vU?x4P)R3%p~YHun{|!fs-<*&$%wxboUO{tVP5^nmin zPg0yZT^baeG}IIq!#K$f0W;jbdU*nBZ7_?AiO#+c561-$4mAVM=W&K`)v~yM_%0cO z8=~)xl)odq4OpPc04wYZ;jnZ+Ab2h;4_M~A5Ck`jSA)Bk3i1B$NTKTVqG(_KNeNtr zS*tFBK6;{7#_Sv7MI|_MsM!lyNl6%{oJG>EmB0-VRx%)N4GxmWaxB_mIV*xLZAyWG zQY~j$>I6vhSnU7*>VYhyq95`vUhdN$LL4ZR)NlMewrNgp5zH*$V5)&f{0RXBeHZ*V zOPl!0CxW4bJSo*gk0spU9j{Ve)!F^LR`4iIghRCRE7j zzI%<7{vozA)hZ48Nf!5aoEsE@|EJ|}Xw02OI~DI&wmSL{9n)=##f3K+5bxzZ;inj7 zhuCkf1ng@zfv|aN4YRXw;TdGHyfog@RGpiR z@#hF$hnX})eb6Jp;~n7(H1}UZe`@mkShrIMyyfM43583kZ`+1UB5NNdwUC{ap@9-1 z{mN256N}NLBWv5G;6X0xQa@eUoM31PqkpI&ApeTFc?mL6C}W>+6ZwDXz})|Fm~Kxl Zih6hNr>u=r-|tSBFWCH5bIv{C{{tA#tZx7S literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..d83481f7a9f4ebf3f2c1d3de03804ef7905019d9 GIT binary patch literal 8151 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 L`KR=}OVob>s0(DG literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..c04471252953698d1fe5d47aff9970c9cacb4158 GIT binary patch literal 6073 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 L`KR=}OVob>s0(DG literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f3136947fed8fa277e149d4efe6bc2883d7d56 GIT binary patch literal 8933 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 Phoz%VZik*72u%AQHS2d1 literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_radial_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_radial_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..5554904d7746938e2f2206bbde95d188637c0b4b GIT binary patch literal 7386 zcmeHMi91wn*grD{$uc5Y5>rG-c(aEgkrt*xiY#x7EZK^TF=i&-;*CNoj5O0?DQl6n zF}$`)vKF$8$U22#F#GvV-}i5P&o$RI=bCdr_j8`-+;iW*-|znSl-p6+t!i5V0FXWA za^wsEz@bYxu;tHJyqaSf0H{AZcErI0`{eid=*_9R8lYEB`;};6*I{1KA*qZtD$O=J z`uyX29}7ahB&*q{y>Z?2?tidf#FK^`{QrPXV6ti~VI9^iyGt&4f#q9R&pH~2V_|Iw zpECbb&Hy-NFH`7@<=DpYaWMOOGdsetUAVv)o4Ia9=~;!*Ri#K2Lnpy_cr9ajd1>ip zqwh8zvrbc&gi^e4AiHa3mBos(qZnnU;+rwLuoW$6k;cYGApvc+!PFsEd`0I0Qxo=| z5bm{;csn8<{{bO5q5z-aWbXZ#u)mk@yr?<>ote7g^2eE+I?@?AI99nm-|H*(W_$gGtNB z;FF`rzCQIUA)aPys*Ae6I<}m+VSiAzSehjZxzTbj0YxIaoDo&bI=31j|1fFM>V=-< zyzEMu3xJo#U@&~4=*N%0L3G?Z-JGeB5`MZDc!T9)A7O)fs!ztK*iw3ymzSa4&CFaG zU`mEUvuLe9RyZ8XuXu@_qUkU&^A6E4N6vHtS=qG@ zt)imhI#8DC;8ZuW(b-A6Q+y_~0DHurzS=J-zDSZD){P6A1_;_SzAVdW|&>ta8F@FVa^ zoxAgByXmT-4gbLv@H3(^-1^iwG9}ajS{((eq@j4}9t3g}NJc~oRhl131w@`XwWeWW zMH;m{Lsd-uoRSXw@N1YOp1{T=MbWlw(&_@CA zAZa+FZVRr*(pZjucRzIvf*{UXbJvz zOKftK>|WH_kOQk@2JE@hcITCa5!T|x6K@Z|TrtzH-GmVik#@fQ&v&p{tT&A1 zfyHM@x?66KH=Cb2j%MX#C*Zabj~MYbYtm{lM=kTNPfZ6eUEUx~w`y3mI4qEhnBdAv z!0~-d7hwMeo6Y8M&h>1ZuO7a-OFjO_TUB=6ZnG^TsU5&#tQn;vdGOGe$+q~_5^w(% zApzuYIBa(H`sU|lj8sbd20y`e@sLW_)bMv{YE>)X<9X|Pl(48++)NkxY*BLmcdC_H z@Z^>J!`JpuLM|EzZns)Z9uN!2eZ?6_<+D5}v&`V0q(1uawbM#L{aw!8VT(oWOar;5 z`qoK>b!$&|UHjcBN^IaRIg-dCZV39JvADw3?@rnzf{1X3N_1uJ*5M zpCl4+QMIE5#3B}HWZ<7C8i2HEC!sR_m8 zP7LHeKwl^s%awDkt!|z0ah3oi;(-&%#I+(PU8oVQ1kPA9kSHe{nGHZT#T{!$%;&SauwJkWkVO+9iA1zjb*P^Rgh$FGO9 zr&0O*_R@w0 zo{%(aPBYWRNgnk5r%wK*V)GVTAh4|)#M<1fG1=L+`Jc<~dGfYNEI(6=KD#|p!~Wov z9mqul6*80}sm8{}a(mt*cE7?F)R(Y;hHw>X91xYFIr8>?U#;cskrQ6{Bf^P=(BoAx z(^=3yRiTKq0D41P-H6>5JCRg_iauh9)nxNd1bckzoE2>YLrmTjBD zjz_`^l_MVjdr{HXy;Q%pUwdE2?4?cxB~>x6bWeOOu?Ter^(2eo+p>U^mpshDdCbnw z-`+A4CN2WhdXVFSqkJ88jIycf2Ay;jUY5-MJ(&H5L-x3pvlk|x`xxsTvuyNM~Wp&DU2irgpi zkT%z_5rw*G&s&%x3%}IG$+`HC5a^rknFwv50as!>xAU|4B}qn1g4DkIFRO0ZP3RQ2 zUW?g7d+V9tGQCXx%fj>+5Z!%%_t>0i`=$MK>G0|&w`Ltr>WHv3NQArzp9&q0zmV6| zR5162(n?g1RuTiE8e@#VNSK%s_yI5)wyR--P??;mUb%F{`M7G^D%a!9 z{au31Xj`Xbs*ut7VTUZlDg8DznM0kMWB4wtE;XBm%YHMm5KK6a0}z5vhtVIA`wn9& z{<7bD;RX1`h``}sSSvpGzq(A((5jLL*%3~a0oOvG9Rg_^NmcR-){Q`UXH^KLBTHFdP@ucuZ+WH<5 z_h}L(;&bh*+F!pz1X`Jy3Jrqq)BDKlg}(b~2}GQ(~Vr zbXLtLeVcjhMD%@VRwTJ3S$GUdxDf>7oFeyF)9LPj08`f0N?TU{9)$L{(ehc(17E$c;9!I=Qm^$Txlbz;HAp7`T zk&|4|68_~$G=B(-rfKfI&zEhPl>Mm~2qobCVcIxj^?~nEVyT_`b=V;+)k6_O!IE1#}eQrM;2I=RK2VOqsk@(Azx_LT^3%r`4o`#R zfbCY$40kr>BPz`1-qx21OdP^ymgxe_jiPVMi?&vvs`OY^>j;W@`Go(Q&mv@|@J##9trL5=pT7w1Gp1UqN4zwb)0T<<2)1+p9M|m!QK?k4 z6IXlux0xq6U>J~vccRW7enyE8j5JUH9Lv*jaisF37y-{r(_5Q_@3?Bmor|`14W{}j zg||-UCM0B?NSM*!IJy9)Z9j~V`Cc8&5!=#Hl>e855EtsB=kWc1lJ>}&8ns`0LL(%d z=jLvh*E#7-Z=zuGuY3xbYRjo-+M^lQ4!-SKDw+?`Zok(wfCuqud(WM4ELQ7M*Ypc< zt?}FVn9v*-pjxS=Kn~Mghkn^yvmy?`sTyvhan?tzL-M3l(Zi;l`R}e3#(ytcCl%*#0pVW^v2Z-(w{J|30KSu(~~)@ z()yqP6d^ughcjuRPmEgTCELT4>Tc^TJ-oeQkm8BnwLeeh{_WXLf5y*8^mFPrB3F{S z!P$kh3;%E)S@#b4XYr6wlCI$e7H6KawEcbiX(o2Oy885(z z>X`V2^4du(Ckv_*Uo9NXv;tWuW1psdYBf=#aWx0fwq*nMm}TG8JFs%A%&(Vr#~|&6 z$>*Ug+ByA3&Y<1ATmQ(7h^Q_exp@d5U!iBq-$paMdTDd<$T|97Skb-r6*`rwuXR*-Kp1VmByFHSGt9sL4TZ@=hp zjWdx=v@o1iV5?%TA?&NQsA=&f}=08-S`J16wH-8X}J=jF^p@3a@}rJ~M$>y!^_D&R)@N(GrGNqALE zl-h|Fx*9GVSOQQwFyrZHYcrxYZHprf^;IUMJH%O3#Hd3IHeOgiI^z_LPf2Q z$)L;wK;^;rN01(Ky&kGl*1$}rHEr*fMyL6nB*IgfMPikmGZf?`!gFiJuN_{B>g-xz&vLC`k8!VNTVm+5=ofvphRAcCU@*+U^GA@RD`!e`3&mW8B)W(fO5WvR z3g+Eg5>&KL`wcxCQQD`mJ^p~50mE|{o9JlxbVK8_$mb|HF=xJZBonu$-g`(qsQ(XL zRP1duDix{z2oy6fu1rVt)|utgCuAzRrx(K9(T0BhQ7aDkW!gmJcRgOHs47tdNGoSK!YzNK$7QQe|QSL>P#q&ATJojpBma6Dih00vjCMn%R62WeVImTA}Ac! z*VoY?w`cLjPfQ`A?Knh{>5RGE1pO~3yPO71Omp%_)W3&4CMDLU4H9d-w_fy>DjwRI zGjV8G$|V>zLt05qJYWlaizg67kQ$_^p^*r^NU?o5G51S!g7v7te^BaNAF?>BlNtg7g=} zOtJpD)G4ITY50^rH=4>mj>|Z1KR|;wjuVS^vh~sJ10#(o@wMtho0{y60iS2Z-_rO@ zG8o0KIOyQZ&D|l0BNDv?KOnK>0yEMQahvKB3lBdn?(GHE`>xTw1STws!7whP`}0+@G*sqs2wcl6q)p3%{~esrF(M6-Ee3(0!ctrg$~*z+E}!LOiHFKj6; zvM8?nzGy|&+DvRO0Bv}4m*~gAYfeZ~x4K+%=l_n-a9QR$;5-ZOmJ=)Wk+ar7EX9aB z;{dHbw2_cb`!n=}RZ3DMLr5&f8&k8z5=~F(l3aC?Cc@>hc!Z@3(5|3HyTuq9^6H~N zD(|)Zu3O2zd!FZtk*8q>g<`&Fg-GF+$STR+&oD@Xj<(L-Xr0vtY9LAJ2@keTTDgX# z4hf(XTfKRF|2*OXntyN!W-3YW_xB%XbwQTldp^Lll3)f~9US1pH`V6vB8&+=+4DVD z9{_ca_DH_W6C=k;q%n46pm&vuk6XijVwA^uqosnE{+r#znbYjKn~;xvGbDTg)#)A8 zX%m4DgR4;ZXdkZLS^hR*{VpleD0x;K(h_5YBo>!itAg_Uh+~#yJws;qY_c1dzh-Q#$9n z<$I(_o$Fn6OIlBLf0CIU_mA#tXsG%SgY>o5I29{CrC!NZv9Dy0_BRllI*RU~DJS8R z(kExA7ejh~Wi&q@g?}r!<+MiZC;?+e>6|d5K1vVNSGe+&LMgi5J6X9BU>KC8-+Olv z44Bc?Tuq3NKR7_C*aKU6bho_O#VY9LJ*t7U!wFqdM>kma>&1_rp$7m57wmyr-ulzP z8S!mg(Kx7Y478_pIEHYfg?K1jBYrF_K>umw7x1JRYKwRx86!P?iCz^0HvBqhCg_=4 z>+0$%972ABcIpfr34xB;lu3^juh}JY&WlG0;}r4Zd*-U{pc%=C=GrU?iNzSL#nZP& zOn&6)kQ%s*5>C;)5qoVMQvBWBBTyXIH%@Db50v&&o%-lPsZZmcHc`a-yKSd#Kg0RQ|}U1op!Y)5D-v* z1`Z!NC1$Eey25kriQ=-r>1oILImt|blX*s`SU0Uh@t+5NYV&10`ID@Zu7oIx z=5hGs)e~J;C2lx(@?j36bgQa^hT*(_=eF*IdJbhT@y0RIf$?JX)UOmZ{vNwOeIUm9 uruT$QnUJ_Pir;n??Eiaf|91ibVxZ)Ks5e+lr<(JhUyeDs9VtH?koZ5sSIe>h literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_radial_tangential_prism_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_radial_tangential_prism_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..d83481f7a9f4ebf3f2c1d3de03804ef7905019d9 GIT binary patch literal 8151 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 L`KR=}OVob>s0(DG literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_hard_phong_tangential_FishEyeCameras.png b/tests/data/test_simple_sphere_light_hard_phong_tangential_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..daa48cafe37ec7dc55a44804081ad48f145b9c56 GIT binary patch literal 9876 zcmeHt=U-D<)b2^42~rhl3L{O2rh)<@Bv@fkV009uD=N|iL@5GE02S#73OWLbIt(Zf zKnO)jf;5>3K>=xzgpNum0TNQrJ-+wb`xo2~cYnz_zrD{{`>d?B_OqU~QeB#*3fTS9+DVB&0ia z^!(a&?&sv>xYykLe9ki9cwY?M`GX9>$o!r7L3CW)*ed-K-Cx{x>c0+X=)U{W8bCAN zi?>BUZ~y<}e`&zM7R8kaw-;~qpxR>A_A+joG^LZh?1PnV*bY74p`v58xXZnC0)khNB(MXfKRT z&|5^&KG`G>_Uuhp49GqwfQ%LEU3eS;a<~jnFdlmQ>EXiv8I2ClIZkl%*r$Za$n6+08KYUGu$;bmaGPzCDf&PE%J(EO&q7^J^ zi~KAC8K9IALel56jb2G0tl*l*DkG z8KH3tI0I#h{_hXP*X7G9SLg@%+2Ooeatg<;J3K5!#Foa~`9VB-iwnLiPbU`dot3wS7{D!X%#QiT=${A{_i zEEh2SaA>39B*+=S4yn4%(9uo?A0yFh>vtVftL46;ppH1XfAnzX)Hu7$pYc(0BJXvI z_h-~20kt^|ukZYYBHVd`ESxht!w6ySR;F0*jI(ouOV7t~w~Lyi6CWB%di;HyywzpK zXN3KlkG-=~+!HKVdI7xehDF%z!`#wQ-+s)_PAptNtzcIYX%0ZZ!1=A{&0nH2We92v zZjpL%rKy@|jE4Do_qg9)SmBV*1F$y;97ZYzB;}tT2(oh*O(0xcT<{qFn|~EIaslVk z`k~S_&xCO&vHy_x%nylB_3g9xz2dcOEdB10#zTD>!k;6E@rTv%ZOQ75zRHySpFWdoSharxSwnp77m`-jZOX1=wjhh0nwly_i2~PG zq?Vr`!@V2_$!in4)7ldbFKfra{RBFG1;_)kb~Z;$c8We{V}>wC8c!%wly<%lli1kC z6^0t40Vx_rYo`ci&dHq3Mdk==V1Yo89?pO4%Z8bx$bUoBPylKMz%TV6NutbJ_+Uy3 zb~RbMPV|M@<^Y`etSRzTrf?d`8q3Z9f&Lar<0_PjHJ2|aNRz86C@(>4d%|OYW2q?8 zjI)cNGip||{S(|4S3;3H{Y62+`|#@h;2sfVD3jc_U3jVGG-P$H9>3wf*kdECg5O|? zmGnUGdWN{POSA;o({hAigJcb%qlPa7dkZm{c`ch}16_Ck7D_$7F zmgbMY0=w&Jsgab_345x z=0@9k(F$@Qal!z$?kPSSXuxAD8+!QS3N_vQwTV4Xur{HQso3^OfMlx{` zyQDs(~9>n|8ywwm;ZyB6AT3zb>skMBsma(nJ!3uf zha-?s?;@<E%Q+6!(HbMP`~h>`oa;oUV)W z7)Bj{tL>2rQCD5sDVn)Q4z{Si7kL-Fwwc}g$yeQ?PfATHygUQ&(En*SbJe_z@3{?} zyy+tw+tHCUa|)bI_-JM~O3W-v8&1$c9RiC?3nWD|+TbG>X}ABR3B8oJpr7J^`xZ9~ zQ9mS@NP&Ax$tl3u%stoI+-JBFed{n^!T87}n#@R-G{HrYk^JsX+gPJg%FMX8=MT|z ztyIAi`oxPpQK{nC8a%iS9&yV@9{z6xjtAVzMpobQUoS0RU3vR8SZatEsc?Ti+)n!q-%Mj(U(9R$t@`_d?w9D9$nDT(5aZfA zL!>O%-`nMDd1Z*5%zWE6tgqbaEsyl24DXXnze+dje$$=#`Uv)Yf1z(YRYEF|AYvv) zxl$JmAAf?K?P*C6L^T~`6y{@W<2XyL+{toVS+Cu?xQ{h%;-yJpV8&KQ1Qt>Q>7c48 zo&1>NducWJkF%`=C}R6|seBlI4E$a3RopJEGiG{gX;}FED2Bkh5Vv!!T=S8bWEp<= z&tZ1^TMrEf%*+M(tpyY~7Kdp>E2A&6YpSlkaW_8Id>rd`v6wOZRFe}V9`bRRG0OCH zt2Y1mj$}&}l?OI&85!LW?K1NbZdPIY@Y2L|Yuvl*>!oTE^SZ${>#Sj`(Fypr5N+hf zq}IOop4~8ix8b{v>sQt*D0KnW+x-sVUR*;~?=2I#{p?9(WBsQXho$#TUbJ}^V~$(X#s();S9IXeuiq#vl~w(rAtT8)53O9SyS9Ti>IbpMaTed+28|skJ=M$@v$KK2@29?B9~ICBj=X zfd6tqmOTr*#73cXu*8}VuE$h*E3-1SUe%?0_z$m?EB&O)k=raJPM ztZhlA*n^AQe6YQbXpi=PxM%{-tj}6nLQeJsT(e$}n0Pl_Td`P57F&UZw7hJD9K2Cq zJdC-)d`+gNM9<;I`-Jyd$vEOQ#g(P^>V=gxKf+Lv@$q7!!AtDh4c~<2&7UK^G`A`r zlQTdU=1=j^`eRAhFOyE<_`UZilaI#Kd-=@3*7_%-21fm^RX+4qN89?z|Icoifol+ex$>Fn&v|4bg7HJjb z1D3iu^;07$S{M0HmjtpXKZ@?Rmid)-svtM?-#m2g^M-#;^ZjFpd z0}Tg6rW;An-YUY6TTpH*uJXOtt^D@DJ~h3xnx_UtY*N6O{8ozwWt;?!hw}Snf&!u2=nwV03MTHuK#f} zeutO53Be30!cSwDy!oj1{;i{$z8|vc&jN*K>93xjK~S&dV3EeLF)I>6=rFbUV3aKS z76-q%1b*sSngrFC;jB@fbvu%>-@M(lsDwCxKZ|&_ZQkQ1EMclegcoW=$y5{^frS(0 zdxf?rr@<6Vsp>$>d;qWZl$|9(wv*)gHvV6=NS85iO!;uuIIrm_HN5bQF!po6Exy(0 zA(hVBwl3R2vMP3eMtS&%F77H=`W2ogK$UYm*53JlOZd&4a@gPH3ASM25Z^_cTeN^# zxQOo38nD^n?$czd=r%=Ep?rB4?`dmH9*2mKp|q$)6SR&87jhUxNvNdB)pmk?DqtR#yN9~T1m+a&titW+$uWfyT5 zD#14$<`1?~{%2UO+>42E&jQ$C$%}uhVmM18qiRZ-%dLA($qWR~iE*HdEa?iMg zo;`}T&m@o5%PA5%H~A=20^Y+n+RQ07nEIdfhochnxdyF-*?BfI_Vric<<|Q6h27$; zMpJGv@DNO2e#c+Ogb4o{8LidBk}aj@Ozg>4@*l}jS9yx$d#3bOL!4uTWMet6ZB9Kp z+9aa1WL?Eg6zlV5_kj2faXe~OvGF|DN=6GSF~I(qY3;|&p7AMCIoV6Vn=|Cv_LzR> z?P!<@#BCkMthP&?Fq3tjnmhxPmq&Z#)9EM9Y8PjJi+P*)7AyZ>@9TUii>Ui)mTsj| z`2sTgY1NRgdf}LD7I2SrrhGz>6KYy)&$`ESUnyyo^Y!i-W9Q_T|KNYU*{Bs=1a$wg zH6b?pHd$wVT_v7sczXghpt45Z2!Ho#cbmA#@Wi!* zU73COVNtWOh(0O|^yN3{i@&}{cV!N1_#R^ZPIrTka{Vc%N8B)x{P%*pfj{Pr~d+$?V8)oRQc{S?367#N191<0O7 zgiq<=E?AwH9&MbgS;KYDyJ#tDR?W7k0I`c*WjSIf ziKpTMY#1buzt;H4pYwLqE#ssyZ#w{`gL|Ys=GCIf8N^fuD}tN=_apFBqA}BdDK+5O z%|X5XI-2dNj==7$qu<___=o3@qwHuDBs#oSb&Z=@U2a0K($#>4--WWOj6RY)Qbc_t ziW3|&=?Qs`Q0p(^b>t2BW{BGben<)lVm~Gx42jDl$gNX@xrn5ZozXEG3erBzA4v28 z7oY%2hLqgec~=B>-zmKl!C-#gk{zu2p1Jf~`H0qi0rN6j>~gSTgm`Xa;dckXjbL=N zME{|kP6$0^68dr>%l`*i|xpg4}1v1|l0 z-Yp={wJk8daIAe;WDRbz(f1<6A`2Y)vF71Qyq+|7dPZ7j&md(Ea+CuTB@x(+j4yU4 zZ-xkviEY9Dn{PA`2~OPjMo^{jH#^T<>wHaK*DmvO?|k9RtBwFo!&5Oc+hlTLPp4Zp zW0W(tk0=Umx9x{b2vDt6L=NScim_$TpLW=ggWG@6Qg#=DzpE-}%96^9?&lk6HLH7p zfkEJ8`pORwIu>4ycdWl~-055KGuY)|A)a{+^1LN?JImsrvm;}dChRn;t~7G0hDW;M zqQ8TkX|Q{-wN~(t>-L!O@qIAUK5s*u52EtnRDg`6l;--^xgl{E0gsO&frDZ@DFw&l zSf`CDZ^sBUuxk;cg7z2a%SV~iG$sI_;|_L&;#DIKEmn$}eY((7_#XNzW+JcF3~}!O zeBX_vxxUiU((&sZvERbrH|^9|ef`ce27+~Fv0m~xj5L6H3W7WuHp%F|`TL*91L;m5VqI2OyLBh3N*gxs zv_Lph{$_~O@Vnz~1|PEnd$)JR`7As^r{EA#tvc zGkI!8$8Ylw4Jgt|h4sR`0|_;<76a06ZI6symJ?091|cy@z%FNa%%u$9^55DTYs-aU zOFX$0@pwtM*)=Em(PxsEAOrcRDJAklR?{J}^_`N}s0G(1^w_auJA7rmk_6`f)*ui& zR2FI+#<^6H$zwWX67q}6C(6|iKBDrRvhwWHhp**$T|BsGrr>-ew>e*cx8p)&P1qKH zYINBWW;~qMJY5{4>mb>Yj1!Ipj|{{-?zt%#nykx@K1>ubvfdWyVY{chyHy9CNZLW{ zoN#A5#E{$N^*qoCsXX$i`^VSe9p_udW5E596tsrbd6stJ+h>ybW~KQE$yemV1h2+s zXTTfEqM9C_u*e;Tm;?jNy60dT9`@d+| zDy{M~I4tQrqC;?Bu{@G=$?Q-g*TIC)D7(WjIlog;yKv=`Zp?r%RTuO5iR2z_?ciN< z1x&~mCndJsQ=+~gWzO|Y{!!m5WRxh?l}PN6lkoUL3Fkp3zt&E&C26^)Z+6MLFMF8+ zwp#LEakr>)`%2+ij-@=@H%oB;3bJ&B$#MXe%9l^B5mdo_TH1VJ~c8&H8vE<+h2j{=SBjVZ9eZ(JaH=C9tFN!i^qOWBB@ zLG-XsNH;g}t`m_?EyUd_(tA8J1dt*~@dU7A=VPEP{2zOYJ_OU(+eHvL(nqkC}$DdevKEyt(t*!OFuv{U7;w-am zSv}G^=ZzfJbHgY11S5+YCFa?%*LgK-KcpYKUvl-_4Pka4Vzq}^bgnp@qy=C z&0*`OwFv7)nNmx|h)dDLTMcyyY};OOrV6n3I&Gv{xO;e9M2d^-8pfw|wEMzl(zbL) z)ApNLQ{l$?b4ck-LlfKOT0_l=CZ2T zabpCW`k@A^a0(i2`KRyaqQ?Ut8*He>z-{wMZG{V$$eX|IkvfN_;ZbHp>20d;?N!og(YL%n^A^Q2?v3imO=1)YX3x5DAS9?z z(mh`|h)=+efbsnArC9zTzMj0#N?jLssms0A<7W0b1kxr>AV!$OGIxX1eGrC>6D6fZ zU`fJkC{}=%oxx>s8gn!Q*xRe4qb_Ak1^ti%J_3A*R`}m@VEJ`%zCGGxoRbfh2NK-H zG+*9SUg>_xwW&u%JNDHEHe-x(s zKTtTqcmjIq>f(0tppzuI-9#7Hol9<54O`j_Gvm>$;5REo$(I>5-x<@dXuLr(^!CTs z2}Zg4FT3{D(izIZoh+f(HozXV>sRd-g}3}13xIVP4}FVf~L}p$D*(LgB=CQq9FUp_B6d#_kG>=J{$s57! z?mf*Ck|4g5{(B@)IqrsJk+jOzZnR+;By@)g;4L9u-4WsR6ZNsG3(B_o=AyCl-@ud< zsX5e$lkCltp{HDHcq(xRFF^F(TD|pihGaYltQXgIR7F~{Wx!v{5GtOb{8S{qV;9=ew ztchs0TMZ`XQ6x8d{YZ@9SolbP3^KfCkjx@sUAGLIUUCW;+S=Oq;$le4k}`f?Bd-Xp zw<+DROryWWndM6+kz`UoExuM&l(1Z&>8~84O}e?$1zy!Jvmmu&Au(BIYWCT;Qf$FN zQQ06lVhVMHJJGli`5bW)dn?r%7h&S7q*P&LoR2TRAW>R~DEn4%4$)~2)7)A0GU{49 zI{ljBfnjl+usl)rl|(gLz)SSIOMwwN}= z#|k)=Y`mr}Y>7~RV57{M5PXPWxjp1E;$DV2vpbd1J-|53wHX#0V4572DR$0zh$H>L ziZb8QRPbi^*F&}gc56151ZI)wTmaf+t~D+}4|dg5uk=N1YtvC!^-&i^n&}Qtu#5W9 zMnGkaxAq?Fit&hl9dxB(?&J8YqE^0`w20zo!%d5nD8)gtCuSmk^#eeq|EfS7YX)a( zKgIAAC|F?GOY)W{;G>socHQ|ilaLUAYfgf)6sUTW^!dD(I9*If$oOGnC7T8)R^J=JsZl(^I4$V?Q|+^vQ^A*b25h&P8gLP%O`fD`iLjh4Cev>20BU26dCyqlM z6mJI6k^M{YRi(Sri`*Q0?(rBG` zS_TwM^l(P5P6+=Ki7I+H)$%?(XR+!>%0Xqyu$mL1`IDrSja0^6Ob`@(kG(?Oc?=NG z9^8IsyM)JSM9&Mvq9}L4k3?f1JC2h3)#8#P`Ecano;av@I7?RL=AB6uR6jt5cLfD9 zArG|NUV&kp7>Tx_-N%eVeIpXy&mrCz*%_$g4w@_S^US41)w^Vv|5n^cN}PL1vi0_8 zn=%BO^p-mymTzLmwWO)QDZhYQjWc*f?o^B(PIFg4Qg8lg*NVCF-D#Z(R*(jK>aHbS zrv4S4?y*pMnx1k2Y7P3+?U2o+ub+4Sm(TrX=JUCKpZmV<>-zq_*Y~=v-yKK$vr-Z& z5&!^5oj-T_F8~mN{t5wNzkZTcY^ni3d;R=rt4j$Fm#3z3mp(WH42#BX%k-P08R}w+ z?G6P8$W|9_%Fklpf1bYa-%T-@ztLy<33nT*p?a$STyw2en_E9#0)~ zcP4yTF^+(q{{OH4B@ftdMY6>)U(p~7O-kKmUzwql84ptvXTJ62MNGFRrlkpn(fr{? zs$zIKoJ`?xs8|7enb!9|R~Fq!gnNC#M-x|lSTlvUv(Djg90cDTYIa>1&&~r6R|C+y zoSZKk!b_)Is`pr{fcPm`8V?!v!rQ{E*>&Lh(Ocw-j&D zl?9473h_L@@o6MeaCtLgZ$_|3(GwwB4f*?kKIzK=MsFctGM0zsef#xFL@W}?=geV; z_Fa~eR?M;f4Ct4^$;SmNtAZ8&?zU4Qb|1I-6Uk)IOqJV~1T=<8kHv{p;PIp#=AJVL zyfwse9ci0SP!}%>oQYa$42z~^R36MwOGMW-M_AY=jWdhlb)i)G{ayVUfM_avJiv$Z z!PVsvHg~sw(Sp{3Jx3$$T`#7&enLM`H;fm798-C)$Mzs>XgLC8N6<-Fv@-|c&M&!* zmDyx%;dwVI`;B0)K9dcPRO*m(4#0+HA_Q|0bJo~~uP6lHe-iy4hdv08(ham1b~0Un z0*DpNV?ECe?oo&3Z;S`vdmoX;*>pGdVzpq~2n?X4kqtE}RePY@Lu;8Rp0D1{(bZ31 zomu^P+bjA4NyUud!i*wuU$wn1(oB(j;5k>YO+pj7u0%oDLSF6SejV=i9FBhtXmr=| zjlGXkC3h48+B-io^v6A=x8dJ`mAlX?-mH&c)|JE^f#OCv ziC>&=n#AM3VXtoL-xjE&{Pgxbp9T29$~`!_ECRbrBW)*>w)?g4gWGE_MpE8A<9Z(8 z_DO*?X&7^P)$hPJ*yMh3262}_;u2ctny8ZnenXOWfgfPwj=|kraq=)1K-Y*=` z{2OlysVU$`X99LUVfFI(ylgkAYrVJ#mRcssR3mRNfo4f&?m3|Lgtpa>QsC8I ztipPZxH^i9Jj{>(mm7}vFz+A#VNDOSJm-DD+(&&*`t#(i_y9cMx-}0))~OduTXXOp zH$xqvuQ|B*W+#g}^q&StTEj?%l_u3O%0E$RYR^VS-bTm9y5!~Mt_yWfELJ1tf5>;?i zdv~eiXX4WH)p`mzzNtnJADlN*TtTPo90NULMK;QDv;S1i&(HgS+|h7V3gv|8+S}B5 zGkQtDuDlJlvjgoG=BBH!m^~a_+8A}>8~jY~@a0)tJQ&dVKCzT+K>Rvy+2zUi$(0*K zQV{yNGOr5gZSjKM7Oy z|2F07&zl^|+1G1*wvPJeeY}qLG$BA`%gfzMc=En*Q-;tN{j~L*%xPs+OyPIU2Xj36 ztdugJ(avf&gcPghM@qwnT%IiIssgvFo*tAC*D39LU)&`%qrAwJkuUuA0MB%~qpGSZ z=yr1TlG7lpmrG3<^o^z71DSGdY8NFs>#mosb7s1;g5J#=F2P0P_ z$M3Mo=EL0DIo?fYe6#`fvz;*E7W2nUQXZ+}eD`Dx{xK-OK0kye%;L(cI({TrSXv5x zC9<_EGnfmQ_@%|g#r5_2akjqEnYL1pD7Wwu?4fp?-dmDwK5Pgc=IT4WK16L27|>V3M%L(Tpvgya zC{`sZI3*>8M+JG*->3DK9wQ=apQY1B{taoWw;X2E(Tl9dU8!o-lvRUTz11&h^y@cN z>JbOklZwv+1>}q3vwIg{lTS^#@ly-~6W`9IVIuX+$tNtM27N?&u?x#8B$IrNQ~96( z;sF7~${~!vNOem7ZsS9Cp(MBeRetF1syN?l_zx)mHE~_HgDdP}!RzW3_{;5A)gOr6 z)0a|+IB21m@dsMe%ulk zJttv*2$>YCk;@Yk5+3NF32mn$Y(U<<`X=o9NZ~&HiLu({M$hUk;oz*P=`oHhls!xl zo(ntqGpnl=cD;Dt32NNe#L?II<&BCUv|<7BLvI>+gFq{`$P6QpT=>W%*5_ICbEUw? zr-(>nmrrQzpAo+&SI^)hb`jK5JufqSk_{8C*1h3>eK%tGXjVYDrQW&PZWp=%DV>>2 zvV9V;{fo;a_6k4gB-khz^u%$V|4gf;+lpP~zAPc71}5K}_*7ck=DZub0FT@&&Ip%} zSRozV(KwqL(2QO+7~c&4>euAT3a{eIZ%cY>TQ;jJhZerR3w&hiuSy@yL9bt|sNxqs zeN_JjTbr`y%}*1`*)l7V(PHEFAY%Gc6J~oA6s&e2()k)V4`T&vX>)u<+($z&lk2c{ zZ))|4&7uDeoxR$(K`~NRjUIdIOoDLiwA0uo+~KqKS#_two`yD(=}Oi?v)h_Nik!=+f6)x9EL>KI{4TGRKv5oW0&&IeAz173J@;QPM8wH1F2`(kWmt%zl zTRtF>BX5!qj~t$3I#jQqT+>SLTsiu8o<+#32Krtus@wU5D^<31Z^WcQ*e}L%il^mnUwH?Fy9&~fB~MPS zjt%cy&#RtVO(t=9MA>)R~9N+l^u{ndtHN>;|NC(NZXhH|GH3m+^BB>*`U`&&Ap2jY1J~r>E_=&}nx} zxX9u=MWhQpd*6*fs{(=rqZ5LTUVO^G3#GRSU~${2_~e^2R*dv|W{oX}p)E_+eM#hJ z_Lp*M$S3u8RrCaKTG=+oEqs*%?`kY1zTg{oJiy+$ozW^S&S;V^1BrjquMVM`#Y-Xz z=FMQ;qW~4zd!@rvwk}CKoU!^s=;9z^HkemF^>DVGnrORffz7@%QxH&oA0Ikwwq=lb z#Wi}VnQiSgb#J;AV_?(enFWuuDT)De%5g!>DcZHOI9rWO3z2-gOBb7nNLBbpI_h=2 zo@1mHnfLRnI75PWcdDq|3GHC9-JpJfZ9lv8vRSe!-F?1t`!5`iUA@@MVc|jZR`fr2 zf$-ihyu2r1dyMX69%Xkj2xQDxEP|AY)QF(x>_Ap%+e^$JLMQblyt={v@vrD`dCv zo+wL67Y2y8u_w3@WuS05ZZRC!Mn_ya4>Ug}aM6)cYxV5rn6^_e*L^_Cf)bhiDS=wH ze{`ldANXi|5-k1=JMvv$npe}LnqVp1WkF|0Sn?-fxb8lHsoQnd7<>$_qrl^qSf#m| z-;J-B6$W^Ktv#cS@c2znOGDj&aBw^}XK2~BXCS6!kS=kfwHud$RyUBJG=Cq;eH|;* zVrYRYb1WNzRz0ZPM5~@YL77k39rNSF)B<9+m9q()Z4<|)q=bZ>MF;FeA~*ja?BOdH z&{QME=S#&no&v)y3reCGe4DN=fc)c9=4F(mNW}J?-rp_i3gMBR?%mij@e^5Z#)1T- z@9JFw81BhCp!9|2w5|b=k6hK)Hz3YPS^tiotJs~T4P1*^E6e(j z^=XDl?aLl)d}D8>Bs}KyDEd#OVn*!`I|7#)N_|RFED-0HG+_^|7{`#G_5s<8S3E=} z^t3#-y}A#?XfaTN8C23V{PlT2YrybFt=rfO{?Qdr4@$e^s3nK#&>2hL>Zu8;>{7x+ zW0Hde-I0GPWf@3q`cdYiSVIe`a6fTjl$H3 zJ!v`c$cFCPgQXTJ|tBcTm-2l z9CW=7_Qfg&`#4@EAwkmDY^EylD&+^Z0d?%yZ_g9HFYD-mMrpinsJ>OP4Gmn3-4;GY z1YCQ8Z>*`O4?dC(-K}+L`%DhTm(Iz3D|E;O6p`L3WiXpAReK?m;f){kiKisupG+si z0n09@f-sOV%RG*IavN6QT>0b_tfQ4ZGc)sx#aX*H7$K93s@owRrMKsw_E0YrrEY|Q z6YQDexXPQK4ILrZqfW@m42v@^KTEGTdQNzkR6|I($&)fGlQS+RBp<@nxHRu7HhV5e zSFT%aq*mH#`M#3z(|+(|$M%%fx)8%jG&Q(jy+)AeTv9uv07@i>aJ5FPXFPl1o2v4WM93N`4fMSB)tws7QF%d`RxH4*tSl6df$(xjR}g1R z%>Bk-Zj)9+1t?3^3EEh#MYEgHi|Vf*ekT_13!Dqcbu;U?D90^7;rP%ui&-n>ZYfJl z2*p%dt%WP&lHQ}4;Rxp7$ITvbp;O<1|DktZ|=8@(ftc>RTF7*>Hz^%R^zdIkDdqSm0IRwYSZ7o z52*n?Tj7_IUvDoj!0RC1cV>B22JA-c3=;!7PjXd$ptXu{%xhmi`Vp_Mz*Dx{=oi~v zFB|MxfSc{%_rEY%7kJf1GkN&wRhZgOt_HH;&IHGv9K0KeW4vO zt_kfPxT`j7#9N!Q*QNOGJ_&!E8hI+v2t=^|>2@;kpM{8H){aIpUE9}A^mf&QN&O?N zNO7)&>S;spD3k!Amg0Hu>ivlmuRx8QFCC`p-fH_qFIyTulw?*#pd?(fY%wKA#^bX3 z8{~YoA9%}>Qx}52pjrZ+ZK75mx~-^){@rHT!L%8f_Fap6cL8IymtGNeT*|H-7m@nY zgBTC@kR^vL9_jtA^PV`B!A@(u_S^jJ^d@Y*j*Rgj@+eH?&Vdz#h8b*N#Lt+J_;&d1 z##ao9Wkwq2bS94cl5=~Rtl4s&mENCV|7-rY%OovjLp*KpJe1|^!~>7kD@!~phLV7K z&!%Wb`h`CyRlKUz9tew02>Rb#^k$iK9o~u)V$#p7yLnA@wMxA1m{1MY!0o%w0V7<3 ziU?NSjhx9E&xWdHl7+9QP;kXx-uX(|{p#Kyi*cpOuS;ZIoYif*zMluSHN>7>qkyv& z{X_WBjXWa1a6Nu&=(6Q|bK_y;m>$Yo=;igw<)F4B5A*~sE8Y!Fj+1Ix_tUK%pJ|pY zN=SaeCP8k@gal&wM^?NNFueL)j8d9y~yR#m_BZU^ zI#0dMo&&}i(<|dTkaYboooSsPks<4-drcwFUkPW9)tt8#eN~x`stvbsXxx#BKU%=Y zrMUXGz+aOj?!5qe${#F88*mX)pr82jMQE#*(Rp)g!-<-kz(>Qc_IWhM`jwpIuSv*~ zZvW1m?ffQ?Y)pRD8Fr}Fcr@<*oU}58a3Loxa%y@Yq>;s=ZmR54lC-w#+$uA z%QTn#yRodV18>;KTx^1tudk9im@Rh=@H+=+T^86P?iaahdoI)esUl?MO7Ni_MtU=; zN1n$b_~B%C(FmpNE}~6Dqh>IU78r z@Vw(|K}jWKO@KYu1wJpT^3h zkm#nHZ91yQH7n%?!FR-o_rdd56|VbA46)yv>7a=X)L`z#2KehKY-@eumD6*&#_0U- z>}f7l(7q2JQ!OWhR@?;aU4AZ(x>r)Z9d*qM7W7q>C+ZWnojs(CYTUbsazF1cBH$ix z9)rQuO1ON=1Fry~-paHLx`H_QaFkOf6xzYLPc2`0GZAF9ZV0@n`-l`t>zi454vk zUnL~jA@{wa>Vyy3@&JTCkJPVDJzWkp*Y@IGLH z3n>f8@W0S8pygj$Qqm%G5BH`NENO6XJhpfQ=B3TsVhc0v$&uL(hvS5b z^4{t4mn%B>xCB#ezG4~2iiQ?MzJbFwKbPauRb}vD)o_jTL;oQnGiHxrCV6-fDQfwF zLzb7G8P;1oof|i5*6?WSWvBfS`FxH&(w2+=t|Q3>FfutP$=m>zz8+ zP&jFwm~91?YF5@98JfL->bjCc`)1rS6>xtllkU2FxYs9;_cPO6vl5cW^Mr|kV7&X( zA)n9v{{VUSalyZn6+3{Iy^Ez!7P_8LrgE#n?>T6eb^g=fT0PBQ_H}+Ih0OWzKWJ9A zc-K#A4ewJT2r0x*U$AU$?O+?_gt6;=oF-o!>3p#)c#KwtFzn(gEWf9%S4>GBu>rEO z?%|jz`F6tBoGbkfB|%ko){T$FWm zMXL|3?3!>|+J$3n$u*t>s zV4N@LUKlgo;3=jepiR|`^Yoiqz8NJPO2JBM;%Sp=ufCpw4cxNJ@@*?!G*>8obRNlY z84P0uom4`O8Fjab0&JwP>KKpoA_SMYzu>rWi7->LBlJDhBZD~>-KrCk0d1jzZ{%Jv zj~qscqRM+%Nh{bf3j1O-y(6|Z^NBQ0KXQA=FHfTB9`56%Hm%dus`Z|_dVVSoI9huZ znQNEKXnqRXdhq>9UrMvW{urs}Iv8+k1+u|fjpqL@n@wzwuVq8c!EBCCvx&T_q)@HO zRKK<3vRf3IAxi;m^n~>+pBl>_+J$v*;q5kSE$YXFwO8U2w*OXyFn(LU?8m@aRynQ) zQyBEx|D_y}CFxQa2J#SNyRUq~W%i)Qv@-u2wKY!AyB#he1JPPP(>5b#=CGJCMgBy- zaKUWl)tHms7yUEl5C!+l&qan4xBr?9XsweRF2NIzIIiAW}GW7V4#OrYFK??)4l43X8>(r@Lqq?UW`{|O7tGa3@s_78bKBy2*D(>56vzijc8 z@X^uS-c>$CFWxyFN*_;zCNWy-m!(t$lm#D;KSFv+ z4bhP2jKItT^a+~ev>-U^T5oJ4GdRW+#Sgh-9zGg@KdHYDQ2(X$he(|_rF3UzIhuKVVCEK#9g_7F}^bHJy3k8iJ0M@ni!k! zPtgj`68$YW_9Zd?Qc7Nw7-0lc8qxIAt;C6vB46Tg@*|7_&4PLg@S?9EBOfl(6QItO zTPH&1hFCUIAz0epUibz1zWpB}(#c|$AfN`(@TjQnTvIINYCe&;8 z4+OMcX{#6w-%1YMgG=)KCx^D%t4nDZi@t(IRu%=iieva$<`y_wgNnFz(`8pmH`7|i z1ky(CAve4O^^9Gcy9n%|nJ5xF(LV{GQ2%QgT7t>DenaDO(oVOFCIQVMg4&gigQ30$ z9i!wQH4Vic#)J`@IdsWLVvbfpw!`4}Pa_+V$jS$j%rBRhj4{()ildQ#{~9bnBJ0<+ zzP|p*Z~98BdDh$IA3p-ZPL4flaj5f@oGsDioXryX&A^A(e^cNmJy!G1iww=HW~uY@ z0b8h~McCx)3D3&&)#oc7N?)Rp#-6@M0+N@&z6n7|Pkw|V-506;w}4RP@accnK6lot z97BpF0Z}yUD^&iXL{CS$`xj|z&aG0g(QeY=w!m*Ff(?|G<6ex^a;Rz0mxa4k`dGXU zj#5-);t5mCJ$r(M0jol+$BMo*@Z}GYVAvaD9gSU>R}}UY!jaaJYPbLoHD;$Mt$|RC zM<>M-SaXyH4!E<^61p28DlEMU`$r0xbZ3G0)G)`sdn~~QJ?3tc=Frd_Y%?w_Li)J= zXw&G`3k{p?r_$PoJZq}MGlQy?JwkcXG_~r)Lj>L4k&%rb-E?JsaX|DP>P=UB@de9Q zZ~H>A3eQc(_7!KAUL*BBcI=dSo%+0qnijAHoahEP+`PG8$vND8T{_Cj@xk`e4}?ZC zKr7bP8=V-SNq7CYSUtU~S^8%Ec!<{IQuG!ZU`}5?{y`BtbqK73^ofNV@fCzYDRzw- zMqpj%UkHxv>C*eeLpLGnrcAyH2Y&tF0tq(*h`zp_gi5rmjAwxj2pLq>m?`uMmmH6p zVV=HP>yBg0KyYhQ)KYVu#RU7)HME?!ZX<5RChQMKb46|R?}6Y5Anb$-E=;L8#tCR@ zM99R8Y*^sjRmR-Cfma-={RPZ+)z?iOm-Hrru&eNwy}=^SXA_O|#dAZfdiU#X!s49M zn19oqMLwLxQn0zdW)wx`xDjF(aX@H;kLykbx+x%S6=qnRV?`otG*RFK(1^I+hk}he zAsT6%(S;j%H+|toU8%C9SW)Jml*;4Di_gNB8C~c7r$fzw#`}4KVgV+BxCyM-nJW#o zYqX5B(H)3Ls6m%*fwM&dzb2YjPJ-i9CGvj4$cG%~-3hNV-wvcte3EY8d$dz^2|`cD zH6S?~-7O3}M)&HZeGW(DSqPE;GDwgQ!`CgHJ z;*-yMRyRc0PnU6#$8-$Q%A0GuU79-RsD0q8!x#vWl{XBr^<(OB3s^j^Oq!`g9+h{i2PR~Cw0*Mx3S06WKM&v zh-3S$SomvD^&56yxJb^X%*ndeQS5_XhTRZaL&q~l;1IE{6}X!t@XUorZc9^PUf14U z3sN6TD7VL?Y42G7az-=RaHy?WLaNuXVMNl7Hgfg*5li>7Q>|ex#?6ZHN;0a|EvZ{p zVRT#n14EMm%KRDYO=ti*(KED1A)|CE!$VCJ(vKwUlCd_Qs{e>Xy>$-IKYJYECwjBi z6m=s($=Bp~&+-EEiDD@z=Kyop#Bmsp(Z#>R+O=uxI1^a=+bg)XKmoN+k>9E<&UiZh zQOaxFN9@N1;l4Pbq!^nB78X>G?Bw{^LAH)+z}hiU(&yrY-ra^JnZcqA(M_mh=2Dxd zDA-tRje}4^$(v~M%#$u*;kWDT?&}x8(NIB-;GwlpLVbp6q*FQ0WCc|qdz&UG4iQiX z2qCFwur=p}68eKpecL8!3MPIsJNMEs(K0PfZzwRUL+>4SOY#nLW1w8Wr+eMLCEPYNv`*CGzVj^^oeV-AWlMqbR~{B;+|%2vC!7^20ubhSF#Fx^Iht8lIxj7*`rLG4c`KLmk%c-CKiMeXtg{ zD|o~RDZ(ZFM0XFT6=f;#TYr-!6ZYN^dGqcjauKm~6m~ru-4Rq7vef*Q?bA`TKwZuU z&N<(dekgyV{D|YKvv2ZTs%RKEYb(Z|R1wD+TS=SzhdMT-VA3REcnk~xAL2(s?g%E; z#c`lx6m>UQfb{f%Fw^juioIc04{YZ~qb4^-Q3Fs(8pcGpGCuzf%PJP+ z7^L`HqvKBtsXr|e6@4RgR!a2y$rwybC&->J8lq0!1r{LnzFxPsHrv&`AzrD>&$*cf z9i_oEt4l4RkS#-oLpAC2i678fuR=gczAC-a_?VGK-P!0L0mr$cV*GYM7D(Rm&sdK3 zzvP?8t4=Fbl>2+PT|*Y=3w)N|Uy*1f{KkK`=VqF>nm8^~)1d2nbdb8+W`yi^VwVP> z_f$u2@V35$tvBnw#tKX29N^gvbr&t8@UCZs7!%>T%3|DhcUeHIEzMG9{mMaDWQ??( l_*IMlr9*T7@5dCclaTk=AK`8L-u+s1{*3+U8f)K-{{wDnmfrvX literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_phong_FishEyeCameras.png b/tests/data/test_simple_sphere_light_phong_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..d83481f7a9f4ebf3f2c1d3de03804ef7905019d9 GIT binary patch literal 8151 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 L`KR=}OVob>s0(DG literal 0 HcmV?d00001 diff --git a/tests/data/test_simple_sphere_light_phong_elevated_FishEyeCameras.png b/tests/data/test_simple_sphere_light_phong_elevated_FishEyeCameras.png new file mode 100644 index 0000000000000000000000000000000000000000..c04471252953698d1fe5d47aff9970c9cacb4158 GIT binary patch literal 6073 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 F{vS0DJp%v$ literal 0 HcmV?d00001 diff --git a/tests/test_rasterizer.py b/tests/test_rasterizer.py index a47b361d5..062be7b60 100644 --- a/tests/test_rasterizer.py +++ b/tests/test_rasterizer.py @@ -21,6 +21,7 @@ PointsRasterizer, RasterizationSettings, ) +from pytorch3d.renderer.fisheyecameras import FishEyeCameras from pytorch3d.renderer.opengl.rasterizer_opengl import ( _check_cameras, _check_raster_settings, @@ -51,6 +52,9 @@ class TestMeshRasterizer(unittest.TestCase): def test_simple_sphere(self): self._simple_sphere(MeshRasterizer) + def test_simple_sphere_fisheye(self): + self._simple_sphere_fisheye_against_perspective(MeshRasterizer) + def test_simple_sphere_opengl(self): self._simple_sphere(MeshRasterizerOpenGL) @@ -155,6 +159,91 @@ def _simple_sphere(self, rasterizer_type): self.assertTrue(torch.allclose(image, image_ref)) + def _simple_sphere_fisheye_against_perspective(self, rasterizer_type): + device = torch.device("cuda:0") + + # Init mesh + sphere_mesh = ico_sphere(5, device) + + # Init rasterizer settings + R, T = look_at_view_transform(2.7, 0, 0) + + # Init Fisheye camera params + focal = torch.tensor([[1.7321]], dtype=torch.float32) + principal_point = torch.tensor([[0.0101, -0.0101]]) + perspective_cameras = PerspectiveCameras( + R=R, + T=T, + focal_length=focal, + principal_point=principal_point, + device="cuda:0", + ) + fisheye_cameras = FishEyeCameras( + device=device, + R=R, + T=T, + focal_length=focal, + principal_point=principal_point, + world_coordinates=True, + use_radial=False, + use_tangential=False, + use_thin_prism=False, + ) + raster_settings = RasterizationSettings( + image_size=512, blur_radius=0.0, faces_per_pixel=1, bin_size=0 + ) + + # Init rasterizer + perspective_rasterizer = rasterizer_type( + cameras=perspective_cameras, raster_settings=raster_settings + ) + fisheye_rasterizer = rasterizer_type( + cameras=fisheye_cameras, raster_settings=raster_settings + ) + + #################################################################################### + # Test rasterizing a single mesh comparing fisheye camera against perspective camera + #################################################################################### + + perspective_fragments = perspective_rasterizer(sphere_mesh) + perspective_image = perspective_fragments.pix_to_face[0, ..., 0].squeeze().cpu() + # Convert pix_to_face to a binary mask + perspective_image[perspective_image >= 0] = 1.0 + perspective_image[perspective_image < 0] = 0.0 + + if DEBUG: + Image.fromarray((perspective_image.numpy() * 255).astype(np.uint8)).save( + DATA_DIR + / f"DEBUG_test_perspective_rasterized_sphere_{rasterizer_type.__name__}.png" + ) + + fisheye_fragments = fisheye_rasterizer(sphere_mesh) + fisheye_image = fisheye_fragments.pix_to_face[0, ..., 0].squeeze().cpu() + # Convert pix_to_face to a binary mask + fisheye_image[fisheye_image >= 0] = 1.0 + fisheye_image[fisheye_image < 0] = 0.0 + + if DEBUG: + Image.fromarray((fisheye_image.numpy() * 255).astype(np.uint8)).save( + DATA_DIR + / f"DEBUG_test_fisheye_rasterized_sphere_{rasterizer_type.__name__}.png" + ) + + self.assertTrue(torch.allclose(fisheye_image, perspective_image)) + + ################################## + # 2. Test with a batch of meshes + ################################## + + batch_size = 10 + sphere_meshes = sphere_mesh.extend(batch_size) + fragments = fisheye_rasterizer(sphere_meshes) + for i in range(batch_size): + image = fragments.pix_to_face[i, ..., 0].squeeze().cpu() + image[image >= 0] = 1.0 + image[image < 0] = 0.0 + self.assertTrue(torch.allclose(image, perspective_image)) + def test_simple_to(self): # Check that to() works without a cameras object. device = torch.device("cuda:0") @@ -412,6 +501,76 @@ def test_simple_sphere(self): image[image < 0] = 0.0 self.assertTrue(torch.allclose(image, image_ref[..., 0])) + def test_simple_sphere_fisheye_against_perspective(self): + device = torch.device("cuda:0") + + # Rescale image_ref to the 0 - 1 range and convert to a binary mask. + sphere_mesh = ico_sphere(1, device) + verts_padded = sphere_mesh.verts_padded() + verts_padded[..., 1] += 0.2 + verts_padded[..., 0] += 0.2 + pointclouds = Pointclouds(points=verts_padded) + R, T = look_at_view_transform(2.7, 0.0, 0.0) + perspective_cameras = PerspectiveCameras( + R=R, + T=T, + device=device, + ) + fisheye_cameras = FishEyeCameras( + device=device, + R=R, + T=T, + world_coordinates=True, + use_radial=False, + use_tangential=False, + use_thin_prism=False, + ) + raster_settings = PointsRasterizationSettings( + image_size=256, radius=5e-2, points_per_pixel=1 + ) + + ################################# + # 1. Test init without cameras. + ################################## + + # Initialize without passing in the cameras + rasterizer = PointsRasterizer() + + # Check that omitting the cameras in both initialization + # and the forward pass throws an error: + with self.assertRaisesRegex(ValueError, "Cameras must be specified"): + rasterizer(pointclouds) + + ######################################################################################## + # 2. Test rasterizing a single pointcloud with fisheye camera agasint perspective camera + ######################################################################################## + + perspective_fragments = rasterizer( + pointclouds, cameras=perspective_cameras, raster_settings=raster_settings + ) + fisheye_fragments = rasterizer( + pointclouds, cameras=fisheye_cameras, raster_settings=raster_settings + ) + + # Convert idx to a binary mask + perspective_image = perspective_fragments.idx[0, ..., 0].squeeze().cpu() + perspective_image[perspective_image >= 0] = 1.0 + perspective_image[perspective_image < 0] = 0.0 + + fisheye_image = fisheye_fragments.idx[0, ..., 0].squeeze().cpu() + fisheye_image[fisheye_image >= 0] = 1.0 + fisheye_image[fisheye_image < 0] = 0.0 + + if DEBUG: + Image.fromarray((perspective_image.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / "DEBUG_test_rasterized_perspective_sphere_points.png" + ) + Image.fromarray((fisheye_image.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / "DEBUG_test_rasterized_fisheye_sphere_points.png" + ) + + self.assertTrue(torch.allclose(fisheye_image, perspective_image)) + def test_simple_to(self): # Check that to() works without a cameras object. device = torch.device("cuda:0") diff --git a/tests/test_render_meshes.py b/tests/test_render_meshes.py index cb1e4081b..415b3b1b6 100644 --- a/tests/test_render_meshes.py +++ b/tests/test_render_meshes.py @@ -12,10 +12,12 @@ import unittest from collections import namedtuple +from itertools import product + import numpy as np import torch from PIL import Image -from pytorch3d.io import load_obj +from pytorch3d.io import load_obj, load_objs_as_meshes from pytorch3d.renderer import ( AmbientLights, FoVOrthographicCameras, @@ -33,6 +35,7 @@ TexturesUV, TexturesVertex, ) +from pytorch3d.renderer.fisheyecameras import FishEyeCameras from pytorch3d.renderer.mesh.shader import ( BlendParams, HardFlatShader, @@ -59,7 +62,6 @@ TestCaseMixin, ) - # If DEBUG=True, save out images generated in the tests for debugging. # All saved images have prefix DEBUG_ DEBUG = False @@ -107,8 +109,38 @@ def test_simple_sphere(self, elevated_camera=False, check_depth=False): FoVOrthographicCameras, PerspectiveCameras, OrthographicCameras, + FishEyeCameras, ): - cameras = cam_type(device=device, R=R, T=T) + if cam_type == FishEyeCameras: + cam_kwargs = { + "radial_params": torch.tensor( + [ + [-1, -2, -3, 0, 0, 1], + ], + dtype=torch.float32, + ), + "tangential_params": torch.tensor( + [[0.7002747019, -0.4005228974]], dtype=torch.float32 + ), + "thin_prism_params": torch.tensor( + [ + [-1.000134884, -1.000084822, -1.0009420014, -1.0001276838], + ], + dtype=torch.float32, + ), + } + cameras = cam_type( + device=device, + R=R, + T=T, + use_tangential=True, + use_radial=True, + use_thin_prism=True, + world_coordinates=True, + **cam_kwargs, + ) + else: + cameras = cam_type(device=device, R=R, T=T) # Init shader settings materials = Materials(device=device) @@ -146,7 +178,11 @@ def test_simple_sphere(self, elevated_camera=False, check_depth=False): cameras=cameras, raster_settings=raster_settings ) elif test.rasterizer == MeshRasterizerOpenGL: - if type(cameras) in [PerspectiveCameras, OrthographicCameras]: + if type(cameras) in [ + PerspectiveCameras, + OrthographicCameras, + FishEyeCameras, + ]: # MeshRasterizerOpenGL is only compatible with FoV cameras. continue rasterizer = test.rasterizer( @@ -181,8 +217,6 @@ def test_simple_sphere(self, elevated_camera=False, check_depth=False): ) image_ref = load_rgb_image("test_%s" % filename, DATA_DIR) - self.assertClose(rgb, image_ref, atol=0.05) - if DEBUG: debug_filename = "simple_sphere_light_%s%s%s.png" % ( test.debug_name, @@ -193,6 +227,7 @@ def test_simple_sphere(self, elevated_camera=False, check_depth=False): Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( DATA_DIR / filename ) + self.assertClose(rgb, image_ref, atol=0.05) ######################################################## # Move the light to the +z axis in world space so it is @@ -429,8 +464,20 @@ def test_silhouette_with_grad(self): FoVOrthographicCameras, PerspectiveCameras, OrthographicCameras, + FishEyeCameras, ): - cameras = cam_type(device=device, R=R, T=T) + if cam_type == FishEyeCameras: + cameras = cam_type( + device=device, + R=R, + T=T, + use_tangential=False, + use_radial=False, + use_thin_prism=False, + world_coordinates=True, + ) + else: + cameras = cam_type(device=device, R=R, T=T) # Init renderer renderer = MeshRenderer( @@ -1443,84 +1490,291 @@ def test_cameras_kwarg(self): ) self.assertClose(rgb, image_ref, atol=0.05) - def test_nd_sphere(self): - """ - Test that the render can handle textures with more than 3 channels and - not just 3 channel RGB. - """ - torch.manual_seed(1) - device = torch.device("cuda:0") - C = 5 - WHITE = ((1.0,) * C,) - BLACK = ((0.0,) * C,) - - # Init mesh - sphere_mesh = ico_sphere(5, device) - verts_padded = sphere_mesh.verts_padded() - faces_padded = sphere_mesh.faces_padded() - feats = torch.ones(*verts_padded.shape[:-1], C, device=device) - n_verts = feats.shape[1] - # make some non-uniform pattern - feats *= torch.arange(0, 10, step=10 / n_verts, device=device).unsqueeze(1) - textures = TexturesVertex(verts_features=feats) - sphere_mesh = Meshes( - verts=verts_padded, faces=faces_padded, textures=textures - ) + def test_nd_sphere(self): + """ + Test that the render can handle textures with more than 3 channels and + not just 3 channel RGB. + """ + torch.manual_seed(1) + device = torch.device("cuda:0") + C = 5 + WHITE = ((1.0,) * C,) + BLACK = ((0.0,) * C,) - # No elevation or azimuth rotation - R, T = look_at_view_transform(2.7, 0.0, 0.0) + # Init mesh + sphere_mesh = ico_sphere(5, device) + verts_padded = sphere_mesh.verts_padded() + faces_padded = sphere_mesh.faces_padded() + feats = torch.ones(*verts_padded.shape[:-1], C, device=device) + n_verts = feats.shape[1] + # make some non-uniform pattern + feats *= torch.arange(0, 10, step=10 / n_verts, device=device).unsqueeze(1) + textures = TexturesVertex(verts_features=feats) + sphere_mesh = Meshes(verts=verts_padded, faces=faces_padded, textures=textures) - cameras = PerspectiveCameras(device=device, R=R, T=T) + # No elevation or azimuth rotation + R, T = look_at_view_transform(2.7, 0.0, 0.0) - # Init shader settings - materials = Materials( - device=device, - ambient_color=WHITE, - diffuse_color=WHITE, - specular_color=WHITE, + cameras = PerspectiveCameras(device=device, R=R, T=T) + + # Init shader settings + materials = Materials( + device=device, + ambient_color=WHITE, + diffuse_color=WHITE, + specular_color=WHITE, + ) + lights = AmbientLights( + device=device, + ambient_color=WHITE, + ) + lights.location = torch.tensor([0.0, 0.0, +2.0], device=device)[None] + + raster_settings = RasterizationSettings( + image_size=512, blur_radius=0.0, faces_per_pixel=1 + ) + rasterizer = MeshRasterizer(cameras=cameras, raster_settings=raster_settings) + blend_params = BlendParams( + 1e-4, + 1e-4, + background_color=BLACK[0], + ) + + # only test HardFlatShader since that's the only one that makes + # sense for classification + shader = HardFlatShader( + lights=lights, + cameras=cameras, + materials=materials, + blend_params=blend_params, + ) + renderer = MeshRenderer(rasterizer=rasterizer, shader=shader) + images = renderer(sphere_mesh) + + self.assertEqual(images.shape[-1], C + 1) + self.assertClose(images.amax(), torch.tensor(10.0), atol=0.01) + self.assertClose(images.amin(), torch.tensor(0.0), atol=0.01) + + # grab last 3 color channels + rgb = (images[0, ..., C - 3 : C] / 10).squeeze().cpu() + filename = "test_nd_sphere.png" + + if DEBUG: + debug_filename = "DEBUG_%s" % filename + Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / debug_filename ) - lights = AmbientLights( + + image_ref = load_rgb_image(filename, DATA_DIR) + self.assertClose(rgb, image_ref, atol=0.05) + + def test_simple_sphere_fisheye_params(self): + """ + Test output of phong and gouraud shading matches a reference image using + the default values for the light sources. + + """ + device = torch.device("cuda:0") + + # Init mesh + sphere_mesh = ico_sphere(5, device) + verts_padded = sphere_mesh.verts_padded() + faces_padded = sphere_mesh.faces_padded() + feats = torch.ones_like(verts_padded, device=device) + textures = TexturesVertex(verts_features=feats) + sphere_mesh = Meshes(verts=verts_padded, faces=faces_padded, textures=textures) + + # Init rasterizer settings + R, T = look_at_view_transform(2.7, 0.0, 0.0) + postfix = "_" + + cam_kwargs = [ + { + "radial_params": torch.tensor( + [ + [-1, -2, -3, 0, 0, 1], + ], + dtype=torch.float32, + ), + }, + { + "tangential_params": torch.tensor( + [[0.7002747019, -0.4005228974]], dtype=torch.float32 + ), + }, + { + "thin_prism_params": torch.tensor( + [ + [ + -1.000134884, + -1.000084822, + -1.0009420014, + -1.0001276838, + ], + ], + dtype=torch.float32, + ), + }, + ] + variants = ["radial", "tangential", "prism"] + for test_case, variant in zip(cam_kwargs, variants): + cameras = FishEyeCameras( device=device, - ambient_color=WHITE, + R=R, + T=T, + use_tangential=True, + use_radial=True, + use_thin_prism=True, + world_coordinates=True, + **test_case, ) + + # Init shader settings + materials = Materials(device=device) + lights = PointLights(device=device) lights.location = torch.tensor([0.0, 0.0, +2.0], device=device)[None] raster_settings = RasterizationSettings( image_size=512, blur_radius=0.0, faces_per_pixel=1 ) - rasterizer = MeshRasterizer( - cameras=cameras, raster_settings=raster_settings - ) - blend_params = BlendParams( - 1e-4, - 1e-4, - background_color=BLACK[0], - ) + blend_params = BlendParams(0.5, 1e-4, (0, 0, 0)) - # only test HardFlatShader since that's the only one that makes - # sense for classification - shader = HardFlatShader( + # Test several shaders + rasterizer_tests = [ + RasterizerTest( + MeshRasterizer, HardPhongShader, "hard_phong", "hard_phong" + ), + RasterizerTest( + MeshRasterizer, HardGouraudShader, "hard_gouraud", "hard_gouraud" + ), + RasterizerTest( + MeshRasterizer, HardFlatShader, "hard_flat", "hard_flat" + ), + ] + for test in rasterizer_tests: + shader = test.shader( + lights=lights, + cameras=cameras, + materials=materials, + blend_params=blend_params, + ) + if test.rasterizer == MeshRasterizer: + rasterizer = test.rasterizer( + cameras=cameras, raster_settings=raster_settings + ) + + renderer = MeshRenderer(rasterizer=rasterizer, shader=shader) + images = renderer(sphere_mesh) + + rgb = images[0, ..., :3].squeeze().cpu() + filename = "simple_sphere_light_%s%s%s%s%s.png" % ( + test.reference_name, + postfix, + variant, + postfix, + FishEyeCameras.__name__, + ) + + image_ref = load_rgb_image("test_%s" % filename, DATA_DIR) + if DEBUG: + debug_filename = "simple_sphere_light_%s%s%s%s%s.png" % ( + test.debug_name, + postfix, + variant, + postfix, + FishEyeCameras.__name__, + ) + filename = "DEBUG_%s" % debug_filename + Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / filename + ) + self.assertClose(rgb, image_ref, atol=0.05) + + ######################################################## + # Move the light to the +z axis in world space so it is + # behind the sphere. Note that +Z is in, +Y up, + # +X left for both world and camera space. + ######################################################## + lights.location[..., 2] = -2.0 + phong_shader = HardPhongShader( lights=lights, cameras=cameras, materials=materials, blend_params=blend_params, ) - renderer = MeshRenderer(rasterizer=rasterizer, shader=shader) - images = renderer(sphere_mesh) - - self.assertEqual(images.shape[-1], C + 1) - self.assertClose(images.amax(), torch.tensor(10.0), atol=0.01) - self.assertClose(images.amin(), torch.tensor(0.0), atol=0.01) - - # grab last 3 color channels - rgb = (images[0, ..., C - 3 : C] / 10).squeeze().cpu() - filename = "test_nd_sphere.png" + phong_renderer = MeshRenderer(rasterizer=rasterizer, shader=phong_shader) + images = phong_renderer(sphere_mesh, lights=lights) + rgb = images[0, ..., :3].squeeze().cpu() if DEBUG: - debug_filename = "DEBUG_%s" % filename + filename = "DEBUG_simple_sphere_dark%s%s%s%s.png" % ( + postfix, + variant, + postfix, + FishEyeCameras.__name__, + ) Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( - DATA_DIR / debug_filename + DATA_DIR / filename ) + image_ref_phong_dark = load_rgb_image( + "test_simple_sphere_dark%s%s%s%s.png" + % (postfix, variant, postfix, FishEyeCameras.__name__), + DATA_DIR, + ) + # Soft shaders (SplatterPhong) will have a different boundary than hard + # ones, but should be identical otherwise. + self.assertLess((rgb - image_ref_phong_dark).quantile(0.99), 0.005) + + def test_fisheye_cow_mesh(self): + """ + Test FishEye Camera distortions on real meshes + """ + device = torch.device("cuda:0") + obj_filename = os.path.join(DATA_DIR, "missing_usemtl/cow.obj") + mesh = load_objs_as_meshes([obj_filename], device=device) + R, T = look_at_view_transform(2.7, 0, 180) + radial_params = torch.tensor([[-1.0, 1.0, 1.0, 0.0, 0.0, -1.0]]) + tangential_params = torch.tensor([[0.5, 0.5]]) + thin_prism_params = torch.tensor([[0.5, 0.5, 0.5, 0.5]]) + combinations = product([False, True], repeat=3) + for combination in combinations: + cameras = FishEyeCameras( + device=device, + R=R, + T=T, + world_coordinates=True, + use_radial=combination[0], + use_tangential=combination[1], + use_thin_prism=combination[2], + radial_params=radial_params, + tangential_params=tangential_params, + thin_prism_params=thin_prism_params, + ) + raster_settings = RasterizationSettings( + image_size=512, + blur_radius=0.0, + faces_per_pixel=1, + ) + lights = PointLights(device=device, location=[[0.0, 0.0, -3.0]]) + renderer = MeshRenderer( + rasterizer=MeshRasterizer( + cameras=cameras, raster_settings=raster_settings + ), + shader=SoftPhongShader(device=device, cameras=cameras, lights=lights), + ) + images = renderer(mesh) + rgb = images[0, ..., :3].squeeze().cpu() + filename = "test_cow_mesh_%s_radial_%s_tangential_%s_prism_%s.png" % ( + FishEyeCameras.__name__, + combination[0], + combination[1], + combination[2], + ) image_ref = load_rgb_image(filename, DATA_DIR) + if DEBUG: + filename = filename.replace("test", "DEBUG") + Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / filename + ) self.assertClose(rgb, image_ref, atol=0.05) diff --git a/tests/test_render_points.py b/tests/test_render_points.py index 28d05177d..d64a42117 100644 --- a/tests/test_render_points.py +++ b/tests/test_render_points.py @@ -23,6 +23,7 @@ PerspectiveCameras, ) from pytorch3d.renderer.compositing import alpha_composite, norm_weighted_sum +from pytorch3d.renderer.fisheyecameras import FishEyeCameras from pytorch3d.renderer.points import ( AlphaCompositor, NormWeightedCompositor, @@ -84,6 +85,49 @@ def test_simple_sphere(self): ) self.assertClose(rgb, image_ref) + def test_simple_sphere_fisheye(self): + device = torch.device("cuda:0") + sphere_mesh = ico_sphere(1, device) + verts_padded = sphere_mesh.verts_padded() + # Shift vertices to check coordinate frames are correct. + verts_padded[..., 1] += 0.2 + verts_padded[..., 0] += 0.2 + pointclouds = Pointclouds( + points=verts_padded, features=torch.ones_like(verts_padded) + ) + R, T = look_at_view_transform(2.7, 0.0, 0.0) + cameras = FishEyeCameras( + device=device, + R=R, + T=T, + use_radial=False, + use_tangential=False, + use_thin_prism=False, + world_coordinates=True, + ) + raster_settings = PointsRasterizationSettings( + image_size=256, radius=5e-2, points_per_pixel=1 + ) + rasterizer = PointsRasterizer(cameras=cameras, raster_settings=raster_settings) + compositor = NormWeightedCompositor() + renderer = PointsRenderer(rasterizer=rasterizer, compositor=compositor) + + # Load reference image + filename = "render_fisheye_sphere_points.png" + image_ref = load_rgb_image("test_%s" % filename, DATA_DIR) + + for bin_size in [0, None]: + # Check both naive and coarse to fine produce the same output. + renderer.rasterizer.raster_settings.bin_size = bin_size + images = renderer(pointclouds) + rgb = images[0, ..., :3].squeeze().cpu() + if DEBUG: + filename = "DEBUG_%s" % filename + Image.fromarray((rgb.numpy() * 255).astype(np.uint8)).save( + DATA_DIR / filename + ) + self.assertClose(rgb, image_ref) + def test_simple_sphere_pulsar(self): for device in [torch.device("cpu"), torch.device("cuda")]: sphere_mesh = ico_sphere(1, device)