From ebabe204d9f7424a6d8d71b0a1d1b3f9ea87308a Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Mon, 4 May 2026 16:47:02 -0700 Subject: [PATCH 1/6] Add rendering functionals --- CHANGELOG.md | 3 + docs/api/nn/functionals/rendering.rst | 81 + docs/api/physicsnemo.nn.functionals.rst | 1 + .../rendering/isosurface_render.gif | Bin 0 -> 40831 bytes .../rendering/isosurface_render.png | Bin 0 -> 4365 bytes .../rendering/line_integral_convolution.gif | Bin 0 -> 572189 bytes .../rendering/line_integral_convolution.png | Bin 0 -> 63902 bytes .../line_integral_convolution_3d.gif | Bin 0 -> 544099 bytes .../line_integral_convolution_3d.png | Bin 0 -> 52836 bytes .../nn/functional/rendering/mesh_raycast.gif | Bin 0 -> 83885 bytes .../nn/functional/rendering/mesh_raycast.png | Bin 0 -> 3328 bytes .../line_integral_convolution/README.md | 21 + .../line_integral_convolution/render_lic.py | 166 ++ .../render_lic_volume.py | 248 ++ examples/rendering/mesh_raycast/README.md | 12 + .../rendering/mesh_raycast/render_mesh.py | 154 ++ .../rendering/sphere_isosurface/README.md | 13 + .../sphere_isosurface/render_sphere.py | 129 + physicsnemo/nn/functional/__init__.py | 18 + .../nn/functional/rendering/__init__.py | 46 + .../nn/functional/rendering/_torch_impl.py | 104 + .../nn/functional/rendering/_warp_impl.py | 2072 +++++++++++++++++ .../functional/rendering/isosurface_render.py | 151 ++ .../rendering/line_integral_convolution.py | 74 + .../nn/functional/rendering/mesh_raycast.py | 128 + .../rendering/point_cloud_render.py | 111 + .../rendering/scalar_field_to_rgba.py | 90 + .../rendering/vector_field_to_rgba.py | 96 + .../nn/functional/rendering/volume_render.py | 109 + .../functional/rendering/wireframe_render.py | 107 + .../rendering/test_isosurface_render.py | 149 ++ .../rendering/test_lic_and_raster_render.py | 204 ++ .../functional/rendering/test_mesh_raycast.py | 176 ++ .../test_transfer_and_volume_render.py | 225 ++ 34 files changed, 4688 insertions(+) create mode 100644 docs/api/nn/functionals/rendering.rst create mode 100644 docs/img/nn/functional/rendering/isosurface_render.gif create mode 100644 docs/img/nn/functional/rendering/isosurface_render.png create mode 100644 docs/img/nn/functional/rendering/line_integral_convolution.gif create mode 100644 docs/img/nn/functional/rendering/line_integral_convolution.png create mode 100644 docs/img/nn/functional/rendering/line_integral_convolution_3d.gif create mode 100644 docs/img/nn/functional/rendering/line_integral_convolution_3d.png create mode 100644 docs/img/nn/functional/rendering/mesh_raycast.gif create mode 100644 docs/img/nn/functional/rendering/mesh_raycast.png create mode 100644 examples/rendering/line_integral_convolution/README.md create mode 100644 examples/rendering/line_integral_convolution/render_lic.py create mode 100644 examples/rendering/line_integral_convolution/render_lic_volume.py create mode 100644 examples/rendering/mesh_raycast/README.md create mode 100644 examples/rendering/mesh_raycast/render_mesh.py create mode 100644 examples/rendering/sphere_isosurface/README.md create mode 100644 examples/rendering/sphere_isosurface/render_sphere.py create mode 100644 physicsnemo/nn/functional/rendering/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/_torch_impl.py create mode 100644 physicsnemo/nn/functional/rendering/_warp_impl.py create mode 100644 physicsnemo/nn/functional/rendering/isosurface_render.py create mode 100644 physicsnemo/nn/functional/rendering/line_integral_convolution.py create mode 100644 physicsnemo/nn/functional/rendering/mesh_raycast.py create mode 100644 physicsnemo/nn/functional/rendering/point_cloud_render.py create mode 100644 physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py create mode 100644 physicsnemo/nn/functional/rendering/vector_field_to_rgba.py create mode 100644 physicsnemo/nn/functional/rendering/volume_render.py create mode 100644 physicsnemo/nn/functional/rendering/wireframe_render.py create mode 100644 test/nn/functional/rendering/test_isosurface_render.py create mode 100644 test/nn/functional/rendering/test_lic_and_raster_render.py create mode 100644 test/nn/functional/rendering/test_mesh_raycast.py create mode 100644 test/nn/functional/rendering/test_transfer_and_volume_render.py diff --git a/CHANGELOG.md b/CHANGELOG.md index f19f4718da..e4f7b225e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added geometry functionals in `physicsnemo.nn.functional` for `mesh_poisson_disk_sample`, `mesh_to_voxel_fraction`, and `signed_distance_field`. +- Added rendering functionals in `physicsnemo.nn.functional` for isosurface, + mesh, volume, LIC, point cloud, wireframe, and RGBA transfer rendering, with + Warp kernels for rendering and PyTorch fallbacks for transfer functions. - Adds embedded OOD guardrail `OODGuard` at `physicsnemo.experimental.guardrails.embedded`, optionally wired into `GeoTransolver` via a new `guard_config` constructor argument. diff --git a/docs/api/nn/functionals/rendering.rst b/docs/api/nn/functionals/rendering.rst new file mode 100644 index 0000000000..6488bb3ce5 --- /dev/null +++ b/docs/api/nn/functionals/rendering.rst @@ -0,0 +1,81 @@ +Rendering Functionals +===================== + +Rendering functionals convert tensor fields and geometric primitives into image +buffers. They follow the same stateless functional pattern as the rest of +``physicsnemo.nn.functional``: tensors in, tensors out, with implementation +dispatch handled through ``FunctionSpec``. + +Isosurface Render +----------------- + +.. autofunction:: physicsnemo.nn.functional.isosurface_render + +.. rubric:: Visualization + +This animation ray-marches a moving sphere isosurface from a scalar field and +colors the hit surface with an RGB volume. + +.. figure:: /img/nn/functional/rendering/isosurface_render.gif + :alt: Isosurface render animation of a moving sphere + :width: 55% + +Mesh Raycast +------------ + +.. autofunction:: physicsnemo.nn.functional.mesh_raycast + +.. rubric:: Visualization + +This animation renders a rotating cube mesh with per-vertex colors. + +.. figure:: /img/nn/functional/rendering/mesh_raycast.gif + :alt: Mesh raycast animation of a rotating colored cube + :width: 55% + +Scalar Field To RGBA +-------------------- + +.. autofunction:: physicsnemo.nn.functional.scalar_field_to_rgba + +Line Integral Convolution +------------------------- + +.. autofunction:: physicsnemo.nn.functional.line_integral_convolution + +.. rubric:: Visualization + +This animation shows a zoomed-out center slice through a 3D LIC field computed +from a rotating dipole vector field. The LIC texture modulates a jet-colored +field-magnitude image after starting from fixed random noise. + +.. figure:: /img/nn/functional/rendering/line_integral_convolution.gif + :alt: Line integral convolution animation of a rotating dipole field + :width: 55% + +This animation renders a steady 3D dipole LIC field as an RGBA volume with +``volume_render`` and overlays a rotating wireframe cube for spatial context. + +.. figure:: /img/nn/functional/rendering/line_integral_convolution_3d.gif + :alt: Three-dimensional line integral convolution volume render with rotating cube + :width: 55% + +Vector Field To RGBA +-------------------- + +.. autofunction:: physicsnemo.nn.functional.vector_field_to_rgba + +Volume Render +------------- + +.. autofunction:: physicsnemo.nn.functional.volume_render + +Point Cloud Render +------------------ + +.. autofunction:: physicsnemo.nn.functional.point_cloud_render + +Wireframe Render +---------------- + +.. autofunction:: physicsnemo.nn.functional.wireframe_render diff --git a/docs/api/physicsnemo.nn.functionals.rst b/docs/api/physicsnemo.nn.functionals.rst index 3edfc950a1..734876b165 100644 --- a/docs/api/physicsnemo.nn.functionals.rst +++ b/docs/api/physicsnemo.nn.functionals.rst @@ -24,3 +24,4 @@ in the documentation for performance comparisons. nn/functionals/fourier_spectral nn/functionals/regularization_parameterization nn/functionals/interpolation + nn/functionals/rendering diff --git a/docs/img/nn/functional/rendering/isosurface_render.gif b/docs/img/nn/functional/rendering/isosurface_render.gif new file mode 100644 index 0000000000000000000000000000000000000000..c254fad8a46c64630196c19f495323c6619b8c42 GIT binary patch literal 40831 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 literal 0 HcmV?d00001 diff --git a/docs/img/nn/functional/rendering/isosurface_render.png b/docs/img/nn/functional/rendering/isosurface_render.png new file mode 100644 index 0000000000000000000000000000000000000000..3406ef01dcc84e0205e6a42e8d3376d7b371246c GIT binary patch literal 4365 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 literal 0 HcmV?d00001 diff --git a/docs/img/nn/functional/rendering/line_integral_convolution.gif b/docs/img/nn/functional/rendering/line_integral_convolution.gif new file mode 100644 index 0000000000000000000000000000000000000000..427e13b7fbe52a4a6eea6e72c1438af8d89921ec GIT binary patch literal 572189 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

`F{k$r0{*z;VMhS;VHy&Z&85^(IktC28rTi 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

*n5ORy?`Des*#5OoFRrK=FI^wUz(6u+FoZ!Zzbl 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

vH+XLY|A3k4^wj4Ioi6ZL??EVqq3e{t8v|;9&qk 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 z

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%0DK9niZ{zHfPnI2iwjs8`zqqdl_9|93`s7TH`m_z% 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≠_M&08-hH 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 literal 0 HcmV?d00001 diff --git a/docs/img/nn/functional/rendering/line_integral_convolution.png b/docs/img/nn/functional/rendering/line_integral_convolution.png new file mode 100644 index 0000000000000000000000000000000000000000..48cd31338cb3201e1999052e40120e722f4d8d82 GIT binary patch literal 63902 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�I-p9}=*6vV!CiBFp`4XM>%{wU0;`)zB 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%0Dxt$koG7WAyE(dV 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

Lb>u=&Z4^#X$n3ZCkW_sZvwUO%cIh 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 z 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 X9=W)g;da;>AYk3azz>&Bahy%)-iddWF5S+qE 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 z z6w&Aykr7d$T^M2%M&UzLeegXyN0vH=oZ*b^1cy9!e5e}D;#>7nL083L?WJ3NZ zP$(!AxKReXVI|*T9KtcBn&}wY#TZI~6womp;f1|KZ4+7nge*ZGEg>i&fgahw6YWtS z_c1ADz!YT-_QWonrZ6hQDVz{&*A!AFz6D(Lh9)+E!J_I|g7H*zC~u-843on~oN8_+ zCWy@J0+0#>J`yC8XC%=ecJvKH|2*LnOyL-q!5X$<99YsNwZR%FFQtw_CXL}2Ou;5` z^71CJCxbFFB@-Uu?+x034eap?k`gIVQUCfe3;ypZp)x9IU@A>BoW_Ybt}-jXC2wfL zsL0N=ByuA2#*)S|dmM7^G9WFHF`mp!!D#FQaP0(aAP*t!3`UX;?D9e|WE1rA7@)x~ z0rMSNG8+cd8ekG88F41x<@+!XYkCqBf)W!jArmq|C`D+5+Q1Fm;2!spGxL!tV?Yaf z3N*!z)}r#83h*?;sU-@AH34)+L?AXxO9f^V09IfLR-l~{lp^(JK@pHfb`Jwe02zPt zLc`4Ah%Y*fvL_~FF##3O%)sn7GZd)2>BdSTr#?bC^UXxwi$wR5MYCZX-T@xq z;aC7Q8IS=+Wwc#XBL|V}Mt8IodeS^E!4mYS5h9gq*Z?y#GYOG0|GEH4lT`UjOCA_p#7HK8M$+T_{_r5IGa4o1rq6}CB4f@1i zKH^X6^u1aEPnE$M|FB_C{WKl`HCm6QP(5wl67@zIl_wb$rYv!qeiTSAbrj!oQnj+hl2$N?VeAs)sd8>F>k=K^ly$+cY1HD=GXr({-1+jU9#&?M#+4uWGP3UC!+fT#j83}TgEz0_1wVg*=&_Dl=4 zkjh{`(gxf$VHcJKZR1?t3qyJk$tadt#Q|gIVH~z$Y{&K*Jl10+kq0?p$vn?SUy8D3 zV>VEhYu3OM|Lb-QT6P~d_5SehWnZnoYBq3VwmwHVr7#daI6!5WgG z7>J=5kl}1Q);Z~oA{>>n4#8e5@pme94cGt-@OD#4@kqVE{$BQFmsfD5R|~da3lvsZ z`($TLm2m^i$_~zPA2%hA<#J!qawAs^NRtYSBj*ySS8MHaL3d6ig>*TBG#G_q_3wFQ*3~?V3%DRjs~02|c7@8OB*dV4>$3?DE>y*LF3@)hE!T2s;Blvr zR;ThlN8kp43bZ^G4CI%7jg_RZhV#4+USu#E`WGGQ!5+%tip5rnqX8P8AsG~SfwR*v zjlqGXH4`Qnrrr;DfXDtmIE0(GgW0%^L-={=SPS6zj`4V#TKI5bxO)9K3urh7Le-Dw z;&FX=sCL*?w;)t$;G4o=O2f(4M2ksHAO>^;j=@HWmpCFgPwCV#iusou-K}!01UdODDBY`HJFaO;Dhn_n2}hI z|FM^|{J46lYzfVkKGk&#j)h&bU<vX%QWcsF)L57A zwkU^Lj@$SP)Ibe7SPg*ZYxqT(Kcbma*t4Md3s6{^>$7@~Wszn0nya@@nz@;~IZ7kh zQ;RsXJT(Tk&W^bq&;jp)*>eS51%o7=^jOtVJ4y|4W*X z<)WqWI^}>B0>jmG98V z0jbMD9I}C_n;ILSx<##Xs*eE}cHydZVH8NgJ56B}crX@RA+}MM6TDh3#9BSspbgpp zcz{{1MbUWGdg}fy)uK#N;Ft^201172r15$#JQ{`lI1QRP4XB$7{8%JXkcdI|2HrDC zyI|`$7>=oqHWnKj1CgYFTD3`GwT*!pxM3v+7#%PcsnKDntKq(@p?~?8MPCvbh~XD@ zA;5KEy-R^RTN@N?K^9;;7C5279h?&~p|$}a9v#6lbsKmtb7jM|ZY%Yc|Ls8PhTGq! z4vv$%qLtgMnY)=!dJEthuBrRQx8TLA`?|N=QwtjvHx&$?_l`dt8%0ASG~y84$el@{ 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

n{ z^|R8{>2gy^@w6UQ7jv9+Nz^HC$K{}$Txq(_zo&n-f&B zNGInhB_3{6`m_n9l1c&lOW;hPr>G6%AABf{$_{FkrACuE0h%2kHrz$?jkzcx3+vuD zrN>HGfx=kjt%Cs6MNn?gNOZZEJxHYXU3<~u=fd>I7ksvV=j;E%ZI=2Kc%tVjL#7Nh`7o(+er{VZh?$EU0P)81JS{kS<)ktq7=>1?#lEe+@3hEx|Ecq(S zxs}$nB3Bo$jRfb{8!p%{UC^74pQu8oL1gtLc(w6GpAGYW%~#xFrf*1w`p8T8DH2-> zcXVBx?s@a;xp&TAE0?|Y`oD7MEvf=Xtr zwV~>&W2&-gwd~rGA>PQlU`|7}dw=hPOn3 z)T{f=lvB(Qv+h}WXh9jx0qX-&WX>aXnphM^F*&HyQ2lvpc~mi-e0ymPSrokB#XdVS zd{Fxj>Yu8FPv_7+Rfn=miJTAcpX5IKSl@T{@l+hLS>_Zs6$EAOc}#_~`csD38R+!K zp5_LIOk|?XsXW4aNYtkNf%|BPlV;`F5;^I8+|(l44y63-7~!3SLE;E02rzY%Tw_iW zGx&Br<32kLi{3z8jOvypuBjX;+-excPkR}j`8G2hV5whAGc~u`*QdC4`b+a%(-x8J ze092wbW(xP)|@K7(ilhZl7v>(Uvb0TBLV6OHI{PE!M;aqA{i&%hQ{48yxO*}6s0Z+ z%!m-*K{@!>;$C!?YByOJM{*sRChQ{*;D3^aT$)Y6L{(+Wi@2kiOy4al>DK0=IKe0A z@P&PRFNa?q6zt9B>1)QLvol@DbWM3D)x)Gwj?;F;mBN82^|WjRIeGmcrHft8D^?$_ zwX1sH*?AD>SXWqS3)49O`PXCo^q1)wkJr5VHZx5J_4$wZjrnGG-qqKkBSsj65)_?@ zj*9a4SbTw24jMs4TpNjp-t}mDK2ZB~0U3&uWYr*b3a0SWyJ=59gN3$LYUwXi6``-) ztA?nAFNx16P&)4<4C%0*qb34J0qlKaNjItSJp?w7UD>Zpjk=fbXLE-J#{%G7XO&?OTu7zoOhD)5yP^^5Mr#>LOD!H^`c zxr?Nva*aw4^gJe=#G@#iaeafJ(Gn38^V(HjzWABrglF?#W%3SLDd^bg0bn{0j?l6F z7%{A8udIHR5b3D;I=<@%%_Z>AT(%zSm>|0*aZ1*vVD5gU6>7-o|13yf$nZ;zCSR-2Adm>qZa2keya$ zl+Tb5ZOwEq$gbisgp&>oN$A~FGN(b=bb6~RkrBg6`8ZCg`=#Lxe{4IJP8yMUUXOkk z)ZaCeuYx|mJnY3Q^9Np{HplVG+d8PPkLctxpWZ6>Tvb19NuTx|L9I7xm5qF@7;5n* zo}N#c-}l3PP)n3P2JQpdv6UUW3(qfDwEHc5$$hK~wu9A#wQV$=LtAR%X3;Y2N9jS; zY2+bbwv*rW!(?{C;Z^bRpUnG$qV~9k&TRKj6KbTMtNuF!g0=>h%%@aJ4_EFU?O5#* zn;K29l~VK41AIm3+Pg%u>d@3_9Eq&cRm?_Zvqo4o&KqbWQ($~pd?ap1>X?4bj$YBi zLB-C=moB&<^s>~KQF-bZj#q!(aNpPQEn)aS>zOT0GJhZq(yNw2aZ-~w%GVY+BlyV# zsC(LqU5Z)RWYb3%T+mH>+Y^iERBySuV!~)|Amx1A%|5s~H^MkQ9vSRiH^6;!jSzK< zK4_q37HIThVcLpcCuJRfCfrv5bm^w!NQ-n?Yy;HQy!_!-9-aTp!-(&6Z1TCjd2TEm zgqAq$qDGvvr9eDF3Jz?aopp z&~F|s+~dXlFEs9QY>jSGp?_%jkrAJ8vE4i18++-e;dfqj3&#(?`OO$m8K3*9e!R!w zqm3gItj3rhRK2un8K%?g#->oJVqg-G_bQG6)P9LB2X%8O17T9BxKd9kAwB@Bl$L=u z6FZY_d719Irq6=;DQReO5=u;S_-5^0P?@ZTcx8vm!1^I(SPW$_+yN)3sj`^dYCLh` z>VDsz89Fl0cRM3g6p|A~y@gnXqDMJsKd{fE3@9G|+Be@=<5YYvYDf0x3UHw2{)-7-5M=rtc}>I zt(JO&)l;7S{IddmNZK`5Buu_~LgEBDf)q2+o`CnBrYR4q z-h|p?_M}%4@WDU->l+YV?2j*OV6;yO;)w!3^=_jB_TZ;HTI>jUtuSH zqNmhRx7flle#VQ2Z5`Ij@!H#zr@r}3ex|2Cr8!7JE@*OgnLw3LHOSV$TJP-QCdFE^ z)8(&P%4!--uZoik>-&-E2^V%*1!n8Sdys)9RoCubNK>%D*NpiRxofIGhL$1qZsfTU zUx>hL^&4%Y#ye6h=(ETZ+H`4cwA2}>yZ&+5hqwQMZ>}qwy4gckFkh!}NIgfybeVrl z)1YR#GmS73S>!JRS2Db8D+ChQft|zz^r9LBucV|;1dva-Cg;sC(i@#vgI@kC)B1Um zYm=h7shxyp!?VV|Yw1*@&|d?WqSq8XRGh4Bn6~lxP(V3ecgtiS9{R@b#49}eA;XAp z6Jg+coU59&g^A{xYjrBzr}o{amg?(t-`A+jHX-TAGu7;hFOs$3;Tq9&@OqqYk!}g6DeA3QYVA?tKNd_u5Tc9 z9<#uEXQ~1b;Tn|zvrRB16=r{xPSn=s6%Hd_HARZI-dkPY35are>2ULumy; z!}!97oCEc)QLR<=&RfDZ+BcXvDu>kfdS@o=WwF83U)SUFWLuRjSGl20a_8+GIjS zxTY#9n`!9^$QuYg_eo1%P+4Xl*oMb`d+4 ztDi_J?ZG3xIqxXrZ%=eC*fx0R`Rpc!V|?*bVYQdb@%mdd{Ex4N&d>OQN1VT1!Rb1p zoGn%}TpzxYH*vM3Lns1NV{diJ_V`7Tm;hic{*3NfB=Kd=&=@zc!5SL#yb<$p-$Bh7 zu#Ik}x}H+G1y!RwWg+m0UQ>^&Em@1HLoJHVEnu`k69Ki5FLO$dZRxkGx$aB|1<1Fzg4kA*8m( zy(w7GyCw{WlYnQdkrFXfyeye6(^4DuHEv1`T>xnRljGaa52vwGm(FUO`bRB2BXeNMhW%0<$Bh@5Ki4_nTl3W+N! z_1z$0B}6Ea`qAu!E3anL7%N-k){_a!RXum`KZL*VY0akNE!V77Qd0w#_@{N;v0hu9 zY`9GAo;4X|op2+s<2&WXG`WT9{D6aWQ7os6SS;%)!y@auyPZy;TopN)vW@CKka4W<;Mz3uF<5mvChx%LT~fVhFmLs-Ysk)h1Py z2(lE5Y4W_GPrw=^KPZW}wQu z1~!$u3LH`|9#xCnC;f3VcJ@hGs~O^tDh0t@`^?anY3LSx*hnE@rd7yBY|Ey(^Mt8D zqbnWCKpUa1EiyEkR?t@UWQn>l@FF=IQR8Y*5w#<-Sgs*uDkFXZXvpJdy->OD@v7UT z{Jt?A)Q29jt7{^M9n5aLyz2WNhKoZ zK|4*G{ey{V$Ig0rbg}8s$&$+hF|^kLNpZzmWx;=upfX(v5+HgjCpIJ?5S=CFOur&# zXE$ej?Bk0bh8*tKeakPg3iSuQ`p3Rg7)ZZ&Ss;8S6SbIKh>D>21N`Teiq0k3f|0k%eRua+i^F&;oxg8y$fHvJ(kw3lS79 zM*;HZA9>Stdy|(HcagCYUWR`T`-IvEMgmtc?kJ@ujtR^ESu+SuZ>Mw{s~O+EB5mv5 z)2}nc0?NbVS@14(lfj;x^o80`cDC5nf)zXSH0pj5pw0iKX5vBtS-y&9j- z-+6Z#8{Wr`VqdSQK#v#E1`rykIyCqjW@{wMH~z7wI3y1)(=<;7her^VYb>RgdIurV zF<81!z!!D6Zyr~8=WY*b7G@FZ{NV(@k-%@8R3*oftCRN-gq$|2;0j$?@%occXP%u| zzA)FUrVb0l62i1!fFtDj?z~cF1#t+|mz(JVInLvApEg`>5c!%4Bhs-fMhqhH@CsT?_nL-Ce~ha*buewq*%Ot8+~X4`%Exi4$WiG| zydD28LWWaMg_2@PrH7eD1DC<*9?3SfO5$Mbrw1>9*<=ygZS4uSfttRO;}Q}Ts8;;I znfw$_ci>%S8IEL?X_qOF7PleLvoTZj6gV&Jr+gef_FI17_R#-5-^;aCPiR%Vu8>R< zr|!nz?)wzy=-7Y!r|y5k1tR!H>C;!$Y0ef7b3VM%U>}e5;QpRb2(b3^Fi@blX7 zTr9+>)x@seWSZN|=C~jNuh%4Xg%wW=>z0_a~%bRj4?vrvfMOg8e zoi(y=OUsvWGZ_Gb!r_Oj!XpXOCeMBTlX5{^?PBWt1``-xj^ zy$tls4!aUfiPCUEo4b&e@+zIgKOz0o!-0^~hpCan?2TrIh)Hu4=)qmdGs7r~7&@(q zW{T31maXk|YCrJnJ>L8@5~Ns2;l|4wt+Z)?`7l%Wd_{i;Iy{cYtO0G#bBgND%BbjW z*7q}Y;nf(Y(7YSBbg@1b$EZg5KOL6nr-HU+5+G16w0 zg5r-*De)qB&pHEB^fKi)Jza=@$*FOR#dT7RR}{97&*kAm;~F(+;JjL>lu0;tw`#b! zKcZ1)K`s^Oq zU9f>bshA5g>9{6T})Ecu@$Ea_ZAS8TlsGF zSg@IO6+EaiS31%1BYX{yn~J&whllu}loQU!g;%VT&tQ>u)<5AunP6<=)C1xNmBGU6 zDs2I_J+PhL8>rjSwY9j-h$L5tH}+aEgBYf`csN3s02GMYtelHM+N&UC(OcnUPe#X3 zQwcUA$wu#4JNU+N`s9y6VfdE6daJeV-v{#4^idza|Ipw3pWEg1e(yda2N;HF9d>xo zs^BD)-#2_otzVYmG_$3ie*LkPdJ4SC!tl)sc-oX=f|`j-N@{XiM#w?i0(j-B8z`L7 zSXr+QP>rwwprQvI)@f2*1$%{ohPN&~22Ha{os6yuSCLsAsS{k?sS=23ssaC*e+9qM zx=X&XjCs-Aa#Px7icuLFkkuD(uVSD~gq#GjQ{a|oCX|AsX1PLwbhgf`{IRhLY0CVF zcY3n*Hfd5CQ6V<9FR+rhomHw9e^weh~6qxaUVr-DeksBOk^prN$i!erecRyCF5c z{T>iuRY`2gGLOdz^2Rlud4i>?EO7o%)6hT}FyYhq5jVmymQnE6`+oc5XE;kXqd2!d z?%OmY3Qq@Z)KORO)E!3|C?g~clgQ*m(?nUO<|V?ovOZ<81DrAQ2LViGv6vT9oXhl| zl>4Y&(~O)bQG#iiSc|{s@rVky9tUpcU+7ffvp6u-O5u4!r3wG-gt+*AcE7BPitin!Lq9rARVxTkU-ht9-6e zetA3OV8|k1TQs!li4%W0i-Q}Vwx2d$84hdCY_J)FpO79~?NSCPi9HreG-dal*q?uxcfPFL+u zF9|hGQ#qtQapHs4riL%I^X>K!A#}48*DF ziJvfR$Ns(Fe`S}y`$PDUOhlQPuRkv%5GXN3w`JHLwepTQbq*ReeOvQuG*ifyjN@6b zC96r?Y55mcNWyF2u?~RaJJ%y{4utqU9pSXXW64lzma_5+e$B4#iA$S|j5A9rlX{*? zUQ3oHGcR<^o^p}NHO8wZQ4*8s%Lxe3K;t`&FgGbYk@=XCD2pT}A7ZOVXP70U0h@eo z*a3qZJ?Q%HVOxN8M6q%hpxScSY4V2o~S01?~Pkh%$0Co2sr^rO0F#i zLMd~xFq3_&&dY0vnBz2orO|XC4UH6V2@4!6_aNS|EmUx(cZO4{T**MEo-XVB=#L&| z?osjXrJa?NNH^>)AqVBw9u!H(U2lLK&t3}C@fh;H?bg61JdL9~sHLfPq|s=8pr!`J zp5;8g_kG%DR7d;75`IYfxT%Uan1Q3>2A#e>=#3vX&lh$bWm0mM`%J$(;k=SC#&fTV z$HXT2HfH~3Bzxqah_0qdcqM3bMEmiy0`}Pwi#skHu_Gi$sZoQR>``$j2L?JZRiHw> z6N11Z#@w}8BaJs<*Ofs|$?mCrtLP&k z`Ul4q`!3z9CN5`Gfnjr8lt#y4S;%)8=9StXG)HOfZC)8lO3ErV#{K&m6g7S9CuA*A zR`ZP7_@QGGtvvm3;Mtj(n)OpsA|r4mb3j#OYOIlw9jH68-5Kp~@joV@qvY=5SDD_? zaL4UHphq`=3Bb5c(>hW4gMthE>vjLJXZ-E@49k9_&ON&T67k19T2RHW6EtdQ+&-ON z*cByRx)*$Qx--3O5M9Plp{JU^6f{Qbq!W#6LCXs^&)!t-mMqe;S?X8O;P!H#X06&& zRRZE6CQ%BR?;7dXYDyPoDL1-4{?Js(ERyPzVukKP!P|x};+c}NFX=q9%W!=0#Fh~e z0l=hdraob>#Kd{!O_g9rG>4RE8(WOL=O~(2mN?oUQl{L^SJhX@8F|Y}Z0Rp+!3Mml zU`H_OH-22DAS0Z%HeOn`IQpwVr>(rq+?^EwKif*+ATSQ;b*I+5bsqh%IW2xGDTYRII9Y(*MT z*HkHK^;(3{h*j5GZ~}-JT|Gi1n~wLj>Y@0aO3P!Ta$Fi0=Vx~xfUuGKU5yVKGTsqn zG;^h$Gnd3pTzZs^@}cdx)m$nIB~)Od1^?XeL8!*y-ii{;;(b+q%&W+Pt(<|cD@k;s zLYq!NQi#|7mUM00=f{0)8(;I7wYVc9)n~&ZOq2S1B#Y=A3Pg>xbf0(d=H`jl@-HHIH3?LTc?r@ zUw@bF${jQf1Qa}4YevKxSGdNhEIlT&su%!a{~reBt6q1>o`onX)G6+mTT9A(D@k8XrqKkU&JN88=ykkn?V3fgGUs@QMQeg3&jsw8%XB%Z90;N zk$Ay=FY-~u0QBv)d4qv2xW`-Y9^a_H@zCFG?h_qX4MbQgiY;=oq)1XOR)_Kqm<^k8LQD*b)|Hoj)-z6 z)v1CrYdVE1naFJ925Q}wPrPudcRx`^(1O8-&X~XCbXR~Wf z>ba}as64^^4{MHgk-0oOj|~zxqFLgWq-6Gvq7qI61VaNO;4 zhfZr`x1v-bBuxBuQe3iE>3VIAj1}P2(!A%BpFGSD(1Qj!Fx!}74GuC=u-CBidDyq* zSWXt_#{NIZ0PHg-wbO~qKk#y@wUNt?<>8K_w7d8uRJ zs@-R?PsUOjflm&umR8G3V)aGw6Ix$6Gr1b3VBzC-(^~=|WNF5_r-G-kG)6 zM5XX?8J06;?I-jzfrARW+R({^JR;VAYvhghEQ1KfzJ9SSV_PD#UV2pD@IJv?iX+^4OS#!v{X9d)&U}yjaa?!>n|xpoXo zMys8bsBgm7kv^h!ht>w4G|nV@p#D?;g^9TxMv3fGVV%~AG=PuyHnLL|-3q9m7g{I3 zvBZc*Edn0X0>)Wt%BfzqLJXTRxcIb;V?`m4DJ$wR4Y)0a>B+93i!nRT2 zhAhuBWZ@lwl74WlA?K%9asa)savzH$IbLC1rZHtU#bmo`e46E0;=)d2hoq0RHFIA1 z<=yt`?Gp;J?p)fU00%^GWzq=PL^seo17MxYbWCU)0>|;rmq3lU)QBaWmky(yZ^Y9wNf8g3yqV@EGQtvVIFNofaA>L%bLia#j)r z5k|sfXre-_iQR6vTHAr^qkmE`>w|~j_PT= zjMKVLEBoin`}t}@Whe4l2xSW@Kpc`+BU{JCd&Cb#j2EQOv;s!R?L^`=v5K$RB#W=x zecCypE@l;M`_XnhQyXPAq-|Pe5(a9F$(_oKZc;F|m$nvHhORYuk~)=Q9$ocy#&*^M zbY^JVjaeSlEA?H4VpWs;1+rKebPOor*l+Nl$3pAOo+L@I6s1}ki7xVq?rEnyGAl;v zEemmEojz|hE_dxdg~KbXyTvAfJBwYKL&vO`zoVhK)+id0h8|}l1(wD{i01-lkI`rh z7f-tC9d9JeLsL#fTQMhLmlIL?Sc43dKWj$8Y_R$|Pw2oNOlcLfHRh#x_oVA-Um(_I&uD{5Aw;^X z3{;1MW8KDG#pq{e-l{hir8<-V4Sjdd)C_B*PZpwpM z8!JD=uxyHm!)lx8WGDc%w6BQo2=1&Af&^rJj_i&GDqp$5dzOq+^&DktPz`k*=BWvF zg`}fr$HyKChuGP*unvrtKUkE?sg02)xnSdW0dWkVg} zehjlx+<|F7X$WLd)K&Z=HqOsA4*Of4@H6!ZW@dz9Eg`j0bXgD28o(t$=?r!)0$flS++z6O|tVcMYOE3%c;eS$)K+VE1Vt&~&K zx}Dj=h_zLi(kSAxkc2+t${|hI$wiac2Uf*_b8e3wg=PSsSFIyo2DQ^|dD>qSu*hA7 zqQ>@mY>4E`u--*XpO;}j^Dmd-fd^ow8eRtR5?z0TBw#8D6)$xfFAP3b{6Dcvb_Exz zRsr%9+miMtnBAb!mHLv1o~o!gek@`RLo+;(R}K@b*LP#1YLX;jTYMtE}qD4 z!iWVLSo63#^Dwr$12RxfoC?yC8i+`|)?D!jjZ=rv@XXXol{g-pePAN*HYPfyEZ>oj z@Jta5C(C;n#}x+3l>UT&!G|~@lgr#+?2K>dYub$R`0!IoB+yOH$~9}8*e6;zNiGga zs0+kxW(nI;=2@`OC7UR~7{MlQU?p1^T`p6EQ6a79Eb#5BuJY|McB9s0>uVMU zWsEhHF8rrmBSSn!ze`M7RuZFhU96hPfS0U%>h%+-!bekR~0+ z%QzqTWODq(#VKjC0$wLrAj0B_e}5s1)Od@^c^2&IJ3-y_MjJV3f2VOebI_8qN;^_k z=6sY=eoXfbK&=;ld5X?;SPwfj1I2;UJY*zgmx98#E z7$34GOaXB7BHIU?O48+$e29pb#Ni>*wDL$``hyG;QWNlEE}KfqCi|UjpiEmcT|x{u zb8D%Or2Isd0rI_CFkU%D3Q_~{dS+|bn%qvEQ#wf{8n(|Gn#{d)@+)2Qh(y^&m4rG2 z){tXRXw`TUEwMLJPA*lrAOzvA)KKa;c9Y1d&G$_9E!e%HH&#&wt<1l%N15cn()Z-5oQZb+Ho zji|zg_bCRoI^Fwl!PVq#+2ByA(}{eP(^TD59=@Lc=66AJ&7Qdaq*CyDpdj0hY26X| zrww=)*r-wy(V!vA$eOscrpQL5t1>WhQ~VBfHJ!PdM{0Uzx}Ly!)ypI@LHwvwrVT5u z#>d+RtdRE`kt&nZ;?~(fRlE`4isnPpVW>{XkQ7FP4qp1GLBa~3dMDnaM-6pBC!T!a z+5w|K8e|BA+QX6(&JwNhm>3N>Udrph#styeGz*dgMWj-qE&e1$8)ybPATq0G9{Or^ zR_w+>tK+Efq$X!)pyMhwQ{48p4Hw1{RBH^qC-m6KxH!-_)YKbkBl_0L0}ohQL1>4O zT|~;*wsoIJm=`ABPZ~jBXi zj;LSu=#8*$_90M^DMw)Cu6iemoWk188W2_`^W5>J25KPmunfbx7s$*}0h_dx)3grM znVLNo6+{UoX!=L`7vhU(xU#Kskb<)V%VGG@*rkXPru29)T#353Y1R(FnrKSt7`}3e zq3}UsL{!5G!|LRMdl;eQ(eni4sH0GIG7$^o)Q^dQU)~1C$Itkrth}i`*|h~Z8dWW$ zl|z;CZJ{t2lv4{aD<%N$ta!S+pto=UeZiodI&?Bk4ZdLrSadsA4MhVbKs71i~%u8)e&l91V5I<*wGKX`GkqXbUkd5zi zlW81PuX*OCiuVOE)#$g}H}QYKwn7D9Yi6-CO9=wNVti3;Pafjpwwf97tM#1Ui&yaMxR1IB^8AENda z^J8s)rj5X}s7Hr9f@x8j_dKFfg5VMw`JiwvOcOQ=h+y1hpc{HY9z|MaexjAflEpJd z^MuLF$8>^0vZF&6uF*oMoJ}GTi*&Umv)D??dp$ycnAa5jHOrzZ4 z1hkEFHBS^U$K{E6QE7oH=hO_K@$Jaws4$9RqO!tRmoio*zU zHwh~!+fgN{WLi9Q^>h!+hws#cfjeU8=eZp_Y80l=ForRY1M;;rfW&;{6xTidBLR@) zO;f!!N=oLYL|<~(7A}o<2k}HIEXZY8hSQ0fJMNi5a8gkvqH6r@xa`Nxq0waH z9nxFe1dGnPkK!Xko{=P2xbh7#^Fp(E)8|OE2w#_*VLt&RP^^wgwv}qqNpSBmf|~~K zMIkvho@So;wi7{ip)xS4M^5@oIir->A_K*QUj}tlTdOV36jx}W#0&i1WTT8}RdZ;$ zjVd1HbD0Abi$K|TsSlSrV(iqm$bEZJ*^O?Pw`Yi`!5s*EF7Z^9kh{F{Gv8Tagz`i*VhRpR zmJw&RmU&`E-?W6#J%>OoHOJ^LCmsrtIz60z)8m`owir($RdFO-O#tPku9$;a+MX@` zAN7O+wllO=LvziR23I^jM8t@BOV#d8HRLpd4o^)iJg}1H>fUhH+4=VZRX1E~ngh~Q z?Lv+=zsI$4V-Vcu(>UEZ1O~b6TZ7q+msd3QXNb%ttLqs`c{)aB`FnSpv*ycG#Nc*# zv&(Qgvy4?$M;q0}F?UM^+=wa|Nd+C-uYG6#3VlEqKzrz*?A86NGsd|q`VjcU!e7c#x(wvPISlzXy&D9Dwz_d1jnoy z^AqPFjq-YOCJWE5zI=L1YQmXDHpLZspIPGK?BSuaAS%f#*N)AqRjv1ucTqr^iJJT+ zsZ?coq4Uw?Z<-ZFC@7?PeB0-?@nY?hS;-{PC7+-+f|Qp^VIIz$hMC+l_-6pB8rh%{ z3GUQ-ObfS%fT6Na6ByTYzmlY5?gA5G;5DU#+|8Ob@eaZyovwh4sI{ci4ZYgoRhUt+ zh-$E&XihUc(L*!j9Aj~CFKUGGP*z%%4-d{9TVJWvn4Fo~tVNJR(Wvc9PHhtSU5R#F zHp>Yp52)6yHt`_}fPmt;Db4h#RjshLp&GN)6jmS{`{nKzwUr?AXZ>EApe=ro6rS}R z1S*9qBaE(7#jhIKED4tI)!k2p%kg4riNT+clB|IZ>VZ~b7IqSbLNXBS$S*l= z*?dm>!Zq1YeKSKEfh&PhvT2Uqohb9nXm>!)McRWeCz?J1C_Uy8jsQA47$Oxl71rrl z+nT#AuPC@keaFZ^xbE@RCL5?JyjiATTr!+`57WDQmF%~~w$%mH5Knf^WZivCPDx~w z5O*$W2Ya|F?+aFZla$4|&$McI!_Vv^Mj*({A7dC(Gt!WwquVzBMX&MHuQ(5&i_UlhNLF!; zkys@?B!NZ{9GTBnD8QToyR18Gbc4l09t#-?ba;;8SO~lzKgF|_R-M_}ZtQuq*Ii^! zG+1Y|D)(G0YeXpCN`zkS#|i;m5359q&CWQkV8D8rCUT?eT>>ecAXeP;;ib0eXIgJ8 zgs8xD5=hnPHEE~TmH}tpiuTSO3{jbr7Kj{W&CLOX9Y!?|o3GiqAqfr)Z9<5$`X zI3ozD^F*mV22pl$PYbLNh2OC+=-Th+6LJ<#q;t8(Hh$};-EC1|nT};XpbBw9%`fhj zKL|*r@N*uOnUGtS;h?2-a4`YdPiQ3|$5R>O^``{u3iB%}onb+)+(hyw0ornp!jIk2 zR*FXB^Ik(szNOFPF;d1lF-*d!cLJN9d#OHJxWf%XrCg=UqfWMao38aejx73!cAsX# zvs9d12Wn}BS9&?Uu5DVHv-HIXtPum%@}JQBJhhXY(Hlbvj4B2o*<^o+G%NHJk7IlE z%b=c|la-A}4%|6!6@%h=%&&#_Nk*g-SmUzjpkpS_CRXWsgwt7E=^FuP?xDDlDyr7tM0xO!dfY}jU zSwOFtJOO%(Eovvec9t1<3dqq_d%QcH8>8Bu^J>$#rY-Xpd9XGsz*Ct!Gc{pCS2mDp zV}v@Rk`1unC?Y^r%T7C;Y*;miBCD3TkL*%0lTzACI7}0bC9R@E=?OBYDwG9}aa%@G zNnHdhic3*!4mTf+p`q_wuc#XOSjCp@zL0LV4ZLQ57Co?<#rmg8R6-t%5w~BjMP8az z7oougqLn`Y+Y)y4eiC9rx%8O^$$G+J)7UWz`Eghl9Q_%!bNdL-edTx>K}*oMmr86D zI-8o6-mt-uP!i?LQFLK|SSO(qc;{oq5DvTc6cMK2)Hs~tJL%t8Ak}UpvXtxY*4Z;| zkhu|sZ?mgR3O2lMcV*Z8=8Mha#z4%`h@(2;}i?aF&jZvbVpYNqwJQ z`g?MeEv=FXPrjT4L7}ykh1sQQm3+D-18Lb%Kmw0uQmGl*8m2%lxx|ft83YQmHYcGY z?=0U!;TR335)G;~G{I~iTcTS{(P^yn88uBDcIhhCTdvlEFGJwcW zYJ#H!trJKIKQjAroHk*Vw(XFmaGH;CC`$?v{7P4iT12`rVsZhEKtfEfsj;Z=EKQ0k zL|7l%bhiShiydVXu3d~?sNmjE!y?0eR#t4-)`S-?Nzp|Za*E0d)vAyz1ZVhD2y0G6 zk7xXnd+}tRxhk~{tURSgS{3C5D(Y%f8cFX-dMNqJ&e5#BdhI>03UG}S7l2TyxVHV4 zXN#}Qcj9(ZPHHx{Oxt0rxL?RWEjGX*5Q2Ik3Hy?wTA~ad^ze@3G{YM3=Zq%6IKoW( z5Aomw!?Eq#1(oE+Z3w7AXRJ2@c;GVB6TH&OVBTm2UDDA)1=83pxSK9!*}dDqTvZJ6 zzPU{KYKBl0bhcUOr9^02Kq%nExjkhDnyu^^ALPEhxzPqb(m0AM)fO+s7M2D4)4!d; zc_zii{-cfO6+ZNxlhqO>)`b>>H<=}tH$_xn;7)JJR4?D@+TI13erPj9qN6tYim?lI zK`W0m>7d%1QnA-|tmbz<`{S@y&ry#0E?({$1LY_RdF<&0xMx&z#wCSqo*G-7mm9K9 zNMlhBhNirD06Z}VWMc^z3Hda@Ikz0*rooRY!e4On}p@4>D;A$}*qsBAWId~;-5--ty zy%?UN!x-RKm)T+tlr?Xy^|X#^0!!Yv7<0bcCLJlbd+A;osId(DQAeQ8Jxk@^ew>B@__z$_+L{)ZQ@LXUe~M7@Hg%%i)w~fXX_V;D!%*oJ9@e_B9J& z(Lw&gmwbD3Jd1P{S*HuIDxlt$$Qr0EZ4hm+m`$sx`&z!3%9UfsXdrIP9LR}UsN&t0 zb`mtQdGL5el_VPq216=wL;KePKT8rr)nv8QkDMgD&anydJEIT+1gGnz*z^zA%t(2^* zR#?A>PNObgaG9b)?gY!skWpLaX=+YP2QZBZ_Q*v^aku<&RtZUi*9#-)#zQN)RkGDNdB(qyh|L6C=>+;HEpMFX z3Bwo5xXjv=M0>?t$Z(pE6N#oXxOpv4`D5RIIxTF=Gs)&O8&yA`SZ$cc`azyR;D1rl zjI26ZgMuzM7b8iM?X$3Xa-#j`R#Ha*!IuVKtC*k@n`*_~R1(yMc@_tOK*4en<0pztA=mTH)slx&W zG4}zo0S)G#Ru+n5A;&Go4CgpNid)#Dr%W?@R1TDAw|Z;WGOUkUSwxf(?RElfP9mZt z-6PSQ=Fr<4%n zRd{|3b$a@^r@o6WDqRWfQZQr{o#if%G99Rfi5=-wKQuKvSv7B-7Emd_Q!aN@BfDj} zE_CE;Qg1ZVRB#vnU6q!nv+i$~E8WS0A^0hXYk?31PS9x|PhjGyM1nU3jXeC<@xOom zH+JsxP=yfb}H z3%78yu~^oPXQ-Jim;s0~-KT)K4G5)p27u`>YK}KbN3mps7=I}dB~BS~A(5SlQ^2{+ z=%{gCfpQ>Pa=Vhj743sy*~+-HO-79`@>!s5$_3-WrtKlM6IK-H((_O`A>6YBN?q!w zUNn`tU5>PRS{dR7Xn-zt-pzOBbb@K79`iYjRY_Bjtl~7Bbc#8E>WN=ZWC*Sn62_l! zwymV3=gFLZAqH+t08vqO!a+!8q#M|HoCWt-U-*#MmR_o+=t}c^XbBmOt8!(}DbNop zzOm!VVv-iQU#Ly1KLN5r!^txQE&%;v-0#MY5!YyIl1)vPT8g4g9D3J=ukBm-nKq1l z)MxmD?_J3aiG(AGQ5?J$WoZU1G%WaYJRx#Vi?u)JV_uQ3!bCNbIMX(mJy0`KtLSxm z^{P^dqdXn=;cz#oy}T5%pk6vmn3!jkM#@m-ml~9bvMJFf?Q-`9VxxeX6^;jO-Fyxw zSuR_8^QsW+=J+^G$_X+Qw7~eT(5-RVQ5#E~QQ&sz(uH2<;ddV*3jnE;&g@!Z43oxv z7!|zLPT2$*BH9?sb`n=7szrtfhn~l*E9#vQB<|<~{?|X!*dg!yrH@#GRMq!^rAn5v zSJP4+9t7iT0fHk|mq&OZr#cNgiy`W7O?3vW5-U^K#5_&Q%%n2wlThdDNJ7=f8aTD6 z-ed#iIG#WLbB}Lb+T-r!xL_Buy5DqC#2rzD>oraUIZtHrp`XfVi*5onXfYNjRq&QNtUZ;tkEtBc^yLugOSaJiFklRd?%(2hZ60fSXCH} zTt@@lhMNl=JPR0FJ8uLiBgb^wrxUVQ)M8q1V?itMNvL5#^_=m5*!_xqG~0!QTyP^`T5w4d2dg&=h3W4cf}hPK6lz#?tj{9D;FGW;rrE8&Md-Z5+Vyx(4+h zB#L7-^U4tUq31RrIKUavIz3)CZeTPX8)whMK*ZNC`?BY%1?+&q8yf0^J`l$8J@$!` zjc9{8OAu5G%7Ck>@Xb{1kV%kJzN!P zD?(w>S5Znx{r00j{0+abZ0mS~!6eq+Y@(4q48&(4;()5E&?!(-q(nQM#^YixG^(@9 z3O{?{N}73^E|A8j_=h4Vk1bR^Eu@T|mlmXl7a|M*!E-xyupPKDNC!Cgr0NkCbeYQt zox^JLlC%!DvW+Ds4m@e@2V*AOM1xNE z4$?6Cikt`@kqlyE_C7;|6N^f~;>)MFiyG~?0Bsd9Y2T=ahGipYK#em9p~nJagZLxo zn@M}K>MyeQnWHd3bG`1Jh(nTL*JjGI)vgz5K)V`DGLlb3+8e67L=-&qQ3JebRs|y#xB(a z5^i!2^~{L4Xb0$wELw-lbS=aGZi_2rL@7yT1gE$)y1-GN)!kGs!~Qp4)E004iZ6aL z#EGP8EuFT))A|eGc8eD;wYVd>7wIvHmki4N#iL8qZdiupLHNrB`5$ccbi&-6sUMQ> zmQ@mq(lvp%nxTn9wQg#gLO%&k7nuN<@ywWQpr7^1|3q;){0mA#D1Gl6a!_8myIi9* zt;lbdbwAxX?hM0u9L}^+(5(_1DKs)|+q|yBx=!ml-yFx?akxy_Eq^)o%f4R#i{So< ziyGpOpt2xgik<|TUD7J*do~G~ZpOY7!DW%Gg*6;SSyzv-=U?Sl5l-m+CCg6g99x9m zjy%lVsEZQ^NsJ}JjR`acDEvm9R_w?ai2@s_LU3$6JM-ZJKSDaiqWZmn& zU#M9}y>MyqNpL9BSi)qyQwmzwJpcQ6VGpCLE6^v$b~$ro>L^EI+BRx(sz%SS+O%5j zLEJhbgGo6)x65&U>~Nl9mt1gnWVfvA3KT>q@bXEvUI}!A8LL#f?vVHl#zSG z=R8;+M&O!g++HKLx@5ACNE6G=V^rtOR1UJjN2JtcIqII2+^1f zFHS$O6$&R2OhCK7gjj%dE&z>q1@5J&$HKR%F)oH4fp8`xVlk-=;^CP3de_hUNC+l| zg~UBp3YYK@_JWjbiOoeUsO_W^eI#I0sLFgKr*(nvEGLB2JLloFaBhRR24b#+=EdTT z2E2p-IoyUV#@)aqOGw(2N{a65a#1X0H@z_{irYxG9Lkk_JB|CXD5X>_h~FtFOh;th zKmxt2(|Q?iF5{!y@s53X6!Tl_1==m-X_HqnYdJEefg354R|b5%gt`}P7gd77n86niINjJD_ebAS5pwEK!t zBx^^QGNzRl6!yk7L@Q;+^~|tS#GYlNG(o*xZ<$Z>+PGT#g0Ox*L-za5iA_ZfR#Jac zI@yr+39JbEs zv7yuhfR-=9Szd8Cp%}GO><)4KvJN-vcylw|tjo#8gmD>$YG>Ti}<2|B44|&uy|Ks&Ig9= zE~RgfiJpe@9WDpqbFq+zGr87Ewc-rJALsHzQFZ?#6wZ#wdcia`r+~@TV6{T|l|`bm ztY!Ihm~jBh7u`77A6>Uc*YWPQ-w+nqHp=`Le(Ck%tVri^ zzZ~l_T*$Vk5taD|;vLhzXdhw70Y-z+jWLu@J zP%-jAcJh))?x;6O0v1 z7X)kY+`xPE#&CW;e=4q8IA69&@ zyo!PE`n29i&I9RH3v5fU?-kLp27SqO*a*X@fHr%tBkAx!n1;C>VJZS;*X^Sjg^_9y z=AG```UDAMDwJwi;V&-~{DLUw35IV2y$qK}hxHx9Rhw=x$Lq~cBEX$B=~0B3aGH^5r>=N&5}F~17g zl4%DwVI3~uGXqa{+#x!6;0WHV$IWHCyFxeg1`tQ)c}44C&T7mvvv%9QuLK#GrXkgx zLDeLqi^ZF%Op(QIYfubOb~%3jJ?jVE<1PHu*uDgja=X(u%0Q1theO2FNL;2oox1iq zFq6Hp-W7jSqoz)nInQSMl)dRCYvSMSduyq*Wn$W@So4JLUcdvdK>Ox>rXGf$rZ0~^ z8bk)Guz>+#PEKo4G6ES|w!7nYcUbQd>QK$Z1qDd;E_bp+vNb$UxKUd?MS1=iY8=WN9Dmw zc?tDd)SG*9CFH1>$MV`^JLXh|JCkWLyHDkfn*IqB!7_?$!m;oNQ!AYnjl*k*o)Ein z)4-^-w)6(vyvJ7&q0{xZ!U+u?EifEFlL*SVEq-FQ&&YPuuGtqI(Sf5(bdC0ln%sh1NK@{C>mL>4ZiT6~XYis%<@ zpeQb+Hx+H7*=1rAKrIS)FYI*eIzhpg=T_E(1Ga;6clA;)V z+jaoITn`!?uzbpNZ(Op)DMEL*`S!PcK>dChR!Hq3ZlI0MyjGB#8hW6)fL=`-3dc-* zKGLgH8%W8AisK$FiGk9!Sfj?8w8;g{cn=h!mo;V75t8%;UPh^>9f%;tsR>qD%vK}# zg72w;D9jznl5zOmJY<5c!3k)b!ssQmBRh$o6M`UGsq8{Li+aPZe8qQaLm^Iq)PP_g z;}}nXSRIKv)l6I}2w?HT0wAX^0SKQntj(VRM1Avwke%qm(g^i}9w~bQL`q+wDOoN| zX?>N|5X5KazHD}SHeSV*!z%#F1&66uNjBajjWn>4mi>pn@PE|DAodUO2C|=-g)-+x z+D#fgx@}+*A)DN94x*SDkbx6tqHQj2WG|qik2WXyDr73D3|2imP|r=O5FF|tGoQ@* zlnfH9MbA$Zb+J0xarSoF_!S}Jofce}w!Vas$4@O3)pk<*U{fkck9}Iawg^W_7@ZcF zXjl7z)%ITUF{31uRwMs$u=isVCWViNJ`@r30hmDJd7B$9btz#eh7lsjPk9a!-{L>= z0ksGZ_sW+loRNI}iZA*kP~f#~&H5BzL#D%7x+j$f7URzR0(R=9Bf_Pf`-zWd!&8GF zy#0*w`!cRKytSxIoSviaP2L8HUMvV`m*nwlpCQ}km@H-lN0vV=`+ObXVW8rVN+d%| zPuXk2BHGIVF~=477`W_9J%)@M z^H{0Ub+SCO5B4NC-MEjAwKo?gTKRK6JHNb|~x1ugi9%N?aDK@v3nMasT;0_U3k9rBNeCOF9wU)}|SHjcRB>*~v9of~KS}`($HNxRO?IYn|78 z7MO|J6$%{A^%UaGp^08=7+kfxuCfGawv)r9aX}RCr(r%F^FlN{Ur+k-`Gne(1TSDg zBwUgM23uO0=yK_e+7wKDHZbXIm29J0x*2Z}Q^_1davDeH;N5i^CZmMqaT>8C6pb$~ zaJ(?Z)#ww6qY-lCL^TNgoIG|>+(zKL3E`|?tJ20(e3@5LOQ)Ymwl9s9Ccn}HGWyHrZm!OxN4lXJeRp3Q>q*iMJv!%230UtP7MGJ8FOL&P1UKWtZhNuDx}n&*M(!DKnGWHo zm6T7N^%BaFH?|}L>j?LMxrgKckr^M9%(ofn)ikd^{0G~3u?$IzIy9B0c_A4n09O73 znF;)7Xw!jP55$b`o13!1cvnEh&d-uNf`ddPMTbN4yz{gz({R?vGcL)xQh0saLEZPJ zGE<0To=Arg`8P#m8dVJDZgXz-Q5_=OxJ>mu4EfVcH zDk>>EK(sZ?6tGGl7QQ4oD-s<&w<$5!1SaFo^%1jI_u)(3z_J*HAx6tOvnJA*sNIrH zd4^$QKYs4>zoTyJul)Qc@wRvl!_ye{c8TvcuY>d>P8Y$saEl!J+4P`RhN>34vSF&g zxzO~y{1OF6UACFQoieuE;=vI(ir~2IE`i08UTXkLZTImau&v9?j2r@~&x=U?4Trf)QJ1EUBLqcVs zXlJ1@e}A^a9-=zLD1*1XRQlsgE(g1AiahKb}YgvIdAe!OtlX_ARK{w zA`9X212TL^_N4eKbzdbeE-nK3sp#xvE4qq$xi-98;Ff1FOov~2TfU6%cPT2H6_bi!`X zVc0L1eYlHN;`2U14_8$>W|^=Ohj^9-=@cQ38L0{}34RcDAPGLpZ3~zR!Ux<|3Z_|K zU?)&~5fPz`zPoLqGETqb_3$zisfU=^r`?`5pCNNb8a<#=t=4zy3`eB5;M0OjYeASK za#YFN$7d!*tuy3&GBIWI)(>sl!|Ll-z5EFj;>;icV1(g$~TND{q4v0*!R1S{8*dS0w z9{xU`j?;NRowxIOJDs=FX`L3za9`lL0pzXI%q7kAyi(($&8*xT017LHrU|bgu3*;G zQxAX__;LcrOQKv>3GoCDW^v0*;=kMLf@{3tgCCE3ZY7rDtlqL4oEwr*grYwQ>Mjl^ zrx;qgkWJ&BhN8Z>Alb~~rP1oQBIde99yOdM;)q}|ZNUPy%>T%NC^cie_jmZ&Kk_{- zi=NQm04FO8R@6c9Tz;+7<=hg7#Jp1sGh|-Kd%4a#7p=*|m!vjHoF#mH(Pbc`q_X(x zTu5;ctri{#X(U-^M*@Q)9^-m$7uDNc8qJT4j9)T!WZ`j~1X3U;USqg!t%6l%uSt1B z9R%V)zh}6R(-8!ubyLd04o>VZ(|BI=eJl$`xuwx~+K1C+I9-klcZy2x+5^7c7dC;!U?8=sR7iV!8Qrt2U%SGoc3yrzMQ zYR^7ggdGgIdecV+_-c04J**lEOOMO9sT*bCFp%}T*#eY!yA_}!AVkrD>-G^o__|Y% z*ec~pBCVyOgrTY&kJyJnfCbpJ#79k17ICiz9IMGBk^FrfH%}g`7hiJ_WCf$;FEs_R z>`1L=ibTaE0jzR5Y+)S3Pk-sZsgLoYU+~TgY8zDg^J!SlI|zLzvZ5i;Jb@LnA)wP} zH1lfr;A6t!L)0)B+E5_jb>K`R@r;$5F0_tmoKU%A;D)!{Dlr_(Mh43)Xxhu8?Gre&<0o4~=`_Zjmd9P9|!mf)BdFnbp&Y;->6(|~0n_{{@z z{o2{aMR}A?skAXyQru`&?a+@BF3x>H5x$W$x+cM3G`cHX+vGVTdSOjwaC=E3jn|@X zVU;w~iR#*d)Ht3X;U>I#GP6W&tpPPZDy=I!i^jK#wgXpcih3-+rEO@Yxal(p4V8$C zp28yp_f$t9*I_$_CYlL5yNM4Av7WyzF;$q0M{9x{(~0vsck|vjNSX-aV@0y1y)4_F zTGXkPHf;1@!h{AYiKNUOFbsLj5ZX;*&!JUI3SGV)_ljS&+}V~BoF&Sw#U2zqK1t$g z8KbZXH;SzPpvh-QTM*Zx$DS~7EY=7rCS6$ZHQ^GvWf&Y)L?ox7YIadgP2dt|5`L(* z0dSq-QWT|d$1g{%bQe(6dzBQDqs%`vp^-Gyqr*^bb4yFH%9Ht$iAw5xQZ}@h$@0K<=*IQ7~%9R3*TRdqOhSn4{i^%GYf=icUK9AcSi{RmUaS^u|Phxr1 z{Gl9{C*}$x;Eo*0eWVc(Edy1P;fsUO2qFmPM1JOrex^Rj>4D`mk7pPtrY)d-ciN}( z078@HIZ68*CzMz8jl})YGnum_hAaT~pwydHNeX%mJDj`%s(LIoPN8MaphiF*WGykt zId?BfeQ}W42qAERBuUHWJk;a#GUcmvbalwdIAQoxd(ll#r})}0=uH#SPb6R2lwTY^E|DrRDB&Hh=1&@|x8b5ma3_37%(@f@Zie@C~gv zsD@Yw+S8c-`sIJKZtF^sVO=OtFJP4HG)c*beJt~bEV!-Yl9;^mUGu6?G=z;wqqNTQ zfo1X24bx%<`jqyR09T=i)Q-<6850ht2kI0vi?Arf?2hR?FX!pRIgvgPoFAM|^LScz zRO=YFXtKbn&}uUdkz)hK=sRM-6D%5J?YO^|V6}M~`l0spG;OB^)%u;&eqQ#4d#IqL zLrflCS3_TW4neNz z#zr2<2)xIHEfQ5Pm1cgtRUHSVln2M9$~MJ{l7NK%j_Taa0#?5JaUNaKd znn(ym-XNTzCY>lsD*L*x9mEmL&~U*ihJL-OPtsX!E0<>8)5o#~Sg-`s-!uXkOw=q} z>XBfFotPTv@9|?@NOk7kPpR@rj#@hB(hc)q4BZKPNb__a<~#FzXIkz+alpoJ1q!9dswDwSMGN^C*8 z)-njibyVT3d!nmYf7)N@^oVJsi42a^@k%Y+CgXFAdj=Iy_Bl`NDxE1k&jrV1%^lNu zLbh-KUO=J08mH5Auf_!1#GVb8a-2$P?A#dU6C$O?2TC(i`#;oD7JeZj5m0Ty2(lDs z$OP)QdEU>b;eqq;;2jv~bW(34Bo(={4oTIf!WWfRg{L zi_8^`!n^_y?ZbA%mlAPABO)xCOHL?RkE?6%>CosLmU7R-on^Q~>4ft%o+xjKzWgzs z#_`OJwA@YJP*x4n1vAGIkP4+$70x1qHH;&85G%u| z^tA=ig8~H^lX*rLenFm2lTv{3cP4RySzFzddOp%-sCDY4gRWDwD`gG=R7(?$^SL9g zwyb%!K72LxYCoIdq1sARtsSomki9k@b~FC4HVJ>$=-T0-L{;k2brh>w8>O}LP4gt0 z)Ykb@c$a{JWHDu-E_t01SaaPDK&k7`z5K7$ZGD$7da{}0R)O>lV?HR)sVCPyV|9d5 z(wQ{NE1^b-6gN?eb46X2+%)l@?Bs9VgC3yQ@-oYJe(wfGmTJo zK)af{IOBLahBIvYCtvhK^-0if;c%Z+#;|zPqGlXz2W@DcP7{UCm9R;b&r$wLk89ahlZ1?W~rI8`X6N{dQvf%%(&C;xay)CLh42{g!CWT`K7Lm*3k+Y zUlg`b8ycQ7Ci4>~cpGvb{&`-iyC z)dyIMp_$&RKoA4PyoR|5G&pbq(K;VdFmgpL6(tm%FivAgL}W83oN%uBV2npVl;+Dk zuY(N~M|xjDRvIR#r{5eiIr(OdItvoXSo}uhcG?;$aS=;oyDMZpWAdBY#XCJ6*k4I+WVS#tCEj5i!EYr;n8K_%g zNf%QtMJq=`#tLuf0sY~Y~E$+!@(a2K%lUP*Fe(f@qWp75Sng(ER`j~ zt{$%J`cIku3nigD72+@B?Vksz(*nx&ZUnX_Pqa?jD<)5{dMHdD)YKw#65(yn`Tno@ zpk=?S*)3C9Nnpc=T@DE8Xe+Xmj7a~4ESeJ;hXj=-yu#*6xgAMH+`3GcaRG4(^IY(U z7--sWP}E$G;ReD%)SASF_PS@c0(CK^MM0HJCczd)=~i0>2X{Nml)PxFxR`O>(6%6Z zhSRx72MO3btN1X#MgsfU6)*C2sn2JAK<}jTcivTFh)x^I>p~@IQ;i8^Wvg;QZ z7tfykqiU9gjX#Y)|3|;OxzF*$iL|I*Xg#2;SsGPdPR=Gu7Ua-D-Z0C&p>@{U=Bp1qD2mU9SBLVYNAE3eM(Y{%0qIqQV&4fh6*BT6%ohW7Ig2o-QMRiC!A{;W zuiL!BT)Bb`tqy2d5G@wd(&I`dfe1a5YMr-rsF}$+Q$~mMAsjRu|n4q)zZa}5VnCf`N z;d`L86r;QNj)<8JXc;PzK#RKgoj}zU)nnN14*O-?Zp@s`wQ1@F@Qj=ZxZ3W(3aO$B z-{ca-Z}INDH10q>#QrJ!ikyZ~dEjx+QF)Yc3YZ>a!Iu- zISO#nt5v_p8A?`*)d!Ygv2cmrO^8(0;%rE}J!mboF&k6+MM}=7U!;>?blI+Ts3jLF z;XkN1`khH-$+S;i2ax3?dt3Q@?>K8Gf;E)+srY#0tS;(3N{XR5RPkqiQxQ)D6U?xA4ESJKQO)!tuPbTadnK(XTML#l5D=$Vw40}FO{eyv{W_6GARu()DzX;h~g!r zz`BItZTQZ+K9ePQ&4Fqi+!MH4lN%cHNcZ_A&vnL7;tL8kwTcfWRen?>!r2-nBeT>% zy7M^R45{iD;Gfl-kdTHfTV|cl$uAkGY}8DBMA#MO5vF$!DKl)~l7VW0JI|ZQYpIC?KFEs4>PUKju}4FM%dl}Pj;p%h>K3yP zK(9^yvq^v2cWaxUEDB?lV&ge!5(T&n{fRP(kd}xDIAIA`A)Ue^qXj!#^)6u z)l$L>uzraUD1Xp_U_Vs^<(bWvSpWv!%76cYRvsOfZ9ge!<7UWuCE8chWrBCPzYed7 z_ZV?PWu+XC^G-JgLbkFv{(!s%Bn@z&s2Yk4L8ghIFQc0^q9Ur5*K21eHlSaM8^YV6 zbM^@-r)}sHJX|Kl>`e87uk7P0LVZRRJfYj%3=fI(4H*r2o@Nlb*-MY!=D9N&T#Wo; z1nf>$z1!1SLJx!SrI-gUe5{Ug=2q)-V3?-Nnx}$8jc@c+qq)<_f52rSe zdpvAuqSMZIh65yj6Go~bL-FQh21XM@z0ktEC^FH+o0Ni_oVH!dszU1JNX>|ZCz-Cs zzssVcsv%n=zFl+>6a;)bNWyuY*rcc#U-ONs^De!7BOF7`3GWhaB1z5| zlz7V~IQ6UW6Qr8Bk$5ESo<8;qpXLbBW5O1v_0SJ<9!51yt9$r(9ih%n1JyC$h;SRd z%Z9YL*pB+-|BTk6s2UjS!3w$+LWjnqxs}K@0LS2|0nSNW2r2d3kACGJ{lNJo$|_i^ zWIR*YR-}Oed{7EA;tXTY40UcPsiPIo9Kg`{V54ie^wQ-kqY2TuQm+K{ws-f)ow$bHP^4dZLD!7o zbN!bud|Pumq9ivuqFkt3yPAC&gS>0*z(I|~ho z{#xv0pFSDrU6S@x_RFaikVLiw_2Z#XGv3_&i+{U)61IQ9c7qY>>Jxcn15UC*$b^~9 z;bVbK2Z3&DR7uIfy9gXU6~39pLb!*tE;v#3kpUmM?te%6M*($1>o=>6~4{C#P_0Ls&AI~;TVa39`s63z6zi<%^ zVuZ_O5LD9|v{Ws5ONii?T0}`wi&>&3w7sc&G`f__xZU;YRDm1oghq^q#*00Pp3QJb zWV?&+T)0O;Up1D@ZBSOnDWJ?jqL3lo3Dp$#Y_mBbET|KpW+jY`v&7q3@rVFVxD$&e z1a5dLEdaWu%ER)N`SajMPuC<(l|XKS=w=g{?;w`WjhXo;fXJJ-OFh(kxI*?U=v^Mw z0(a515BWpn@hr4SM7wT5yEhamhQmvC+)OfoFyhPk6d9G~{r04^`^HqRl9&~XS9UBd z*{ARS{>4pN@iBk$1@xdCNht7(F0s`^mZAP}`U03-o%#%`_{tC}PxdFr&6Y6Q=H zs>-1kfKOPy!SV|9&}u!$z9T}#5nE2+!k>3Lg%jl#}TJwP-<5u`X7DhJ_7 zVVkv-X5!Zj9LgZC@kEQ5xj`xw#8yTJjn&EGbevmA@djEV=8b&rz81?)x?rM-2wxT@ z!Tu&p*+YXc+GZw5nKh?QFMB(UJQdV4>T>3z2+3kyKx1Y27SU5$e4YCo&TPta63av# z$vtPtUAwltoLE#3Uw*L(tv_AKhqb*l5!Kt}b)8f>C`r>5%s^PifZ4XPLmxxvw=Rsw z{<=1va_iT>`$HgT{hBZPFf{!m~*g{P{RHQs(b^cf{l+*rKM&f zw`a>)3C#80NZWuKC6YRDAfk2@N-}7jQ1rjnLuy)rL;9s2uXY9ilO#WQB}G4sj0)!D z1b~~I2Dz#gnhMwHkoE9XvxrNeq5jaAoOo+Ntc<|1$Q(RJZ%>9Cc92Myl@y{L2qzF5 zb|r@6ZDV{VR**4)z)^*qSMgqEI;b*Gu07A!oiBVb;uQwX1x_GlDO7qk0T)hmIBh;J zm)SMh&6N_mY1J!%wJ9jm364C^b+wde!n_tUN$J<|Pgns_RwHMF6{ru5%{@RAXsOG=^!zHXfGo>H}=!3Ot8)z-Yx)BXAEkP*3;@Bas+{Zn4GZ z!sejb5lIExcoHTR4P(o5Siwt}n24!rky0qxLIe^17R@Q>RF#~nf=$8f@}*MXatj=d z;h;hqUac-qG#e~UZ_nj(r;19JIVgRHb=K^Z<{fZ-l%HfOFJZ)8P3biH{5bU_O$G+a z=~9ONaeBuWyrJ%(@@Z$cZXVRO+ye529tyvd;H*1>+|dEuYJZ~XOta1)auZyR6ScHh z*LI2$W?mBe;t7R1NuV&c)9i8o_HHRozD_Uu9ph=4PIt!hc{S|5&;3#T z@E(8egQy}VjVEE&gpGvHT`bxR5{c%Xl&2n?!$iUFt$*mRA#DYw$LH{D70oS@@x*V0 z(lf-f^@Vg-JYgvWNY^srSWzw1^8_I-?Mz#v#Du#(PF8>@S&D3e8eg26mhh6e{SjYk zn5U~LzQathNn$RFZyt;q^p^0kqex17ExKJdEo!&!X^)xCuS-L#qQ#Zbz`e%fu0g{P z^a4#r>W<>Bf#PXWzWzZ#Euan$O-iM(Fb%b<3=#oP)9wYEWoc}OkJ-7#M7gCMS%~?t zCTG0$7So(x_}ejcv@8RZ6Glvj9>+U<{_h*d;}^c@7Bd}&;h+B>e@{QW|7$)-bq~vS z-f99oG7)GMNG63<%ci&kLX=jAASIxZ(t%~Q`wE?P;^vv`ad1!KZ<41KGb!BzUnvHw z+vypvg#I4?w5jF#1O=@AOL0t-9|S@4I7Lv{rf*1;UJ9o`(aj%=@=o>1$^lEULGRHS z<=#|AUAYV52pHKU*)3M)N}uXzC3Kp+!M$An1}yl|FZtHydj9we+!{{46Spexh+7*q zjI|P)6z@0-nPNQhqXK#tgPNXbzoBuH6w+)ld8$z-4z8F_gPcL+AX=w*HsiRz?UtB6 zJ@VT}DAIDH54SDi>_EH;Pw>uv^rJYFcKL6A>PK$1)PM9MSn3CV+lTMRxY7UzjAmMv zN#h&@jo~EZA+$)9j1AKMC|)Dk7pBOaXrOi2YqB;CxZ1Bl!Us_;Jbi>XoE3TlCb4jWSz~z)$M^9nItYZIxAHBsipZCG^+~m1K<5MyV zbS$t+wy=R$qN)Baf9!Fh?EQzA-(smh_B0n;ANr=pX+n?Dn^ZjVM9D*8zs|a1X5BDz zt)+G$7Fs1Jn+G+3uk9;V7^R48-N71C(?ENro7z{!?LrK5mZxccOQjSOK?H%!gJ+w3 zMwjeJLs@rn*3XSJP%z0wV^q@RL|%b~_O7u>K~q+*6}5__gnHttt+_{8!?Ds|Dpo@p zq)oapol<`-pZhQ=YhL_jFwDb4v{C9?rGrt$cn~t%s~0*uB~=3h)_f5|w45GX}TLwDrf8!tBVw#`yKErt)9*E*7Bw#&gz-&+W7PPma9)ISbg({)GCO}nRfBUI6-;e&b-_EH(7Af|Kp04HQGC2}ne0Pvoj3rGR>zz|roxZqx#0HgGS`Z+ofv@B$Iu>&G6`k_DNm%S=Yq2)y z7@T1zxvrJbjX`IYi9cy^lU;xp0GNn}_}(p7@Y#|S5}BhWm-NWMxa>dj)At(?ZtWA_ z4_xC6(q!shTOwhdM7uO+%?mdVm{?a}3XnaG!*BYFAF-VFfBqS_166!x1%4?J+ek}_$GuIXQFoSpx6=gmLdjZ74Y1XDmiBu9kcw?bkv7_cR zL)&a*5KWZ#jgCO;zNYHBwicGrEg2Ac!D9L=4UtrzgQ^i)g0zyUG30r)AxZCNC_+

+0G)D8EUYAqjDfcYibo!x;l9rZ@Lx-bL=W0z=pLol6-}vr4S04( zSMQ#y==2PJd~NUs_x(Q8{P+(*eQ8Dx7cv;KB7=G)w+&L z_HlpDul-19#ZKctdE^#{It;@PJ?AHfVff#_>34WFiqr;}oXKwzPekX*OZ*UOYY;=I zHLy?E=&*ptN3W`aL&ZgjIwe66S6_jkp!w^qYAIvQ*fe#p$Qmj*^#93wuM9LU5YH%3 z$xIe)*>Uqt{X^~^aD$O&YFB#F_T3m;h-7{`^bRG>DHZU<-xIgX>i6pMAIEX?CEr}1 za{laRD0@yxh#lcd2?Q~rf-?f^!DQI~K4ZQF4UT^rwc>#L# z6VGhJ*Y)+cp8XH>!-u{3cWIM{!VV1xyNg*SN$5$u_r_>EhIz%f61SuYgp~G;-jJ@1 z_G!aLgn=^cBDNqU6Iiy&-)!uvKC*jFB5bMJ3aS~tq*sO+b#kfYHJg^&GbXQ`Y1L8= zG)hbc4cJ*neGse5HAhEq3X4<_LZ+m`j<51P^LHf6G>ox@QNKx*DIBb&aWoA-arWZ- zdT$t@M1w(nC!PPw)N{W(ph=#o1vfB@p=>g4l2O%Fa*Zb7*g&U`_yFEwF~G%|45r{E zH+o)Af-`nu5ou%&)R*U4x>@Zb=lhcPMSaM%U+&9~$NPQrN6iNobN++p-cnBe@I%JA z9`~KUn?zCX7+`X-vD6ju!Z|hZG7fxde+{isyIV<;5uD0p@$R{D&DX?%DQc9n;`4eY zZDKO|)2~8g`OW^b#_5c_o3xfl>^J2&y4)4?f2kkH&udz9nx_BX9DIU47a(M`fcjT#3-$ zplrv_6s(iMDOU-5&m;2^1htH<+r$wIz*E6Mrw@B?YO_~HQ>mwZxx-PFt!T8h>eYA% z26P(efLZvclF=J2gwQqZ#IClalE-~||JOcl*pGko!rS{*Kk^i$1RwZqAH^H1R0As; zijkR{hjxP+q?;53IIBTr2=}&4c$2U?Qv&!-Nn_3o^gyCypsI9|LGU+Cy3+b?j{;j| z#?x~#PGe;Dnr&TDjgiD}nb1VD622AEi4AlJA4RJQb4aTB*DARser0YC=C8Cy@YEK`KDGVIbG<#THqaBe6FIH_MjwmWvx2wCk-2J727FTcv(4lvkSN zfh9}k-fWi91B}H(kC}GQ=F~$nh+?LuGT}4CE8Evz@8!bT?(qwK@+<4?>mNnuUJ1{P+6++ymi$OZXYS7GiC?nc5zt6Y+K9Wm^pLpm8?zhw*eeRFx zhY$Pu_vtiMWNnLN0hLg4dJXqp)du!}xzMu&y!G_LG72XwOOzteFV$sPn>f5OO^u*v zPq31_Dx4b;x$V~o?qs8q<&pJlIi-3``rqy|jLvRb-I8fJ+jx~oJXI>h<(IS7S^Vu9 ze(Gw#Vf=$H?h;DX!8!^7ECs?_mV&QpqpT6S6i>Y5E`73zrVc@JgNRJ|Z)Ys5PO~={ ze){_)op61PqJrmm7{m{;nD2U9au&)*D$xTH=7YKQC!VlCY=%e^d0=)EG)n{*gFGUc zNXk+RCX#j@*`-=Wbqw$IrY8)?@zYOhYf$>HAAZ3<)(?;S+V|(v+CVpQd~iG{;R#)2 zu%OWHki1nZ!l|4GC$3==?HJ3z2O-bMd_}8*Spnywln%m=roH4%tP)fRD%X1ORaMI_ zD>D(puQ*M%yVPlie?#XulsW_$GWl<;k+U?lC^sC!-lsVQeO{%Cl zlk!#K=V_j@z{(rV$-_lpF?9HZ)!itxUWa>) zUBO)$sPBe@yIqtNB#n9bk)(WIUB2}a(=2pTIjBT*B0*EUIJYq!f1ANXGf``9y2iS0 zVrmvP0LhGbcrp|To5(bw zjLZlQHHY&7)+gKH*na@&MYXpN)b?H`M)IZ(y?0k}*Bdgn-};7+oA=9ftpE6tCaG6n zKlXe#Y2W7?K0)f;EXY<;$ze8JY@790QY3bhMg$+aMl7W>JKv$dLZY_@hxR6A2;wy& zU%HEV@o{s`q>%QehBD8itxU ze!Su<>!OV>d5$rl^7>x$%5e^vwY{eJo&8`&XLb^6Fx{yP(d6!iPPr=blC1#piYn2( z&5@S(77nWC(ufIgff12il#{k^KFUoo&@y~<>ZpTC4{C5rLZ=9O-ZjgW$bcisLvsBt z5n#_5W1Dh8bMKPBQ3{1CeA=1+=!? zh)SooG2TDTsd*tEp-XWCnCU-!)+79T9K+hoqLhYYa5LKrGpzM zeHv?1Oc3Wn9c7>(!^{y`x5<-!of~9Ri@P4m)obt2a zcw$e}K%ufZ0TAV4CUbCW?zrfloVAd$q=zcAAi>>TOL$|@S^#^w(cIdaO={Q+{@==W zt<7Ia&cJFT3&i-d76Vt}nbGGc0JuOcxx9vM4dd}=zp7mqtJ4&aNk)iRORo0io2y-} zLG@~QivI!Yw2o5BHBZD#E7VRZduO6%#V>F2DJ(bkou6n5D3V49i`@+CJBIyHt8L32 zjtf`B%|Ni!Msia?7ln>fl4TY;qqr2w5Yj(ScFUC*TKt3Jot(^?gB1D@rTp^l-uq@I zya(?1`DfHVfC_SlY3jfEt3OV``d_{1t@oShPrTIqst@?;$BE};5d^lKH2eVBQ5*!M zz3IzqjfUG27=P6&u8119QYj@>>ET5%mMZ+o`pJ~D0Tz3h;8j-#7Y}a~z^Uk8Bkm;3 zbZq39Uj_fFsjIc9|GZ*{-0LhwS+eL?X$qv2;rs6Do0ffgYWs@lRAf96J+oKt$R^pw zwG-#UR2*Bazg_<=Y_i|LH1U1Ik6P8b})J$7h_QI)|x4ynsX*1IkN8+2LKEGb&uCwBA|P6Gz2-_2E2NIKu`Yd%GH?B_nc zqm$+9$6stqec#uhJLNtQGf@~QGcKB`Txs7P)TD&1lfz{iy+{?W)>ZtO4j|4s`}?sK zQQ|V_qujM9A{D&VU^oJ;i;UtC=TsE|!3wvn^J43)=D3zUe8tx_V}8N2DUw*jK+5rA z`Q^n->?lH0M@_8a%xOqxyN>7A{gl=;iuV(77YciwNN!!Z2hi`iVX7lC60tkW%0Glt&pFHhxqp4Bb4CZJm#?Z%a*PdypFvldzzGzB{khRL5~{n5Jf; zxIwF-4F%v^Pk|wRdvw^}F&uY2kL-bKTBp<)qtz0G(hD|`n{t$gbSEaxnr_e#Ix-JD z14W$qu#J+A0ztw1ph6P4BNlV1OUc!63hxnE68X**M5eu?BPS;&eb`2Y)PGOE=F6Wn zkJ~)%|LXTQP1FACpFJPFfZz1Gr;Dpt^8{mVz*q#u6m zYaZ5kz9)yoywiUa)y*Aam+H(ivy9&3CK`qUF@rr-WxZ*R`&{L=iR2NUcbn@RYk03? zWE%O1b*h+Qr`JS`iQ0WuJjtsu=1% zpz9V`&PJ&wYnFyipo3mTvt#`NSbn&$x|VgG64_JW>y>n%y%;HeUJYDHoIjxOMnd_7XKIe>~8JIO?*noSA0|^bW zBKeJ9`H6JW^n6x|aMoPNoo$;Sc z2Hb0JYlO-@rT~p(xjBtv{7{o4ZBer1yszq#e%zvVWOd#5)-t@uwz|Zx{;BM*d}r@O zGoaXh-SacukXCzp$JHV^QWvcHjH;T>u05csoiFg6-t6hTlTtOZPN@)EPbgNUaSXGs z8!#rexLMg5o|62phP9M(D2vEiDr>`d2LX>3H!Vo(#e&31^kkqRr<5i15@BJII}B=Q zs~Bq(bp&qfw&SmR^(P&}^m8w1!tDLmfBZup$$ghEdPew{8U4}Z#o<+sSyL3vx7PE4 z4u{~UG$BL7EA2(M-R)JI%W-}=@jnYQ(mU!JgVn`%RP8OVCN$cI8lU@2>%g}Mhlg_Y zZ1O>M9IL+W0829ZvZF`2tZ!?xU8DLn%;^-n4a=KAP*a^1+?`h}ER51Fl4-WoGdZ|` zsY>o?dEJ@P>1?eRji(LA^sZm?i1yR` zmrrkqOnv>2Kj|T!$NZ6J8BVYEiVvO!k+tKU!U<}XdeEC>ZO!#IkC-M+t4QJ)Z3I&+ zJPy+KUFAzp#pn{gmXBV43};zg0;+|MX37OW8t=~|%e(ucUvZHApE+3tt4XOrUGyT7 zTGe)ONHs%QNqzqq-u3CRA0VQ}Fy9%LcSd}dWPRJeD+a;{O_4K})R=v@ka>+E5h_!y3?1t!wq+n!KKc_`7|!exZsV_ zK>7F7^ol~42{`;^xWI$@XTDQXO5aw{PC;c@wM$GQJot`8qp6uQcr#KQF(|(7|Kqc6 zvDEsy^M{^Ex`9_rWqBrFnw#bI9@21M0*^>uOB%b1nB{EtdvEa3VK?PL?Y$+(pV`IzT9qkL8d2E`^wFEtOH~$Eo_)R&`?MaeriikiLTqo0`p zvB$NUI9~4Vus=EiLBhJgyy&T&E{Z-7$ZSVBS$P2qKF{G3RQaakp0$%nD}6Fp-BYI) zOgGxM!ix7gNC$$Bjh`+TB26hziBk-Q#7rq0QpZmal+wLoEp(BG!4;WBFW<^<7(1>wW2rPFh%nckCILR%S;TYr!&Q~qDlY$Dw+^T zvoIljY85Mv^~^GboAzLYvthL@ZJN#|@eVZ`pmh#T$xG!plrB)CYg zCPR_sX-{?o`0coN?VAn`tfl9LMEzpNFDr zJ+{Bl706`?uXvT6*5|#f=RLH03^+})=tbFLh%ZHLo92+I85`=IBxp`i!^2*l$iH-(m`SbQSMGZ8 z5>_ZS4u^D`vEl-p&-ep(7(U(_RwEnymBYK`a@L=#VD1Or!Sh4{5am&Qs?nW4~KUgo5KZHFCHHz z;(KK}g-Y_qaksWcfOvV)zBX6WR7tr{3M@7k&SysGpmLZQUz!T8fN(*nbi5tE3rh`v zHJnw|=r!~*efOfc_+2P5VxmZFCX&;a)|Rb5MUU0#*_t(50k z2iy=uy(Mo{(jx*6+kdBXZCp0!te3?rMrDdx{mE`t+c%~6AJxIr3Y}UtiSvc`H@@^a z@-D|$ebcQ5di?p<;H|&x`OTv^vk|B!n6C=fa-35)cwX33WvLoyuooS;A&8gN++0^dLdfPn;Tik#!mFz?l$}8wKtsC))WrxVr30u|& zHi(+aMzD8*(qe>28e9^(twomRP#LQ0L`b zjh{BCS*@d-0UKExOi9sG6u;Ip@ZITqn}#5|R;OK_p0k^(YlT$(tIVJVJKfR@(5fi~ zz3&KP6ZbvYsc?FO4q;>k^No3J6V*Dg$e=%&VhY zSkp>);!aFSI}fU}tCUW&Ju2XwKCw(I-eg^8;{autSqNJ#mXcKRx-h<$@^25y5V95U9bH$f5l#B$ zcu|IL1K~>`Rd@et+k1Ui^Yc0$`hs*6yEe4hu}|>Mmu9T0+*AC<1Fhu3d9a!cl_^Z&a7(FDhWOX`-_d&=x}y-|T>n(+AaPlqjk zO*d=NTk7kP5{%D%mgi)Qie(Jph(mR_EMUL-&Q&s3lP{1~|K&5*1Ncg;%laz;l_xHO zet}Jy$*eb^w5sB5S^U903T4ghpQ#b%vwQ33Lk@^MD!f(8vy!F1^ zwuxX&;Ytm;6}HEOfoYka-*kZu8?SAAo%LuzjIK_*rgYWHbP1QbfM8(G2}`VzwHd?H zM(8eSmeOEmi_DWlZO8YI#KZNLB|7D~#s4j5+2(G8z7{F=isq;^sREAt1gE=(X?($_ zYeM1p+BWsuKJXjdL>-^~>~;|h7EWE5H{P?Fi-3&-^Rem|b z3g*bN7(ru29}a-n(s5^yeydrc-Ua_Fhbq%ltCP0d#(G2(DWL~hXYGT<-)P&hTJ0q* z9*p}6rzrQ+b5XB5U?Mt6pH&lxH5@1f71vcF=POz6Qt4WKDFelt1tobI-7@7OZ^u55 ziyIsDOFm5Gl`t@hGgO{HcV)6lZqm`@70RIn{b3Us1X}@)D#e zum76+%@j}htw~a!jts#^#jsS-M>e3m3Lx>F_ZaB-u}|g0XkHk&O)*qs??{0(Jxqa1 z{H@fG)Uic9!eD9rQu~+XYp2Br<_UWNbXA#^T$~o>+0=@d5QdrJ}agnYNuh2|SXHy%NX>@eLt8M-s4ZwZb%sqL6RswcH&OT4bfwHPpl)WjQjY2n z7Md;Im*{_rl9qE}*>pYI=%;l{ruu#{P+;luh@Bs*bP8{vy1^4Qvy0ExGmMI#A@oC+ znyudFyhw1z@lCJ0-BRBO3m%{TnO#w$YC3t5AosQ_ayx$DTd!u1bZeCBw{*@h5Cy2p zP3X#!)saRHThf9*JEu_fW!lj#O~)ezg@zt*RZN#IgL7^kZfsCsjFb=)ar;z(#NIOh zZzoaWE6sOiXwbg1azUjI8|f->JZyYtHlakb+;+4F^`JtmA5^qdJj$=K^{rhC8=`Rd zDm-0_bXUQoEn8d3uIerp{#uW&a@7O9ba)yMtgc|?)0VHTWIrd?K9$^X4?=W7-zKHR zTJbBPGygO`<5Okv$D3|JQja$}a~+@dfASOQ$2b{KIWqyilgo5QF%+|f@yoUFK%&&3coCO z*iU#?C>ufuSXYK^@z9;VGn@TH{| z6fc5gnN>HJXraU#Zph8qjscssbAaMAbho^^p48WBkU+*h2JN0N=Y`b=*DcXgaiKg* zx@<|1VHL7dj;F9(Imkj?ss^|ARe6G*@t~#9BE2sRw&V$D=%u`!Nm$hiFJ@XIO7(T! zJLrgv-g!_~k{(1Ud}OgfB1W-;`)-X}GUJn;>juhOe~BdZ`(KS${TOBl_x_u7zqGx} zgn4)3Dn)7i5gWWsr=)0&x_3kI&C$w~<&yMg*jo-qmssb`h(GUg%D0pjdNW02ACEhE zeua1lfv1WuGHi@s0RHLJ z+=pwJgEki5Y-AK~xbvXqVd#9z)6^EQ2!$3HnAT`2?v5dB)$j>%ZC+sn)&S9766Rr; zuSjRzL!V9WGEh$6jf9MN(q%u$4;N`o=Hgl*S&>!*xsXr4&Yfu8q1cwzkLxqq=2*~F zh2+~@1e9((E4(uwDrZME*3LWf+|*|&DAq7o}Cig90ZbXAmZ!KM4o`7Fy*AzzrI&u~;joD0cS-*k3) z%9Uw3s9svknj9Ll*uzM|J2&Ym1h}5iP}49)`xq%A&c&VhCr+ivb_FVl&uep(1d0GS zW{uG|wyo>ERZWviSbjChMj5Eyu)?SeMe&Z;Ma;;lywt{?mY^=30YRkI5btSCX<1#h z%Hq-UI6jq^D>n$H`iHI?yx_~C1Vtn7nL&HmsG2ctlw$hukH=$w_!be0@xw)~OQ2{~ zOFm!=IN7p=H@R9?q_HzgU8|=rm9J$9C7K+ZW!G10Kco$g+Ppw`?VYJIvB%o=S{28z zM1gA-P!F9_k!WkYkSg8j3{us0Eq|nbNqfcD@X}tS%#5*28BHo(o39?J@?2uv_u!8;qg>9i4yOWg z4Z7uu)iK7e3$DMAZC_ZIu|_>bg?N4Fp1#zjt>Qhk22u_^Oos+)U?QV~)>I&0#0{iw zg4PgbwesNMI8Ts`VLhYAiD@zcrNULxnwX*{KIzP2kNdkMHdWVal%(>)7!XDIuHa~U z(@N|z7>S5c)4(OArV~;c&x+m3^Qr{t#>cKUV-(}Pa$Hscdd0T9%BAJ>p-S^Onu01-y}t6Gy6Y0_tNrG}I7@Vex$o-zzR{g5 z+^y$EblGY%o%m6usv7gJ(%zW7s>)8gPz6c@XwgKL9hy22~9@r zXzql7lmO7zrrPH3)+UgPODp)DJG5Hipm^uYFx-tViiiWOQ^v07AODQ_NMo;lolXWU zlGqL2mlVWB$GQ_hI}oYkIO~sz9@4-YSB|!A^OX3zOP3CI$E>g++gxU#eJ}!L_=+XyRS++v$!<#>OSjHP zmpHlXgH|ENoSeBS-!0PTCG*F>82;BO#{hr(Xma6V=I}{Tyvqc0CMb;99S+(8>`&>! zF$_1Pz>IXLTBsla50A`oNFg|GroC?LYokr{Dh3IWV2e=&~v7B$;w%NG_Y1bD7}=87VATw-9BI$hhG#DNN1_? zUWk;O6DeM1ixx#gDIgso(k8w&>f@KNKmQ4l)(+&s6;^tic7S;ZQea<#s4ZwXu}v`J(QfN$?H7aegA z>jeWUN#bkZDXAMav$%huc_yyeYjsBT2JPWMEMh{!-MF%K@yrX7liQX{v(w`7r~?1K zQ6w9BoI z^ezjQK6%2uLOHsBIkOVjXxeDSjjvd&hv_}Y-A3=EI*kQ)D-*SpX=MlK+Pi>@n zOkOBU?Nw?k=qq*6*6U+>|HtkBC<~;$<)b`hQpS>%YsI_5eeHUKbuxp5Q;_r~*S=LT zq)U_{Nm-3!auI{{ec`iBNhXs_2Q%h}mG0rxv_{~uV7p69`0X4mU&rx=@XtG%nFB_y zDTpR=$4Y32vZGO;-I-IIi(kSwYl6Q>Tx+2NzC2>Jyn#m7!GL=}$*kIX9XXYZ9tXU;}X0=2o zEIORKM->nRx@JQmBe<1=sfq@Ew6y zQ5XeE@y6v!i3j_`3ROwp-_angGV>=APyDVr1pk(L8>S#a%b1vGYPWmSkx!kWM?d#k;`UbNR!E}Id_%wG<~HC z+RKO@h6&dmHd0ySE^{(FpQ~=X%h~Oev{?9#gv{kB6xk(*MY*LC@^$(pxJU1>hQ4ic zbTVQRY3Y<4unb)oh&*DIx)}{MWw9#m-J#QeR)N)n07}{_wSX_2-ur|0pZa@tqCfRx z(|dgYf5jWv6Mwt&;IrM01o>v=7&QN<16;6!igZ1`sxjJ`y7P9TcCK`pN>9yV?COS! z{spw*D-ec%<{BD2=*)hx?3K>e*Fw%u$*+8&q(>7q?hU5FIMM&$tS41#xOj<$IXoYq zbGl=urb(Q&lTRSLKL47S8|=_tL$_anR$U2ivJd(>i>f`K|z=$onm!+h1Zn*!H-@%VPjh_I69O7XCwUvj4CpO5QW0iwuy-W7!oR} zfZlRz>Hp-Bts|;uAlDNzFEukM@uPAT!j(IJqaspzchwWAmg!LteYZtDGL|V`dkG}H z{c-x=-hcn6*aOXbRjox8@223#K-IUb%BIu6X{c@4XvN8RJJ@t`0RQ5p)kblao%l?_ zN$Kf_&%*ng^g69kHJ579oyY`5x~qYW4iH9o(!EjnhNZ&8c*b49gBL2L6j@7~(n`CG zQ(D@a;Y+4Ha$$c>C*q?r&m(mGhd96U!y;CqP#If5w>FXb3 zZQaWdiXE48!G7kSPVezsbFfnYbsjYNNx#tJI+w7|>ngvNaWbDSAqn$1>pMVcv(Dw0)J*@sx#({Y{xDY_=e&QuoGn@_7}mNKi*4`uh!Lr z1wmK6B^x#AM!eFRl&{WHrxjK2%?l|re&oZKk09^mns>D{TF*{uH@F*es19mH2^Fta z2eO{N)OWixpa#0Rl|-_R4semlrmx+Kn7YowW_j}4XRI7_=rTpQx~{-4ML0+Bj@R2# zi27Ybe=oi3r}Fvuq8Qunn@X0@|&lh|)KscEjp>pH=eRz+3z(%WE7wsnJCEnKuxpaa@X z%&YOa%5oIJg@YuTg9_kDc6M%V2!nO2#@+T1igdv@Qprd8o(NX~vGOL*V6X$QA>{89 zB=MoZNIYxi&(>a}%PER#|Eac(%#tq9s3ThBYdByfL#m?m{`D)xhAtSZIA%Q|xBik& z0u2Z~VW&xm524sWFl=53^gDEBLrVH;0CM5^n%=GAbGnH}_$+gzCFokvYRy~V* zhCs&SK)0shN_Im%ic~3Y>tuFb^HyqHpPpX#V0}UJuf?M5v)kTl8mSO>M7a<ZmudvTvifFraM4o$MKjS18TGR#S1%3QNI>T z7mdd>41LvB*fiLsG*Go$r49#|Tm^w_k!UWCLG9Mi^h~F)T7x+9->n~E1QnkJ$#MDx z{ukw@5!InSnbRVn9L?d)07e{S(ki>UH+3*NcFs^aU&YW0D_;8K9(qRr)%gjs7ULZdue-oTmJ@%DA>=b^t%nr6~BI1XZ_7U`@b(E zc7sg@de2wAQc?F}^}Yk8C# zfQe3F*3(L|BoRXy;vukm*H#7lI}Ibv6p>wn$XJJ^pZV#!W_KY8Ed+b8I<5KSXC4Xa zm;=>_!q^ZoRFR2{4Rzhr=F+m6PSLi(D>BW}%$SDhF}bQ5?h_}P$Hvh%)2&(ggdXowBpu} zmpLX{fwiQH@VY`O;7P{-ezYcI(*3u!sbzoWt3B$18rMgQe~Pi73#AWLoJ)<{s>`Bq zTpL)*H08`HQXhG?{AY?S?b^xTs7I~g)T_2xC|>^B{^ifizwtMv*yS4#GVef9i(o=c zYKepxab;EI9c2bEZuMG_4nS70- z^>xxvg+-aBLQ1((-CgQRmTae^c?*~Po11q1{j{AUcLb=WOxchv{K`D=E3j{tyng4Y zo)p#_P=DQ^F~ zOmU`DCSpTyG!EZeYJthux6|WFH6E$gQWuIQI4f5veXMQ^pxSiIxPc5GNqpy%K4ZrjiP zoK5U!|Ly$ie`OA^oT9$O){Ct;3RPT|a}_qJ*Rty!!D3U0*NcWs498h&SiR#cODz(N d;`8la{~vNOHP3^>crE|{002ovPDHLkV1m-7Ff9N8 literal 0 HcmV?d00001 diff --git a/docs/img/nn/functional/rendering/mesh_raycast.gif b/docs/img/nn/functional/rendering/mesh_raycast.gif new file mode 100644 index 0000000000000000000000000000000000000000..759ec824cf62a81fa3f9f7ef7a447aa3b4d9ad0e GIT binary patch literal 83885 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 l?a05Tf&W7Wd>z*fP)ue torch.Tensor: + coords = torch.linspace(-2.0, 2.0, grid_size, device=device) + z_coords = torch.linspace(-0.05, 0.05, depth_size, device=device) + x, y, z = torch.meshgrid(coords, coords, z_coords, indexing="ij") + angle = torch.tensor(phase, device=device) + axis = torch.stack([torch.cos(angle), torch.sin(angle)]) + separation = 0.65 + positive = separation * axis + negative = -separation * axis + + rx_pos = x - positive[0] + ry_pos = y - positive[1] + rz_pos = 0.25 * z + rx_neg = x - negative[0] + ry_neg = y - negative[1] + rz_neg = 0.25 * z + + eps = 0.045 + r_pos = (rx_pos * rx_pos + ry_pos * ry_pos + rz_pos * rz_pos + eps) ** 1.5 + r_neg = (rx_neg * rx_neg + ry_neg * ry_neg + rz_neg * rz_neg + eps) ** 1.5 + return torch.stack( + [ + rx_pos / r_pos - rx_neg / r_neg, + ry_pos / r_pos - ry_neg / r_neg, + rz_pos / r_pos - rz_neg / r_neg, + ], + dim=-1, + ) + + +def seed_pattern(grid_size: int, device: torch.device) -> torch.Tensor: + return torch.rand(grid_size, grid_size, 1, device=device) + + +def jet_colormap(value: np.ndarray) -> np.ndarray: + red = np.clip(np.minimum(4.0 * value - 1.5, -4.0 * value + 4.5), 0.0, 1.0) + green = np.clip(np.minimum(4.0 * value - 0.5, -4.0 * value + 3.5), 0.0, 1.0) + blue = np.clip(np.minimum(4.0 * value + 0.5, -4.0 * value + 2.5), 0.0, 1.0) + return np.stack([red, green, blue], axis=-1) + + +def _draw_marker( + image: np.ndarray, point: np.ndarray, color: np.ndarray, radius: int +) -> None: + height, width = image.shape[:2] + cx = int((point[0] + 2.0) * 0.25 * float(width - 1)) + cy = int((point[1] + 2.0) * 0.25 * float(height - 1)) + yy, xx = np.ogrid[:height, :width] + mask = (xx - cx) ** 2 + (yy - cy) ** 2 <= radius * radius + image[mask] = color + + +def lic_to_rgb( + lic: torch.Tensor, vector_field: torch.Tensor, phase: float +) -> np.ndarray: + center = lic.shape[2] // 2 + lic_image = lic[:, :, center].detach().cpu().numpy() + low = float(np.percentile(lic_image, 1.0)) + high = float(np.percentile(lic_image, 99.0)) + lic_image = np.clip((lic_image - low) / max(high - low, 1.0e-6), 0.0, 1.0) + magnitude = vector_field.norm(dim=-1)[:, :, center].detach().cpu().numpy() + magnitude = np.log1p(magnitude) + high = max(float(np.percentile(magnitude, 99.0)), 1.0e-6) + magnitude = np.clip(magnitude / high, 0.0, 1.0) + color = jet_colormap(magnitude) + shade = 0.10 + 0.90 * lic_image + image = color * shade[..., None] + + border = max(1, image.shape[0] // 64) + image[:border, :, :] = 1.0 + image[-border:, :, :] = 1.0 + image[:, :border, :] = 1.0 + image[:, -border:, :] = 1.0 + axis = np.array([np.cos(phase), np.sin(phase)], dtype=np.float32) + separation = 0.65 + marker_radius = max(2, image.shape[0] // 32) + _draw_marker(image, separation * axis, np.array([1.0, 0.12, 0.08]), marker_radius) + _draw_marker(image, -separation * axis, np.array([0.08, 0.2, 1.0]), marker_radius) + return np.rot90(image, k=1) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--frames", type=int, default=16) + parser.add_argument("--grid-size", type=int, default=192) + parser.add_argument("--depth-size", type=int, default=4) + parser.add_argument("--seed", type=int, default=17) + parser.add_argument( + "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" + ) + parser.add_argument("--implementation", type=str, default=None) + parser.add_argument( + "--output-dir", type=Path, default=Path("outputs_line_integral_convolution") + ) + parser.add_argument("--gif-path", type=Path, default=None) + parser.add_argument("--gif-duration-ms", type=int, default=80) + args = parser.parse_args() + + device = torch.device(args.device) + torch.manual_seed(args.seed) + args.output_dir.mkdir(parents=True, exist_ok=True) + gif_path = args.gif_path or args.output_dir / "line_integral_convolution.gif" + gif_frames: list[Image.Image] = [] + seed = seed_pattern(args.grid_size, device).expand( + args.grid_size, args.grid_size, args.depth_size + ) + + for frame in range(args.frames): + phase = 2.0 * np.pi * frame / max(args.frames, 1) + field = dipole_field(args.grid_size, args.depth_size, phase, device) + lic = line_integral_convolution( + field, + seed, + step_size=0.65, + num_steps=52, + contrast=2.2, + implementation=args.implementation, + ) + image = (lic_to_rgb(lic, field, phase) * 255.0).clip(0, 255).astype(np.uint8) + frame_image = Image.fromarray(image, mode="RGB") + frame_image.save(args.output_dir / f"lic_{frame:04d}.png") + gif_frames.append(frame_image) + + if gif_frames: + gif_path.parent.mkdir(parents=True, exist_ok=True) + gif_frames[0].save( + gif_path, + save_all=True, + append_images=gif_frames[1:], + duration=args.gif_duration_ms, + loop=0, + ) + + +if __name__ == "__main__": + main() diff --git a/examples/rendering/line_integral_convolution/render_lic_volume.py b/examples/rendering/line_integral_convolution/render_lic_volume.py new file mode 100644 index 0000000000..60972a33c8 --- /dev/null +++ b/examples/rendering/line_integral_convolution/render_lic_volume.py @@ -0,0 +1,248 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import argparse +from pathlib import Path + +import numpy as np +import torch +from PIL import Image + +from physicsnemo.nn.functional import ( + line_integral_convolution, + volume_render, + wireframe_render, +) + + +def dipole_field(grid_size: int, device: torch.device) -> torch.Tensor: + coords = torch.linspace(-1.0, 1.0, grid_size, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + positive = torch.tensor([0.42, 0.0, 0.0], device=device) + negative = torch.tensor([-0.42, 0.0, 0.0], device=device) + + r_pos = torch.stack([x - positive[0], y - positive[1], z - positive[2]], dim=-1) + r_neg = torch.stack([x - negative[0], y - negative[1], z - negative[2]], dim=-1) + eps = 0.035 + d_pos = (r_pos.square().sum(dim=-1, keepdim=True) + eps).pow(1.5) + d_neg = (r_neg.square().sum(dim=-1, keepdim=True) + eps).pow(1.5) + return r_pos / d_pos - r_neg / d_neg + + +def cube_edges(device: torch.device) -> torch.Tensor: + vertices = torch.tensor( + [ + [-1.05, -1.05, -1.05], + [1.05, -1.05, -1.05], + [1.05, 1.05, -1.05], + [-1.05, 1.05, -1.05], + [-1.05, -1.05, 1.05], + [1.05, -1.05, 1.05], + [1.05, 1.05, 1.05], + [-1.05, 1.05, 1.05], + ], + device=device, + ) + edge_indices = torch.tensor( + [ + [0, 1], + [1, 2], + [2, 3], + [3, 0], + [4, 5], + [5, 6], + [6, 7], + [7, 4], + [0, 4], + [1, 5], + [2, 6], + [3, 7], + ], + device=device, + ) + return vertices[edge_indices] + + +def rotate_edges(edges: torch.Tensor, phase: float) -> torch.Tensor: + angle = torch.tensor(phase, device=edges.device, dtype=edges.dtype) + c = torch.cos(angle) + s = torch.sin(angle) + rotation_y = torch.stack( + [ + torch.stack([c, torch.zeros_like(c), s]), + torch.stack([torch.zeros_like(c), torch.ones_like(c), torch.zeros_like(c)]), + torch.stack([-s, torch.zeros_like(c), c]), + ] + ) + half = 0.45 * angle + ch = torch.cos(half) + sh = torch.sin(half) + rotation_x = torch.stack( + [ + torch.stack( + [torch.ones_like(ch), torch.zeros_like(ch), torch.zeros_like(ch)] + ), + torch.stack([torch.zeros_like(ch), ch, -sh]), + torch.stack([torch.zeros_like(ch), sh, ch]), + ] + ) + return edges @ (rotation_y @ rotation_x).T + + +def jet_colormap(value: torch.Tensor) -> torch.Tensor: + red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) + green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) + blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) + return torch.stack([red, green, blue], dim=-1) + + +def make_lic_rgba_volume( + vector_field: torch.Tensor, + lic: torch.Tensor, + max_opacity: float, +) -> torch.Tensor: + magnitude = torch.log1p(vector_field.norm(dim=-1)) + magnitude = (magnitude / torch.quantile(magnitude.reshape(-1), 0.985)).clamp( + 0.0, 1.0 + ) + + lic_low = torch.quantile(lic.reshape(-1), 0.01) + lic_high = torch.quantile(lic.reshape(-1), 0.99) + lic_norm = ((lic - lic_low) / (lic_high - lic_low).clamp_min(1.0e-6)).clamp( + 0.0, 1.0 + ) + + color = jet_colormap(magnitude) + color = color * (0.18 + 0.82 * lic_norm[..., None]) + alpha = (0.02 + 0.98 * lic_norm) * magnitude.sqrt() * max_opacity + volume = torch.cat([color, alpha[..., None].clamp(0.0, 1.0)], dim=-1) + return (volume * 255.0).clamp(0, 255).to(torch.uint8) + + +def composite_rgba(rgba: torch.Tensor, background: np.ndarray) -> np.ndarray: + image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() + alpha = image[..., 3:4] + return image[..., :3] * alpha + background * (1.0 - alpha) + + +def overlay_wire(volume_rgb: np.ndarray, wire_rgba: torch.Tensor) -> np.ndarray: + wire = wire_rgba.detach().clamp(0.0, 1.0).cpu().numpy() + alpha = wire[..., 3:4] + return wire[..., :3] * alpha + volume_rgb * (1.0 - alpha) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--frames", type=int, default=16) + parser.add_argument("--grid-size", type=int, default=56) + parser.add_argument("--image-size", type=int, default=192) + parser.add_argument("--seed", type=int, default=29) + parser.add_argument("--sweep-degrees", type=float, default=90.0) + parser.add_argument( + "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" + ) + parser.add_argument("--implementation", type=str, default=None) + parser.add_argument( + "--output-dir", type=Path, default=Path("outputs_line_integral_volume") + ) + parser.add_argument("--gif-path", type=Path, default=None) + parser.add_argument("--gif-duration-ms", type=int, default=80) + args = parser.parse_args() + + device = torch.device(args.device) + torch.manual_seed(args.seed) + args.output_dir.mkdir(parents=True, exist_ok=True) + gif_path = args.gif_path or args.output_dir / "line_integral_convolution_3d.gif" + gif_frames: list[Image.Image] = [] + + vector_field = dipole_field(args.grid_size, device) + seed = torch.rand(args.grid_size, args.grid_size, args.grid_size, device=device) + lic = line_integral_convolution( + vector_field, + seed, + step_size=0.55, + num_steps=26, + contrast=2.0, + implementation=args.implementation, + ) + lic_volume = make_lic_rgba_volume(vector_field, lic, max_opacity=0.16) + + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + edges = cube_edges(device) + background = np.array([0.015, 0.018, 0.024], dtype=np.float32) + + sweep = np.deg2rad(args.sweep_degrees) + for frame in range(args.frames): + t = 0.5 if args.frames == 1 else frame / (args.frames - 1) + phase = (t - 0.5) * sweep + eye = torch.tensor( + [3.1 * np.sin(phase), 0.16, -3.1 * np.cos(phase)], + device=device, + dtype=torch.float32, + ) + volume_rgba, _ = volume_render( + lic_volume, + args.image_size, + args.image_size, + eye, + center, + up, + 42.0, + bounds_min, + bounds_max, + step_size=2.0 / args.grid_size, + max_steps=2 * args.grid_size, + opacity_threshold=0.97, + implementation=args.implementation, + ) + volume_rgb = composite_rgba(volume_rgba, background) + wire_rgba, _ = wireframe_render( + rotate_edges(edges, phase), + args.image_size, + args.image_size, + eye, + center, + up, + 42.0, + line_color=torch.tensor([1.0, 0.92, 0.18], device=device), + line_thickness=2, + implementation=args.implementation, + ) + image = ( + (overlay_wire(volume_rgb, wire_rgba) * 255.0).clip(0, 255).astype(np.uint8) + ) + frame_image = Image.fromarray(image, mode="RGB") + frame_image.save(args.output_dir / f"lic_volume_{frame:04d}.png") + gif_frames.append(frame_image) + + if gif_frames: + gif_path.parent.mkdir(parents=True, exist_ok=True) + gif_frames[0].save( + gif_path, + save_all=True, + append_images=gif_frames[1:], + duration=args.gif_duration_ms, + loop=0, + ) + + +if __name__ == "__main__": + main() diff --git a/examples/rendering/mesh_raycast/README.md b/examples/rendering/mesh_raycast/README.md new file mode 100644 index 0000000000..065c06d63b --- /dev/null +++ b/examples/rendering/mesh_raycast/README.md @@ -0,0 +1,12 @@ +# Mesh Raycast Rendering + +This example renders a colored rotating cube with the Warp-backed +`mesh_raycast` functional. + +Run with: + +```bash +python render_mesh.py +``` + +The script writes PNG frames and an animated GIF to `outputs_mesh_raycast/`. diff --git a/examples/rendering/mesh_raycast/render_mesh.py b/examples/rendering/mesh_raycast/render_mesh.py new file mode 100644 index 0000000000..49c3bb9b2c --- /dev/null +++ b/examples/rendering/mesh_raycast/render_mesh.py @@ -0,0 +1,154 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import argparse +from pathlib import Path + +import numpy as np +import torch +from PIL import Image + +from physicsnemo.nn.functional import mesh_raycast + + +def cube_mesh(device: torch.device) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + vertices = torch.tensor( + [ + [-0.6, -0.6, -0.6], + [0.6, -0.6, -0.6], + [0.6, 0.6, -0.6], + [-0.6, 0.6, -0.6], + [-0.6, -0.6, 0.6], + [0.6, -0.6, 0.6], + [0.6, 0.6, 0.6], + [-0.6, 0.6, 0.6], + ], + device=device, + ) + indices = torch.tensor( + [ + [0, 2, 1], + [0, 3, 2], + [4, 5, 6], + [4, 6, 7], + [0, 1, 5], + [0, 5, 4], + [2, 3, 7], + [2, 7, 6], + [1, 2, 6], + [1, 6, 5], + [3, 0, 4], + [3, 4, 7], + ], + device=device, + dtype=torch.int32, + ) + colors = torch.tensor( + [ + [35, 105, 255], + [40, 190, 255], + [60, 230, 160], + [245, 220, 80], + [255, 120, 80], + [230, 80, 170], + [150, 85, 255], + [80, 235, 235], + ], + device=device, + dtype=torch.uint8, + ) + return vertices, indices, colors + + +def rotate_y(vertices: torch.Tensor, angle: torch.Tensor) -> torch.Tensor: + c = torch.cos(angle) + s = torch.sin(angle) + rotation = torch.stack( + [ + torch.stack([c, torch.zeros_like(c), s]), + torch.stack([torch.zeros_like(c), torch.ones_like(c), torch.zeros_like(c)]), + torch.stack([-s, torch.zeros_like(c), c]), + ] + ) + return vertices @ rotation.T + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--frames", type=int, default=24) + parser.add_argument("--image-size", type=int, default=256) + parser.add_argument( + "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" + ) + parser.add_argument("--implementation", type=str, default=None) + parser.add_argument("--output-dir", type=Path, default=Path("outputs_mesh_raycast")) + parser.add_argument("--gif-path", type=Path, default=None) + parser.add_argument("--gif-duration-ms", type=int, default=80) + args = parser.parse_args() + + device = torch.device(args.device) + args.output_dir.mkdir(parents=True, exist_ok=True) + gif_path = args.gif_path or args.output_dir / "mesh_raycast.gif" + gif_frames: list[Image.Image] = [] + + vertices, indices, colors = cube_mesh(device) + eye = torch.tensor([0.0, 0.15, -3.0], device=device) + look_at = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + light = torch.tensor([-0.4, 0.7, -1.0], device=device) + background = np.array([0.015, 0.018, 0.024], dtype=np.float32) + + for frame in range(args.frames): + angle = torch.tensor( + 2.0 * torch.pi * frame / max(args.frames, 1), device=device + ) + frame_vertices = rotate_y(vertices, angle) + rgba, _, _ = mesh_raycast( + frame_vertices, + indices, + args.image_size, + args.image_size, + eye, + look_at, + up, + 40.0, + vertex_colors=colors, + light_direction=light, + implementation=args.implementation, + ) + image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() + alpha = image[..., 3:4] + composite = image[..., :3] * alpha + background * (1.0 - alpha) + gif_image = (composite * 255.0).clip(0, 255).astype(np.uint8) + frame_image = Image.fromarray(gif_image, mode="RGB") + frame_image.save(args.output_dir / f"mesh_{frame:04d}.png") + gif_frames.append(frame_image) + + if gif_frames: + gif_path.parent.mkdir(parents=True, exist_ok=True) + gif_frames[0].save( + gif_path, + save_all=True, + append_images=gif_frames[1:], + duration=args.gif_duration_ms, + loop=0, + ) + + +if __name__ == "__main__": + main() diff --git a/examples/rendering/sphere_isosurface/README.md b/examples/rendering/sphere_isosurface/README.md new file mode 100644 index 0000000000..a05aeed4db --- /dev/null +++ b/examples/rendering/sphere_isosurface/README.md @@ -0,0 +1,13 @@ +# Sphere Isosurface Rendering + +This example builds a scalar field plus a `uint8` RGB volume for a moving sphere +and renders it with the fused `isosurface_render` functional. + +Run with: + +```bash +python render_sphere.py +``` + +The script writes PNG frames and an animated GIF to +`outputs_sphere_isosurface/`. diff --git a/examples/rendering/sphere_isosurface/render_sphere.py b/examples/rendering/sphere_isosurface/render_sphere.py new file mode 100644 index 0000000000..58157ab638 --- /dev/null +++ b/examples/rendering/sphere_isosurface/render_sphere.py @@ -0,0 +1,129 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import argparse +from pathlib import Path + +import numpy as np +import torch +from PIL import Image + +from physicsnemo.nn.functional import isosurface_render + + +def sphere_field( + grid_n: int, + center: torch.Tensor, + radius: float, + device: torch.device, +) -> torch.Tensor: + coords = torch.linspace(-1.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + dx = x - center[0] + dy = y - center[1] + dz = z - center[2] + return torch.sqrt(dx * dx + dy * dy + dz * dz) - radius + + +def color_field(grid_n: int, device: torch.device) -> torch.Tensor: + coords = torch.linspace(0.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + rgb = torch.stack([0.15 + 0.85 * x, 0.25 + 0.55 * y, 0.95 - 0.45 * z], dim=-1) + return (rgb * 255.0).to(torch.uint8) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--frames", type=int, default=24) + parser.add_argument("--grid-size", type=int, default=64) + parser.add_argument("--image-size", type=int, default=256) + parser.add_argument( + "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" + ) + parser.add_argument("--implementation", type=str, default=None) + parser.add_argument( + "--output-dir", type=Path, default=Path("outputs_sphere_isosurface") + ) + parser.add_argument("--gif-path", type=Path, default=None) + parser.add_argument("--gif-duration-ms", type=int, default=80) + args = parser.parse_args() + + device = torch.device(args.device) + args.output_dir.mkdir(parents=True, exist_ok=True) + gif_path = args.gif_path or args.output_dir / "sphere_isosurface.gif" + gif_frames: list[Image.Image] = [] + + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye = torch.tensor([0.0, 0.2, -3.0], device=device) + look_at = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + light = torch.tensor([-0.45, 0.75, -1.0], device=device) + background = np.array([0.015, 0.018, 0.024], dtype=np.float32) + colors = color_field(args.grid_size, device) + + for frame in range(args.frames): + phase = 2.0 * torch.pi * frame / max(args.frames, 1) + center = torch.tensor( + [ + 0.35 * torch.cos(torch.tensor(phase)), + 0.18 * torch.sin(torch.tensor(phase)), + 0.0, + ], + device=device, + ) + field = sphere_field(args.grid_size, center, radius=0.42, device=device) + rgba, _, _ = isosurface_render( + field, + args.image_size, + args.image_size, + eye, + look_at, + up, + 38.0, + bounds_min, + bounds_max, + threshold=0.0, + step_size=2.0 / args.grid_size, + max_steps=2 * args.grid_size, + color_field=colors, + light_direction=light, + implementation=args.implementation, + ) + + image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() + alpha = image[..., 3:4] + composite = image[..., :3] * alpha + background * (1.0 - alpha) + gif_image = (composite * 255.0).clip(0, 255).astype(np.uint8) + frame_image = Image.fromarray(gif_image, mode="RGB") + frame_image.save(args.output_dir / f"sphere_{frame:04d}.png") + gif_frames.append(frame_image) + + if gif_frames: + gif_path.parent.mkdir(parents=True, exist_ok=True) + gif_frames[0].save( + gif_path, + save_all=True, + append_images=gif_frames[1:], + duration=args.gif_duration_ms, + loop=0, + ) + + +if __name__ == "__main__": + main() diff --git a/physicsnemo/nn/functional/__init__.py b/physicsnemo/nn/functional/__init__.py index 2eb680a06a..db78c4a796 100644 --- a/physicsnemo/nn/functional/__init__.py +++ b/physicsnemo/nn/functional/__init__.py @@ -43,6 +43,16 @@ from .natten import na1d, na2d, na3d from .neighbors import knn, radius_search from .regularization_parameterization import drop_path, weight_fact +from .rendering import ( + isosurface_render, + line_integral_convolution, + mesh_raycast, + point_cloud_render, + scalar_field_to_rgba, + vector_field_to_rgba, + volume_render, + wireframe_render, +) __all__ = [ "irfft", @@ -52,8 +62,11 @@ "imag", "interpolation", "knn", + "isosurface_render", "legendre_polynomials", + "line_integral_convolution", "mesh_green_gauss_gradient", + "mesh_raycast", "meshless_fd_derivatives", "mesh_lsq_gradient", "mesh_poisson_disk_sample", @@ -68,12 +81,17 @@ "rectilinear_grid_gradient", "rfft", "rfft2", + "point_cloud_render", + "scalar_field_to_rgba", "signed_distance_field", "smooth_log", "spectral_grid_gradient", "spherical_basis", "uniform_grid_gradient", + "vector_field_to_rgba", "vector_project", + "volume_render", "view_as_complex", "weight_fact", + "wireframe_render", ] diff --git a/physicsnemo/nn/functional/rendering/__init__.py b/physicsnemo/nn/functional/rendering/__init__.py new file mode 100644 index 0000000000..7187dbf40e --- /dev/null +++ b/physicsnemo/nn/functional/rendering/__init__.py @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .isosurface_render import IsosurfaceRender, isosurface_render +from .line_integral_convolution import ( + LineIntegralConvolution, + line_integral_convolution, +) +from .mesh_raycast import MeshRaycast, mesh_raycast +from .point_cloud_render import PointCloudRender, point_cloud_render +from .scalar_field_to_rgba import ScalarFieldToRGBA, scalar_field_to_rgba +from .vector_field_to_rgba import VectorFieldToRGBA, vector_field_to_rgba +from .volume_render import VolumeRender, volume_render +from .wireframe_render import WireframeRender, wireframe_render + +__all__ = [ + "IsosurfaceRender", + "LineIntegralConvolution", + "MeshRaycast", + "PointCloudRender", + "ScalarFieldToRGBA", + "VectorFieldToRGBA", + "VolumeRender", + "WireframeRender", + "isosurface_render", + "line_integral_convolution", + "mesh_raycast", + "point_cloud_render", + "scalar_field_to_rgba", + "vector_field_to_rgba", + "volume_render", + "wireframe_render", +] diff --git a/physicsnemo/nn/functional/rendering/_torch_impl.py b/physicsnemo/nn/functional/rendering/_torch_impl.py new file mode 100644 index 0000000000..e162b3a3f5 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/_torch_impl.py @@ -0,0 +1,104 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch + + +def _validate_transfer_range(vmin: float, vmax: float) -> None: + if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: + raise ValueError("vmax must be greater than vmin") + + +def _validate_opacity(value: float, *, name: str) -> None: + if not math.isfinite(value) or value < 0.0 or value > 1.0: + raise ValueError(f"{name} must lie in the closed interval [0, 1]") + + +def _jet_colormap(value: torch.Tensor) -> torch.Tensor: + red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) + green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) + blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) + return torch.stack([red, green, blue], dim=-1) + + +def _rgba_to_uint8(color: torch.Tensor, alpha: torch.Tensor) -> torch.Tensor: + rgba = torch.cat([color, alpha.unsqueeze(-1)], dim=-1) + return (rgba * 255.0).clamp(0.0, 255.0).to(torch.uint8) + + +def scalar_field_to_rgba_torch( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + """Map a scalar volume to a uint8 RGBA transfer-function volume.""" + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(opacity_threshold, name="opacity_threshold") + + value = ((field.to(torch.float32) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) + color = _jet_colormap(value) + alpha = torch.where(value < opacity_threshold, torch.zeros_like(value), value) + alpha = (alpha * max_opacity).clamp(0.0, 1.0) + return _rgba_to_uint8(color, alpha) + + +def vector_field_to_rgba_torch( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + """Map vector magnitude and LIC values to a uint8 RGBA volume.""" + if vector_field.ndim != 4 or vector_field.shape[-1] != 3: + raise ValueError( + "vector_field must have shape (nx, ny, nz, 3), got " + f"{tuple(vector_field.shape)}" + ) + if lic_field.shape != vector_field.shape[:3]: + raise ValueError( + "lic_field must have shape matching vector_field spatial dimensions" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(lic_threshold, name="lic_threshold") + + vector_fp32 = vector_field.to(torch.float32) + normalized = ((vector_fp32.norm(dim=-1) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) + color = _jet_colormap(normalized) + lic_value = lic_field.to(device=vector_field.device, dtype=torch.float32).clamp( + 0.0, 1.0 + ) + lic_value = torch.where( + lic_value < lic_threshold, torch.zeros_like(lic_value), lic_value + ) + alpha = (lic_value * normalized * max_opacity).clamp(0.0, 1.0) + return _rgba_to_uint8(color, alpha) + + +__all__ = ["scalar_field_to_rgba_torch", "vector_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/_warp_impl.py b/physicsnemo/nn/functional/rendering/_warp_impl.py new file mode 100644 index 0000000000..f86cf35ac2 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/_warp_impl.py @@ -0,0 +1,2072 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math +from collections.abc import Sequence + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +wp.init() +wp.config.quiet = True + + +def _normalize_torch(vector: torch.Tensor, eps: float = 1.0e-12) -> torch.Tensor: + return vector / vector.norm(dim=-1, keepdim=True).clamp_min(eps) + + +def _as_vec3( + value: torch.Tensor | Sequence[float], *, name: str, device +) -> torch.Tensor: + if isinstance(value, torch.Tensor): + value = value.to(device=device, dtype=torch.float32, non_blocking=True) + else: + value = torch.tensor(value, device=device, dtype=torch.float32) + if value.shape != (3,): + raise ValueError(f"{name} must have shape (3,), got {tuple(value.shape)}") + return value + + +def _optional_tensor_arg(value: torch.Tensor | Sequence[float] | None, *, device): + if value is None: + return None + if isinstance(value, torch.Tensor): + return value.to(device=device, non_blocking=True) + return torch.as_tensor(value, device=device) + + +def _camera_basis( + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + *, + device, +) -> torch.Tensor: + eye = _as_vec3(eye, name="eye", device=device) + center = _as_vec3(center, name="center", device=device) + up = _as_vec3(up, name="up", device=device) + forward_raw = center - eye + if forward_raw.device.type == "cpu" and bool( + (forward_raw.norm() <= 1.0e-12).item() + ): + raise ValueError("eye and center must not be equal") + forward = _normalize_torch(forward_raw) + up_hint = _normalize_torch(up) + right_raw = torch.linalg.cross(up_hint, forward, dim=0) + if right_raw.device.type == "cpu" and bool((right_raw.norm() <= 1.0e-12).item()): + raise ValueError("up must not be parallel to the camera direction") + right = _normalize_torch(right_raw) + camera_up = _normalize_torch(torch.linalg.cross(forward, right, dim=0)) + return torch.stack([eye, forward, right, camera_up]).contiguous() + + +def _bounds_tensor( + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + *, + device, +) -> torch.Tensor: + bounds_min = _as_vec3(bounds_min, name="bounds_min", device=device) + bounds_max = _as_vec3(bounds_max, name="bounds_max", device=device) + if bounds_min.device.type == "cpu" and bool( + torch.any(bounds_max <= bounds_min).item() + ): + raise ValueError("bounds_max must be greater than bounds_min in all dimensions") + return torch.stack([bounds_min, bounds_max]).contiguous() + + +def _color_tensor( + color: torch.Tensor | None, + *, + device, + shape_name: str, + expected_rank: int, +) -> torch.Tensor: + if color is None: + return torch.zeros((1,) * (expected_rank - 1) + (4,), device=device) + if color.ndim != expected_rank or color.shape[-1] not in (3, 4): + raise ValueError( + f"{shape_name} must have shape (..., 3) or (..., 4), got {tuple(color.shape)}" + ) + color = color.to(device=device) + if color.dtype == torch.uint8: + color = color.to(torch.float32) / 255.0 + else: + color = color.to(torch.float32) + if color.shape[-1] == 3: + alpha = torch.ones(*color.shape[:-1], 1, device=device, dtype=torch.float32) + color = torch.cat([color, alpha], dim=-1) + return color.contiguous().clamp(0.0, 1.0) + + +def _uniform_color_tensor( + surface_color: torch.Tensor | None, + *, + device, +) -> torch.Tensor: + if surface_color is None: + color = torch.tensor([[1.0, 1.0, 1.0, 1.0]], device=device) + else: + color = torch.as_tensor(surface_color, device=device) + if color.shape not in ((3,), (4,)): + raise ValueError( + f"surface_color must have shape (3,) or (4,), got {tuple(color.shape)}" + ) + if color.dtype == torch.uint8: + color = color.to(torch.float32) / 255.0 + else: + color = color.to(torch.float32) + if color.shape == (3,): + color = torch.cat([color, torch.ones(1, device=device)]) + color = color.reshape(1, 4) + return color.contiguous().clamp(0.0, 1.0) + + +def _light_tensor(light_direction: torch.Tensor | None, *, device) -> torch.Tensor: + if light_direction is None: + light_direction = torch.tensor([-0.45, 0.75, -1.0], device=device) + light_direction = _as_vec3( + light_direction, name="light_direction", device=device + ).reshape(1, 3) + return _normalize_torch(light_direction).contiguous() + + +@wp.func +def _normalize_vec3(vector: wp.vec3) -> wp.vec3: + length = wp.length(vector) + if length <= 1.0e-12: + return wp.vec3(0.0, 0.0, 0.0) + return vector / length + + +@wp.func +def _clamp_int(value: int, lo: int, hi: int) -> int: + return wp.min(wp.max(value, lo), hi) + + +@wp.func +def _make_ray_direction( + tid: int, + width: int, + height: int, + camera: wp.array(dtype=wp.vec3), + tan_half_fov: wp.float32, + aspect: wp.float32, +) -> wp.vec3: + y = tid / width + x = tid - y * width + px = ((wp.float32(x) + 0.5) / wp.float32(width)) * 2.0 - 1.0 + py = 1.0 - (((wp.float32(y) + 0.5) / wp.float32(height)) * 2.0) + px = px * tan_half_fov * aspect + py = py * tan_half_fov + return _normalize_vec3(camera[1] + px * camera[2] + py * camera[3]) + + +@wp.func +def _sample_field_trilinear( + field: wp.array3d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.float32: + sx = ( + (point[0] - bounds_min[0]) + / (bounds_max[0] - bounds_min[0]) + * wp.float32(nx - 1) + ) + sy = ( + (point[1] - bounds_min[1]) + / (bounds_max[1] - bounds_min[1]) + * wp.float32(ny - 1) + ) + sz = ( + (point[2] - bounds_min[2]) + / (bounds_max[2] - bounds_min[2]) + * wp.float32(nz - 1) + ) + + i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) + j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) + k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) + i1 = i0 + 1 + j1 = j0 + 1 + k1 = k0 + 1 + + fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) + + c000 = field[i0, j0, k0] + c100 = field[i1, j0, k0] + c010 = field[i0, j1, k0] + c110 = field[i1, j1, k0] + c001 = field[i0, j0, k1] + c101 = field[i1, j0, k1] + c011 = field[i0, j1, k1] + c111 = field[i1, j1, k1] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + return c0 * (1.0 - fz) + c1 * fz + + +@wp.func +def _sample_color_trilinear( + colors: wp.array4d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec4: + sx = ( + (point[0] - bounds_min[0]) + / (bounds_max[0] - bounds_min[0]) + * wp.float32(nx - 1) + ) + sy = ( + (point[1] - bounds_min[1]) + / (bounds_max[1] - bounds_min[1]) + * wp.float32(ny - 1) + ) + sz = ( + (point[2] - bounds_min[2]) + / (bounds_max[2] - bounds_min[2]) + * wp.float32(nz - 1) + ) + + i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) + j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) + k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) + i1 = i0 + 1 + j1 = j0 + 1 + k1 = k0 + 1 + + fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) + + out = wp.vec4(0.0, 0.0, 0.0, 0.0) + for channel in range(4): + c000 = colors[i0, j0, k0, channel] + c100 = colors[i1, j0, k0, channel] + c010 = colors[i0, j1, k0, channel] + c110 = colors[i1, j1, k0, channel] + c001 = colors[i0, j0, k1, channel] + c101 = colors[i1, j0, k1, channel] + c011 = colors[i0, j1, k1, channel] + c111 = colors[i1, j1, k1, channel] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + out[channel] = c0 * (1.0 - fz) + c1 * fz + return out + + +@wp.func +def _field_gradient( + field: wp.array3d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec3: + dx = (bounds_max[0] - bounds_min[0]) / wp.float32(nx - 1) + dy = (bounds_max[1] - bounds_min[1]) / wp.float32(ny - 1) + dz = (bounds_max[2] - bounds_min[2]) / wp.float32(nz - 1) + gx = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.5 * dx, 0.0, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.5 * dx, 0.0, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dx + gy = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.0, 0.5 * dy, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.0, 0.5 * dy, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dy + gz = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.0, 0.0, 0.5 * dz), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.0, 0.0, 0.5 * dz), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dz + return wp.vec3(gx, gy, gz) + + +@wp.func +def _axis_intersection( + origin: wp.float32, + direction: wp.float32, + lo: wp.float32, + hi: wp.float32, +) -> wp.vec3: + if wp.abs(direction) < 1.0e-12: + if origin < lo or origin > hi: + return wp.vec3(1.0, 0.0, 0.0) + return wp.vec3(0.0, -3.402823e38, 3.402823e38) + + inv_d = 1.0 / direction + t0 = (lo - origin) * inv_d + t1 = (hi - origin) * inv_d + return wp.vec3(0.0, wp.min(t0, t1), wp.max(t0, t1)) + + +@wp.func +def _ray_box_intersection( + origin: wp.vec3, + direction: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, +) -> wp.vec3: + x = _axis_intersection(origin[0], direction[0], bounds_min[0], bounds_max[0]) + y = _axis_intersection(origin[1], direction[1], bounds_min[1], bounds_max[1]) + z = _axis_intersection(origin[2], direction[2], bounds_min[2], bounds_max[2]) + + miss = x[0] + y[0] + z[0] + t_near = wp.max(0.0, wp.max(x[1], wp.max(y[1], z[1]))) + t_far = wp.min(x[2], wp.min(y[2], z[2])) + if miss > 0.0 or t_far < t_near: + return wp.vec3(0.0, 0.0, -1.0) + return wp.vec3(1.0, t_near, t_far) + + +@wp.func +def _shade( + color: wp.vec4, + normal: wp.vec3, + light_direction: wp.vec3, + ambient: wp.float32, +) -> wp.vec4: + diffuse = wp.max(wp.dot(normal, light_direction), 0.0) + intensity = ambient + (1.0 - ambient) * diffuse + return wp.vec4( + color[0] * intensity, + color[1] * intensity, + color[2] * intensity, + color[3], + ) + + +@wp.func +def _jet_colormap(value: wp.float32) -> wp.vec3: + r = wp.min(4.0 * value - 1.5, -4.0 * value + 4.5) + g = wp.min(4.0 * value - 0.5, -4.0 * value + 3.5) + b = wp.min(4.0 * value + 0.5, -4.0 * value + 2.5) + return wp.vec3( + wp.min(wp.max(r, 0.0), 1.0), + wp.min(wp.max(g, 0.0), 1.0), + wp.min(wp.max(b, 0.0), 1.0), + ) + + +@wp.func +def _sample_seed_trilinear( + seed: wp.array3d(dtype=wp.float32), + pos: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.float32: + i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) + j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) + k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) + i1 = _clamp_int(i0 + 1, 0, nx - 1) + j1 = _clamp_int(j0 + 1, 0, ny - 1) + k1 = _clamp_int(k0 + 1, 0, nz - 1) + + fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) + + c000 = seed[i0, j0, k0] + c100 = seed[i1, j0, k0] + c010 = seed[i0, j1, k0] + c110 = seed[i1, j1, k0] + c001 = seed[i0, j0, k1] + c101 = seed[i1, j0, k1] + c011 = seed[i0, j1, k1] + c111 = seed[i1, j1, k1] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + return c0 * (1.0 - fz) + c1 * fz + + +@wp.func +def _sample_vector_trilinear( + vector_field: wp.array4d(dtype=wp.float32), + pos: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec3: + i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) + j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) + k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) + i1 = _clamp_int(i0 + 1, 0, nx - 1) + j1 = _clamp_int(j0 + 1, 0, ny - 1) + k1 = _clamp_int(k0 + 1, 0, nz - 1) + + fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) + + result = wp.vec3(0.0, 0.0, 0.0) + for channel in range(3): + c000 = vector_field[i0, j0, k0, channel] + c100 = vector_field[i1, j0, k0, channel] + c010 = vector_field[i0, j1, k0, channel] + c110 = vector_field[i1, j1, k0, channel] + c001 = vector_field[i0, j0, k1, channel] + c101 = vector_field[i1, j0, k1, channel] + c011 = vector_field[i0, j1, k1, channel] + c111 = vector_field[i1, j1, k1, channel] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + result[channel] = c0 * (1.0 - fz) + c1 * fz + return result + + +@wp.func +def _project_point( + point: wp.vec3, + camera: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, +) -> wp.vec4: + rel = point - camera[0] + z = wp.dot(rel, camera[1]) + x = wp.dot(rel, camera[2]) + y = wp.dot(rel, camera[3]) + if z <= 1.0e-12: + return wp.vec4(0.0, 0.0, z, 0.0) + screen_x = (x / (z * tan_half_fov * aspect) + 1.0) * 0.5 * wp.float32(width) + screen_y = (1.0 - (y / (z * tan_half_fov) + 1.0) * 0.5) * wp.float32(height) + return wp.vec4(screen_x, screen_y, z, 1.0) + + +@wp.kernel +def _scalar_field_to_rgba_kernel( + field: wp.array3d(dtype=wp.float32), + vmin: wp.float32, + vmax: wp.float32, + max_opacity: wp.float32, + opacity_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba_volume: wp.array4d(dtype=wp.uint8), +): + i, j, k = wp.tid() + value = (field[i, j, k] - vmin) / (vmax - vmin) + value = wp.min(wp.max(value, 0.0), 1.0) + color = _jet_colormap(value) + + alpha = value + if alpha < opacity_threshold: + alpha = 0.0 + alpha = wp.min(wp.max(alpha * max_opacity, 0.0), 1.0) + + rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) + rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) + rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) + rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) + + +@wp.kernel +def _line_integral_convolution_kernel( + vector_field: wp.array4d(dtype=wp.float32), + seed: wp.array3d(dtype=wp.float32), + step_size: wp.float32, + num_steps: int, + contrast: wp.float32, + nx: int, + ny: int, + nz: int, + line_integral: wp.array3d(dtype=wp.float32), +): + i, j, k = wp.tid() + pos = wp.vec3(wp.float32(i), wp.float32(j), wp.float32(k)) + + total = seed[i, j, k] + total_weight = wp.float32(1.0) + + for direction_sign in range(2): + direction_scale = wp.float32(1.0) + if direction_sign == 1: + direction_scale = -1.0 + + current = pos + for step in range(num_steps): + vector = _sample_vector_trilinear(vector_field, current, nx, ny, nz) + vector_length = wp.length(vector) + if vector_length <= 1.0e-6: + break + vector = direction_scale * vector / vector_length + + mid = current + 0.5 * step_size * vector + mid_vector = _sample_vector_trilinear(vector_field, mid, nx, ny, nz) + mid_length = wp.length(mid_vector) + if mid_length <= 1.0e-6: + break + mid_vector = direction_scale * mid_vector / mid_length + current = current + step_size * mid_vector + + if ( + current[0] < 0.0 + or current[0] > wp.float32(nx - 1) + or current[1] < 0.0 + or current[1] > wp.float32(ny - 1) + or current[2] < 0.0 + or current[2] > wp.float32(nz - 1) + ): + break + + normalized_step = wp.float32(step + 1) / wp.float32(num_steps + 1) + weight = 1.0 - normalized_step + total += _sample_seed_trilinear(seed, current, nx, ny, nz) * weight + total_weight += weight + + value = total / wp.max(total_weight, 1.0e-6) + value = wp.min(wp.max(value, 0.0), 1.0) + value = (value - 0.5) * contrast + 0.5 + line_integral[i, j, k] = wp.min(wp.max(value, 0.0), 1.0) + + +@wp.kernel +def _vector_field_to_rgba_kernel( + vector_field: wp.array4d(dtype=wp.float32), + lic_field: wp.array3d(dtype=wp.float32), + vmin: wp.float32, + vmax: wp.float32, + max_opacity: wp.float32, + lic_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba_volume: wp.array4d(dtype=wp.uint8), +): + i, j, k = wp.tid() + vx = vector_field[i, j, k, 0] + vy = vector_field[i, j, k, 1] + vz = vector_field[i, j, k, 2] + magnitude = wp.sqrt(vx * vx + vy * vy + vz * vz) + normalized = wp.min(wp.max((magnitude - vmin) / (vmax - vmin), 0.0), 1.0) + color = _jet_colormap(normalized) + + lic_value = wp.min(wp.max(lic_field[i, j, k], 0.0), 1.0) + if lic_value < lic_threshold: + lic_value = 0.0 + alpha = wp.min(wp.max(lic_value * normalized * max_opacity, 0.0), 1.0) + + rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) + rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) + rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) + rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) + + +@wp.kernel +def _volume_render_kernel( + rgba_volume: wp.array4d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + bounds: wp.array(dtype=wp.vec3), + width: int, + height: int, + step_size: wp.float32, + max_steps: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + opacity_threshold: wp.float32, + depth_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + bounds_min = bounds[0] + bounds_max = bounds[1] + intersection = _ray_box_intersection( + ray_origin, ray_direction, bounds_min, bounds_max + ) + + if intersection[0] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + return + + accum = wp.vec4(0.0, 0.0, 0.0, 0.0) + first_depth = wp.float32(3.402823e38) + t = intersection[1] + for _ in range(max_steps): + if t > intersection[2] or accum[3] >= opacity_threshold: + break + sample = _sample_color_trilinear( + rgba_volume, + ray_origin + t * ray_direction, + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + sample_alpha = wp.min(wp.max(sample[3], 0.0), 1.0) + if sample_alpha > 0.0: + opacity = (1.0 - accum[3]) * sample_alpha + accum[0] += sample[0] * opacity + accum[1] += sample[1] * opacity + accum[2] += sample[2] * opacity + accum[3] += opacity + if first_depth >= 3.0e38 and accum[3] >= depth_threshold: + first_depth = t + t += step_size + + if accum[3] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + return + + rgba[tid] = wp.vec4( + accum[0] / accum[3], + accum[1] / accum[3], + accum[2] / accum[3], + accum[3], + ) + depth[tid] = first_depth + + +@wp.func +def _write_depth_tested_pixel( + x: int, + y: int, + z: wp.float32, + color: wp.vec4, + width: int, + height: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + if x >= 0 and x < width and y >= 0 and y < height: + index = y * width + x + old_depth = wp.atomic_min(depth, index, z) + if z <= old_depth: + rgba[index] = color + + +@wp.kernel +def _point_cloud_depth_kernel( + points: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + near: wp.float32, + far: wp.float32, + point_size: int, + num_points: int, + depth_scale: wp.float32, + winners: wp.array(dtype=wp.int64), +): + tid = wp.tid() + point = wp.vec3(points[tid, 0], points[tid, 1], points[tid, 2]) + projected = _project_point(point, camera, width, height, tan_half_fov, aspect) + z = projected[2] + if z <= near or z >= far: + return + + radius = point_size / 2 + center_x = int(projected[0]) + center_y = int(projected[1]) + key = wp.int64(z * depth_scale) * wp.int64(num_points) + wp.int64(tid) + for dy in range(-radius, radius + 1): + for dx in range(-radius, radius + 1): + x = center_x + dx + y = center_y + dy + if x >= 0 and x < width and y >= 0 and y < height: + wp.atomic_min(winners, y * width + x, key) + + +@wp.kernel +def _point_cloud_resolve_kernel( + points: wp.array2d(dtype=wp.float32), + colors: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + has_point_colors: bool, + num_points: int, + empty_key: wp.int64, + winners: wp.array(dtype=wp.int64), + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + key = winners[tid] + if key == empty_key: + return + + point_id = int(key % wp.int64(num_points)) + point = wp.vec3(points[point_id, 0], points[point_id, 1], points[point_id, 2]) + projected = _project_point(point, camera, width, height, tan_half_fov, aspect) + + color = uniform_color[0] + if has_point_colors: + color = wp.vec4( + colors[point_id, 0], + colors[point_id, 1], + colors[point_id, 2], + colors[point_id, 3], + ) + rgba[tid] = color + depth[tid] = projected[2] + + +@wp.func +def _draw_line_depth_tested( + x0: int, + y0: int, + x1: int, + y1: int, + z0: wp.float32, + z1: wp.float32, + width: int, + height: int, + color: wp.vec4, + thickness: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + dx = wp.abs(x1 - x0) + dy = wp.abs(y1 - y0) + sx = wp.int32(1) + if x0 > x1: + sx = -1 + sy = wp.int32(1) + if y0 > y1: + sy = -1 + err = dx - dy + steps = wp.max(dx, dy) + radius = thickness / 2 + x = x0 + y = y0 + + for step in range(8192): + if step > steps: + break + alpha = wp.float32(0.0) + if steps > 0: + alpha = wp.float32(step) / wp.float32(steps) + z = z0 * (1.0 - alpha) + z1 * alpha + for oy in range(-radius, radius + 1): + for ox in range(-radius, radius + 1): + _write_depth_tested_pixel( + x + ox, y + oy, z, color, width, height, rgba, depth + ) + + if x == x1 and y == y1: + break + e2 = 2 * err + if e2 > -dy: + err -= dy + x += sx + if e2 < dx: + err += dx + y += sy + + +@wp.kernel +def _wireframe_render_kernel( + edges: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + near: wp.float32, + far: wp.float32, + line_thickness: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + p0 = wp.vec3(edges[tid, 0], edges[tid, 1], edges[tid, 2]) + p1 = wp.vec3(edges[tid, 3], edges[tid, 4], edges[tid, 5]) + s0 = _project_point(p0, camera, width, height, tan_half_fov, aspect) + s1 = _project_point(p1, camera, width, height, tan_half_fov, aspect) + + if s0[2] <= near or s0[2] >= far or s1[2] <= near or s1[2] >= far: + return + + _draw_line_depth_tested( + int(s0[0]), + int(s0[1]), + int(s1[0]), + int(s1[1]), + s0[2], + s1[2], + width, + height, + uniform_color[0], + line_thickness, + rgba, + depth, + ) + + +@wp.kernel +def _isosurface_render_kernel( + field: wp.array3d(dtype=wp.float32), + color_field: wp.array4d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + bounds: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + light: wp.array(dtype=wp.vec3), + width: int, + height: int, + threshold: wp.float32, + step_size: wp.float32, + max_steps: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + ambient: wp.float32, + has_color_field: bool, + nx: int, + ny: int, + nz: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), + normal_out: wp.array(dtype=wp.vec3), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + bounds_min = bounds[0] + bounds_max = bounds[1] + intersection = _ray_box_intersection( + ray_origin, ray_direction, bounds_min, bounds_max + ) + + if intersection[0] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + t_far = intersection[2] + prev_t = intersection[1] + prev_point = ray_origin + prev_t * ray_direction + prev_value = _sample_field_trilinear( + field, prev_point, bounds_min, bounds_max, nx, ny, nz + ) + + found = bool(False) + hit_t = wp.float32(3.402823e38) + + for _ in range(max_steps): + if found: + break + next_t = prev_t + step_size + if next_t > t_far: + break + + next_point = ray_origin + next_t * ray_direction + next_value = _sample_field_trilinear( + field, next_point, bounds_min, bounds_max, nx, ny, nz + ) + if (prev_value - threshold) * (next_value - threshold) <= 0.0: + denom = next_value - prev_value + if wp.abs(denom) < 1.0e-7: + if denom < 0.0: + denom = -1.0e-7 + else: + denom = 1.0e-7 + alpha = wp.min(wp.max((threshold - prev_value) / denom, 0.0), 1.0) + hit_t = prev_t + alpha * step_size + found = True + + prev_t = next_t + prev_value = next_value + + if not found: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + hit_point = ray_origin + hit_t * ray_direction + normal = _normalize_vec3( + _field_gradient(field, hit_point, bounds_min, bounds_max, nx, ny, nz) + ) + if wp.dot(normal, ray_direction) > 0.0: + normal = -normal + + color = uniform_color[0] + if has_color_field: + color = _sample_color_trilinear( + color_field, hit_point, bounds_min, bounds_max, nx, ny, nz + ) + + rgba[tid] = _shade(color, normal, light[0], ambient) + depth[tid] = hit_t + normal_out[tid] = normal + + +@wp.kernel +def _mesh_raycast_kernel( + mesh_id: wp.uint64, + color_values: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + light: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + max_distance: wp.float32, + ambient: wp.float32, + color_mode: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), + normal_out: wp.array(dtype=wp.vec3), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + query = wp.mesh_query_ray(mesh_id, ray_origin, ray_direction, max_distance) + + if not query.result: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + normal = _normalize_vec3(query.normal) + if wp.dot(normal, ray_direction) > 0.0: + normal = -normal + + color = uniform_color[0] + if color_mode == 1: + mesh = wp.mesh_get(mesh_id) + i0 = mesh.indices[3 * query.face + 0] + i1 = mesh.indices[3 * query.face + 1] + i2 = mesh.indices[3 * query.face + 2] + w0 = query.u + w1 = query.v + w2 = 1.0 - query.u - query.v + color = wp.vec4( + w0 * color_values[i0, 0] + + w1 * color_values[i1, 0] + + w2 * color_values[i2, 0], + w0 * color_values[i0, 1] + + w1 * color_values[i1, 1] + + w2 * color_values[i2, 1], + w0 * color_values[i0, 2] + + w1 * color_values[i1, 2] + + w2 * color_values[i2, 2], + w0 * color_values[i0, 3] + + w1 * color_values[i1, 3] + + w2 * color_values[i2, 3], + ) + elif color_mode == 2: + color = wp.vec4( + color_values[query.face, 0], + color_values[query.face, 1], + color_values[query.face, 2], + color_values[query.face, 3], + ) + + rgba[tid] = _shade(color, normal, light[0], ambient) + depth[tid] = query.t + normal_out[tid] = normal + + +def _validate_image_shape(image_height: int, image_width: int) -> None: + if image_height <= 0 or image_width <= 0: + raise ValueError("image_height and image_width must be strictly positive") + + +def _validate_fov(fov_y_degrees: float) -> None: + if fov_y_degrees <= 0.0 or fov_y_degrees >= 180.0: + raise ValueError("fov_y_degrees must lie in the open interval (0, 180)") + + +def _validate_ambient(ambient: float) -> None: + if ambient < 0.0 or ambient > 1.0: + raise ValueError("ambient must lie in the closed interval [0, 1]") + + +def _empty_render_outputs( + image_height: int, + image_width: int, + *, + device, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + rgba = torch.empty( + (image_height, image_width, 4), device=device, dtype=torch.float32 + ) + depth = torch.empty((image_height, image_width), device=device, dtype=torch.float32) + normal = torch.empty( + (image_height, image_width, 3), device=device, dtype=torch.float32 + ) + return rgba, depth, normal + + +def _empty_image_outputs( + image_height: int, + image_width: int, + *, + device, +) -> tuple[torch.Tensor, torch.Tensor]: + rgba = torch.zeros( + (image_height, image_width, 4), device=device, dtype=torch.float32 + ) + depth = torch.full( + (image_height, image_width), 3.402823e38, device=device, dtype=torch.float32 + ) + return rgba, depth + + +def _validate_transfer_range(vmin: float, vmax: float) -> None: + if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: + raise ValueError("vmax must be greater than vmin") + + +def _validate_opacity(value: float, *, name: str) -> None: + if not math.isfinite(value) or value < 0.0 or value > 1.0: + raise ValueError(f"{name} must lie in the closed interval [0, 1]") + + +def _validate_clip_range(near: float, far: float) -> None: + if not math.isfinite(near) or not math.isfinite(far) or near <= 0.0 or far <= near: + raise ValueError("near and far must satisfy 0 < near < far") + + +def _validate_vector_field(vector_field: torch.Tensor) -> None: + if vector_field.ndim != 4 or vector_field.shape[-1] != 3: + raise ValueError( + "vector_field must have shape (nx, ny, nz, 3), got " + f"{tuple(vector_field.shape)}" + ) + if any(size < 2 for size in vector_field.shape[:3]): + raise ValueError("vector_field must have at least two samples per dimension") + + +def _normalize_rgba_volume(rgba_volume: torch.Tensor) -> torch.Tensor: + if rgba_volume.ndim != 4 or rgba_volume.shape[-1] != 4: + raise ValueError( + "rgba_volume must have shape (nx, ny, nz, 4), got " + f"{tuple(rgba_volume.shape)}" + ) + if any(size < 2 for size in rgba_volume.shape[:3]): + raise ValueError("rgba_volume must have at least two samples per dimension") + if rgba_volume.dtype == torch.uint8: + rgba_volume = rgba_volume.to(torch.float32) / 255.0 + else: + rgba_volume = rgba_volume.to(torch.float32) + return rgba_volume.contiguous().clamp(0.0, 1.0) + + +@torch.library.custom_op("physicsnemo::scalar_field_to_rgba_warp", mutates_args=()) +def scalar_field_to_rgba_impl( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(opacity_threshold, name="opacity_threshold") + + field_fp32 = field.to(dtype=torch.float32).contiguous() + rgba_volume = torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) + wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _scalar_field_to_rgba_kernel, + dim=tuple(int(size) for size in field.shape), + inputs=[ + wp.from_torch(field_fp32, dtype=wp.float32), + float(vmin), + float(vmax), + float(max_opacity), + float(opacity_threshold), + int(field.shape[0]), + int(field.shape[1]), + int(field.shape[2]), + ], + outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], + device=wp_device, + stream=wp_stream, + ) + return rgba_volume + + +@scalar_field_to_rgba_impl.register_fake +def _( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + return torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) + + +@torch.library.custom_op("physicsnemo::line_integral_convolution_warp", mutates_args=()) +def line_integral_convolution_impl( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + _validate_vector_field(vector_field) + if seed.shape != vector_field.shape[:3]: + raise ValueError( + "seed must have shape matching vector_field spatial dimensions, got " + f"{tuple(seed.shape)} and {tuple(vector_field.shape[:3])}" + ) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if num_steps <= 0: + raise ValueError("num_steps must be strictly positive") + if contrast <= 0.0: + raise ValueError("contrast must be strictly positive") + + vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() + seed_fp32 = seed.to(device=vector_field.device, dtype=torch.float32).contiguous() + line_integral = torch.empty_like(seed_fp32) + wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _line_integral_convolution_kernel, + dim=tuple(int(size) for size in seed.shape), + inputs=[ + wp.from_torch(vector_fp32, dtype=wp.float32), + wp.from_torch(seed_fp32, dtype=wp.float32), + float(step_size), + int(num_steps), + float(contrast), + int(seed.shape[0]), + int(seed.shape[1]), + int(seed.shape[2]), + ], + outputs=[wp.from_torch(line_integral, dtype=wp.float32)], + device=wp_device, + stream=wp_stream, + ) + return line_integral + + +@line_integral_convolution_impl.register_fake +def _( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + return torch.empty_like(seed, dtype=torch.float32) + + +@torch.library.custom_op("physicsnemo::vector_field_to_rgba_warp", mutates_args=()) +def vector_field_to_rgba_impl( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + _validate_vector_field(vector_field) + if lic_field.shape != vector_field.shape[:3]: + raise ValueError( + "lic_field must have shape matching vector_field spatial dimensions" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(lic_threshold, name="lic_threshold") + + vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() + lic_fp32 = lic_field.to( + device=vector_field.device, dtype=torch.float32 + ).contiguous() + rgba_volume = torch.empty( + *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _vector_field_to_rgba_kernel, + dim=tuple(int(size) for size in vector_field.shape[:3]), + inputs=[ + wp.from_torch(vector_fp32, dtype=wp.float32), + wp.from_torch(lic_fp32, dtype=wp.float32), + float(vmin), + float(vmax), + float(max_opacity), + float(lic_threshold), + int(vector_field.shape[0]), + int(vector_field.shape[1]), + int(vector_field.shape[2]), + ], + outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], + device=wp_device, + stream=wp_stream, + ) + return rgba_volume + + +@vector_field_to_rgba_impl.register_fake +def _( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + return torch.empty( + *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 + ) + + +@torch.library.custom_op("physicsnemo::volume_render_warp", mutates_args=()) +def volume_render_impl( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if max_steps <= 0: + raise ValueError("max_steps must be strictly positive") + _validate_opacity(opacity_threshold, name="opacity_threshold") + _validate_opacity(depth_threshold, name="depth_threshold") + + device = rgba_volume.device + rgba_volume_fp32 = _normalize_rgba_volume(rgba_volume) + camera = _camera_basis(eye, center, up, device=device) + bounds = _bounds_tensor(bounds_min, bounds_max, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + wp_device, wp_stream = FunctionSpec.warp_launch_context(rgba_volume_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _volume_render_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(rgba_volume_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(bounds, dtype=wp.vec3), + int(image_width), + int(image_height), + float(step_size), + int(max_steps), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(opacity_threshold), + float(depth_threshold), + int(rgba_volume.shape[0]), + int(rgba_volume.shape[1]), + int(rgba_volume.shape[2]), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@volume_render_impl.register_fake +def _( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=rgba_volume.device) + + +@torch.library.custom_op("physicsnemo::point_cloud_render_warp", mutates_args=()) +def point_cloud_render_impl( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + if points.ndim != 2 or points.shape[-1] != 3: + raise ValueError(f"points must have shape (num_points, 3), got {points.shape}") + if points.shape[0] == 0: + raise ValueError("points must contain at least one point") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if point_size <= 0: + raise ValueError("point_size must be strictly positive") + _validate_clip_range(near, far) + + device = points.device + points_fp32 = points.to(dtype=torch.float32).contiguous() + colors = torch.zeros((1, 4), device=device, dtype=torch.float32) + has_point_colors = point_colors is not None + if point_colors is not None: + if point_color is not None: + raise ValueError("Pass either point_colors or point_color, not both") + if point_colors.shape[0] != points.shape[0]: + raise ValueError("point_colors must have one color per point") + colors = _color_tensor( + point_colors, device=device, shape_name="point_colors", expected_rank=2 + ) + uniform_color = _uniform_color_tensor(point_color, device=device) + camera = _camera_basis(eye, center, up, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + empty_key = torch.iinfo(torch.int64).max + max_depth_key = float(empty_key // max(int(points.shape[0]), 1) - 1) + depth_scale = min(1.0e6, max_depth_key / float(far)) + winners = torch.full( + (image_height, image_width), empty_key, device=device, dtype=torch.int64 + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(points_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _point_cloud_depth_kernel, + dim=int(points.shape[0]), + inputs=[ + wp.from_torch(points_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(near), + float(far), + int(point_size), + int(points.shape[0]), + float(depth_scale), + ], + outputs=[wp.from_torch(winners.reshape(-1), dtype=wp.int64)], + device=wp_device, + stream=wp_stream, + ) + wp.launch( + _point_cloud_resolve_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(points_fp32, dtype=wp.float32), + wp.from_torch(colors, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + bool(has_point_colors), + int(points.shape[0]), + int(empty_key), + wp.from_torch(winners.reshape(-1), dtype=wp.int64), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@point_cloud_render_impl.register_fake +def _( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=points.device) + + +@torch.library.custom_op("physicsnemo::wireframe_render_warp", mutates_args=()) +def wireframe_render_impl( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + if edges.ndim == 3: + if edges.shape[1:] != (2, 3): + raise ValueError( + "edges must have shape (num_edges, 2, 3) or (num_edges, 6)" + ) + edges = edges.reshape(edges.shape[0], 6) + elif edges.ndim != 2 or edges.shape[-1] != 6: + raise ValueError("edges must have shape (num_edges, 2, 3) or (num_edges, 6)") + if edges.shape[0] == 0: + raise ValueError("edges must contain at least one edge") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if line_thickness <= 0: + raise ValueError("line_thickness must be strictly positive") + _validate_clip_range(near, far) + + device = edges.device + edges_fp32 = edges.to(dtype=torch.float32).contiguous() + uniform_color = _uniform_color_tensor(line_color, device=device) + camera = _camera_basis(eye, center, up, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + wp_device, wp_stream = FunctionSpec.warp_launch_context(edges_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _wireframe_render_kernel, + dim=int(edges.shape[0]), + inputs=[ + wp.from_torch(edges_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(near), + float(far), + int(line_thickness), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@wireframe_render_impl.register_fake +def _( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=edges.device) + + +@torch.library.custom_op("physicsnemo::isosurface_render_warp", mutates_args=()) +def isosurface_render_impl( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + if any(size < 2 for size in field.shape): + raise ValueError("field must have at least two samples in each dimension") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + _validate_ambient(ambient) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if max_steps <= 0: + raise ValueError("max_steps must be strictly positive") + + device = field.device + field_fp32 = field.to(device=device, dtype=torch.float32).contiguous() + camera = _camera_basis(eye, center, up, device=device) + bounds = _bounds_tensor(bounds_min, bounds_max, device=device) + color_field_fp32 = _color_tensor( + color_field, device=device, shape_name="color_field", expected_rank=4 + ) + if color_field is not None and color_field.shape[:3] != field.shape: + raise ValueError( + f"color_field spatial shape must match field, got {tuple(color_field.shape[:3])}" + f" and {tuple(field.shape)}" + ) + uniform_color = _uniform_color_tensor(surface_color, device=device) + light = _light_tensor(light_direction, device=device) + + rgba, depth, normal = _empty_render_outputs( + image_height, image_width, device=device + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _isosurface_render_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(field_fp32, dtype=wp.float32), + wp.from_torch(color_field_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(bounds, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + wp.from_torch(light, dtype=wp.vec3), + int(image_width), + int(image_height), + float(threshold), + float(step_size), + int(max_steps), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(ambient), + color_field is not None, + int(field_fp32.shape[0]), + int(field_fp32.shape[1]), + int(field_fp32.shape[2]), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth, normal + + +@isosurface_render_impl.register_fake +def _( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return _empty_render_outputs(image_height, image_width, device=field.device) + + +@torch.library.custom_op("physicsnemo::mesh_raycast_warp", mutates_args=()) +def mesh_raycast_impl( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + if mesh_vertices.ndim != 2 or mesh_vertices.shape[-1] != 3: + raise ValueError( + "mesh_vertices must have shape (num_vertices, 3), got " + f"{tuple(mesh_vertices.shape)}" + ) + if mesh_vertices.shape[0] == 0: + raise ValueError("mesh_vertices must contain at least one vertex") + if mesh_indices.ndim == 2: + if mesh_indices.shape[-1] != 3: + raise ValueError("mesh_indices must have shape (num_faces, 3)") + mesh_indices = mesh_indices.reshape(-1) + elif mesh_indices.ndim != 1: + raise ValueError("mesh_indices must be 1D or have shape (num_faces, 3)") + if mesh_indices.numel() == 0 or mesh_indices.numel() % 3 != 0: + raise ValueError("mesh_indices must contain complete triangle faces") + if vertex_colors is not None and face_colors is not None: + raise ValueError("Pass either vertex_colors or face_colors, not both") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + _validate_ambient(ambient) + if max_distance <= 0.0: + raise ValueError("max_distance must be strictly positive") + + device = mesh_vertices.device + mesh_vertices_fp32 = mesh_vertices.to(dtype=torch.float32).contiguous() + mesh_indices_i32 = mesh_indices.to(device=device, dtype=torch.int32).contiguous() + camera = _camera_basis(eye, center, up, device=device) + uniform_color = _uniform_color_tensor(surface_color, device=device) + light = _light_tensor(light_direction, device=device) + + color_mode = 0 + color_values = torch.zeros((1, 4), device=device, dtype=torch.float32) + if vertex_colors is not None: + if vertex_colors.shape[0] != mesh_vertices.shape[0]: + raise ValueError("vertex_colors must have one color per mesh vertex") + color_values = _color_tensor( + vertex_colors, device=device, shape_name="vertex_colors", expected_rank=2 + ) + color_mode = 1 + elif face_colors is not None: + num_faces = mesh_indices_i32.numel() // 3 + if face_colors.shape[0] != num_faces: + raise ValueError("face_colors must have one color per mesh face") + color_values = _color_tensor( + face_colors, device=device, shape_name="face_colors", expected_rank=2 + ) + color_mode = 2 + + rgba, depth, normal = _empty_render_outputs( + image_height, image_width, device=device + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(mesh_vertices_fp32) + with wp.ScopedStream(wp_stream): + wp_vertices = wp.from_torch(mesh_vertices_fp32, dtype=wp.vec3) + wp_indices = wp.from_torch(mesh_indices_i32, dtype=wp.int32) + mesh = wp.Mesh(points=wp_vertices, indices=wp_indices) + wp.launch( + _mesh_raycast_kernel, + dim=image_height * image_width, + inputs=[ + mesh.id, + wp.from_torch(color_values, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + wp.from_torch(light, dtype=wp.vec3), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(max_distance), + float(ambient), + int(color_mode), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth, normal + + +@mesh_raycast_impl.register_fake +def _( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return _empty_render_outputs(image_height, image_width, device=mesh_vertices.device) + + +def isosurface_render_warp( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + device = field.device + return isosurface_render_impl( + field, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _as_vec3(bounds_min, name="bounds_min", device=device), + _as_vec3(bounds_max, name="bounds_max", device=device), + threshold, + step_size, + max_steps, + color_field, + _optional_tensor_arg(surface_color, device=device), + _optional_tensor_arg(light_direction, device=device), + ambient, + ) + + +def mesh_raycast_warp( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + device = mesh_vertices.device + return mesh_raycast_impl( + mesh_vertices, + mesh_indices, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + vertex_colors, + face_colors, + _optional_tensor_arg(surface_color, device=device), + _optional_tensor_arg(light_direction, device=device), + ambient, + max_distance, + ) + + +def scalar_field_to_rgba_warp( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + return scalar_field_to_rgba_impl( + field, + vmin, + vmax, + max_opacity, + opacity_threshold, + ) + + +def line_integral_convolution_warp( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + return line_integral_convolution_impl( + vector_field, + seed, + step_size, + num_steps, + contrast, + ) + + +def vector_field_to_rgba_warp( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + return vector_field_to_rgba_impl( + vector_field, + lic_field, + vmin, + vmax, + max_opacity, + lic_threshold, + ) + + +def volume_render_warp( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + device = rgba_volume.device + return volume_render_impl( + rgba_volume, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _as_vec3(bounds_min, name="bounds_min", device=device), + _as_vec3(bounds_max, name="bounds_max", device=device), + step_size, + max_steps, + opacity_threshold, + depth_threshold, + ) + + +def point_cloud_render_warp( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + device = points.device + return point_cloud_render_impl( + points, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + point_colors, + _optional_tensor_arg(point_color, device=device), + point_size, + near, + far, + ) + + +def wireframe_render_warp( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + device = edges.device + return wireframe_render_impl( + edges, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _optional_tensor_arg(line_color, device=device), + line_thickness, + near, + far, + ) + + +__all__ = [ + "isosurface_render_warp", + "line_integral_convolution_warp", + "mesh_raycast_warp", + "point_cloud_render_warp", + "scalar_field_to_rgba_warp", + "vector_field_to_rgba_warp", + "volume_render_warp", + "wireframe_render_warp", +] diff --git a/physicsnemo/nn/functional/rendering/isosurface_render.py b/physicsnemo/nn/functional/rendering/isosurface_render.py new file mode 100644 index 0000000000..bf8d2ed8d3 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/isosurface_render.py @@ -0,0 +1,151 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections.abc import Sequence + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import isosurface_render_warp + + +def _sphere_field( + grid_n: int, device: torch.device, radius: float = 0.5 +) -> torch.Tensor: + coords = torch.linspace(-1.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + return torch.sqrt(x * x + y * y + z * z) - radius + + +class IsosurfaceRender(FunctionSpec): + """Render a threshold isosurface from a scalar volume. + + This is a fused image-space renderer: one Warp thread computes one output + pixel, generates the camera ray, intersects the volume bounds, marches the + scalar field, samples optional RGB/RGBA color data, shades the hit, and + writes ``(rgba, depth, normal)`` buffers. + + Args: + field: Scalar volume with shape ``(nx, ny, nz)``. + image_height: Output image height. + image_width: Output image width. + eye: Camera position with shape ``(3,)``. + center: Camera look-at point with shape ``(3,)``. + up: Camera up direction with shape ``(3,)``. + fov_y_degrees: Vertical field of view in degrees. + bounds_min: Minimum world-space volume bound with shape ``(3,)``. + bounds_max: Maximum world-space volume bound with shape ``(3,)``. + threshold: Isosurface scalar threshold. Defaults to ``0.0``. + step_size: Ray-marching step size in world units. Defaults to ``0.01``. + max_steps: Maximum number of march steps per pixel. Defaults to ``512``. + color_field: Optional RGB/RGBA volume with shape ``(nx, ny, nz, 3|4)``. + ``uint8`` colors are normalized to ``[0, 1]``. + surface_color: Optional uniform RGB/RGBA color used when ``color_field`` + is omitted. + light_direction: Optional surface-to-light direction with shape ``(3,)``. + ambient: Ambient lighting coefficient in ``[0, 1]``. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + Tuple of ``(rgba, depth, normal)`` image tensors. Missed pixels have zero + alpha, infinite depth, and zero normal. + """ + + _BENCHMARK_CASES = ( + ("small-grid32-img32", 32, 32, 0.05, 96), + ("medium-grid48-img64", 48, 64, 0.035, 160), + ) + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor | Sequence[float], + center: torch.Tensor | Sequence[float], + up: torch.Tensor | Sequence[float], + fov_y_degrees: float, + bounds_min: torch.Tensor | Sequence[float], + bounds_max: torch.Tensor | Sequence[float], + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return isosurface_render_warp( + field=field, + image_height=image_height, + image_width=image_width, + eye=eye, + center=center, + up=up, + fov_y_degrees=fov_y_degrees, + bounds_min=bounds_min, + bounds_max=bounds_max, + threshold=threshold, + step_size=step_size, + max_steps=max_steps, + color_field=color_field, + surface_color=surface_color, + light_direction=light_direction, + ambient=ambient, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye = torch.tensor([0.0, 0.0, -2.5], device=device) + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + color = torch.tensor([0.2, 0.7, 1.0], device=device) + for label, grid_n, image_n, step_size, max_steps in cls._BENCHMARK_CASES: + field = _sphere_field(grid_n, device) + yield ( + label, + ( + field, + image_n, + image_n, + eye, + center, + up, + 45.0, + bounds_min, + bounds_max, + ), + { + "threshold": 0.0, + "step_size": step_size, + "max_steps": max_steps, + "surface_color": color, + }, + ) + + +isosurface_render = IsosurfaceRender.make_function("isosurface_render") + +__all__ = ["IsosurfaceRender", "isosurface_render"] diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution.py b/physicsnemo/nn/functional/rendering/line_integral_convolution.py new file mode 100644 index 0000000000..aa167c0c52 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution.py @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import line_integral_convolution_warp + + +class LineIntegralConvolution(FunctionSpec): + """Compute a 3D line integral convolution field. + + Args: + vector_field: Vector field with shape ``(nx, ny, nz, 3)``. + seed: Scalar seed/noise field with shape ``(nx, ny, nz)``. + step_size: Integration step size in grid-index units. + num_steps: Number of integration steps in each direction. + contrast: Contrast multiplier around ``0.5`` for the output LIC field. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + LIC scalar field with shape ``(nx, ny, nz)`` and values in ``[0, 1]``. + """ + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, + ) -> torch.Tensor: + return line_integral_convolution_warp( + vector_field=vector_field, + seed=seed, + step_size=step_size, + num_steps=num_steps, + contrast=contrast, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + coords = torch.linspace(-1.0, 1.0, 16, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.25 * torch.ones_like(z)], dim=-1) + seed = torch.rand(16, 16, 16, device=device) + yield ("vortex16", (vector_field, seed), {"num_steps": 8}) + + +line_integral_convolution = LineIntegralConvolution.make_function( + "line_integral_convolution" +) + +__all__ = ["LineIntegralConvolution", "line_integral_convolution"] diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast.py b/physicsnemo/nn/functional/rendering/mesh_raycast.py new file mode 100644 index 0000000000..99e2862282 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/mesh_raycast.py @@ -0,0 +1,128 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections.abc import Sequence + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import mesh_raycast_warp + + +class MeshRaycast(FunctionSpec): + """Render a triangle mesh with Warp ray queries. + + ``mesh_raycast`` builds a Warp ``Mesh`` acceleration structure from triangle + vertices and indices, casts one camera ray per output pixel, and returns + image-space ``(rgba, depth, normal)`` buffers. Mesh color may be uniform, + per vertex, or per face. ``uint8`` colors are accepted and normalized to + ``[0, 1]`` internally. + + Args: + mesh_vertices: Vertex positions with shape ``(num_vertices, 3)``. + mesh_indices: Triangle connectivity with shape ``(num_faces, 3)`` or a + flattened equivalent. + image_height: Output image height. + image_width: Output image width. + eye: Camera position with shape ``(3,)``. + center: Camera look-at point with shape ``(3,)``. + up: Camera up direction with shape ``(3,)``. + fov_y_degrees: Vertical field of view in degrees. + vertex_colors: Optional RGB/RGBA colors with one color per vertex. + face_colors: Optional RGB/RGBA colors with one color per triangle. + surface_color: Optional uniform RGB/RGBA color used when per-element + color arrays are omitted. + light_direction: Optional surface-to-light direction with shape ``(3,)``. + ambient: Ambient lighting coefficient in ``[0, 1]``. + max_distance: Maximum ray distance. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + Tuple of ``(rgba, depth, normal)`` image tensors. Missed pixels have zero + alpha, infinite depth, and zero normal. + """ + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor | Sequence[float], + center: torch.Tensor | Sequence[float], + up: torch.Tensor | Sequence[float], + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return mesh_raycast_warp( + mesh_vertices=mesh_vertices, + mesh_indices=mesh_indices, + image_height=image_height, + image_width=image_width, + eye=eye, + center=center, + up=up, + fov_y_degrees=fov_y_degrees, + vertex_colors=vertex_colors, + face_colors=face_colors, + surface_color=surface_color, + light_direction=light_direction, + ambient=ambient, + max_distance=max_distance, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + mesh_vertices = torch.tensor( + [ + [-0.9, -0.7, 0.0], + [0.9, -0.7, 0.0], + [0.0, 0.85, 0.0], + ], + device=device, + dtype=torch.float32, + ) + mesh_indices = torch.tensor([[0, 1, 2]], device=device, dtype=torch.int32) + vertex_colors = torch.tensor( + [[255, 64, 64], [64, 255, 64], [64, 128, 255]], + device=device, + dtype=torch.uint8, + ) + eye = torch.tensor([0.0, 0.0, -2.5], device=device) + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + yield ( + "triangle-img64", + (mesh_vertices, mesh_indices, 64, 64, eye, center, up, 45.0), + {"vertex_colors": vertex_colors}, + ) + + +mesh_raycast = MeshRaycast.make_function("mesh_raycast") + +__all__ = ["MeshRaycast", "mesh_raycast"] diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render.py b/physicsnemo/nn/functional/rendering/point_cloud_render.py new file mode 100644 index 0000000000..9f3f545027 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/point_cloud_render.py @@ -0,0 +1,111 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections.abc import Sequence + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import point_cloud_render_warp + + +class PointCloudRender(FunctionSpec): + """Rasterize a 3D point cloud into RGBA and depth images. + + The Warp implementation uses one pass to atomically select the nearest + point per covered pixel and a second pass to resolve the winning color and + depth. + + Args: + points: Point positions with shape ``(num_points, 3)``. + image_height: Output image height. + image_width: Output image width. + eye: Camera position with shape ``(3,)``. + center: Camera look-at point with shape ``(3,)``. + up: Camera up direction with shape ``(3,)``. + fov_y_degrees: Vertical field of view in degrees. + point_colors: Optional RGB/RGBA colors with one color per point. + point_color: Optional uniform RGB/RGBA point color. + point_size: Square point size in pixels. + near: Near clip distance. + far: Far clip distance. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + Tuple of ``(rgba, depth)`` image tensors. + """ + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor | Sequence[float], + center: torch.Tensor | Sequence[float], + up: torch.Tensor | Sequence[float], + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, + ) -> tuple[torch.Tensor, torch.Tensor]: + return point_cloud_render_warp( + points=points, + image_height=image_height, + image_width=image_width, + eye=eye, + center=center, + up=up, + fov_y_degrees=fov_y_degrees, + point_colors=point_colors, + point_color=point_color, + point_size=point_size, + near=near, + far=far, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + points = torch.tensor( + [[-0.4, 0.0, 0.0], [0.0, 0.2, 0.0], [0.4, 0.0, 0.0]], + device=device, + ) + colors = torch.tensor( + [[255, 32, 32], [32, 255, 32], [32, 128, 255]], + device=device, + dtype=torch.uint8, + ) + eye = torch.tensor([0.0, 0.0, -2.0], device=device) + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + yield ( + "points3-img32", + (points, 32, 32, eye, center, up, 45.0), + {"point_colors": colors}, + ) + + +point_cloud_render = PointCloudRender.make_function("point_cloud_render") + +__all__ = ["PointCloudRender", "point_cloud_render"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py new file mode 100644 index 0000000000..ceea1e4dd8 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py @@ -0,0 +1,90 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._torch_impl import scalar_field_to_rgba_torch +from ._warp_impl import scalar_field_to_rgba_warp + + +class ScalarFieldToRGBA(FunctionSpec): + """Map a scalar volume to an RGBA transfer-function volume. + + Args: + field: Scalar volume with shape ``(nx, ny, nz)``. + vmin: Scalar value mapped to the bottom of the transfer function. + vmax: Scalar value mapped to the top of the transfer function. + max_opacity: Maximum output alpha in ``[0, 1]``. + opacity_threshold: Normalized values below this threshold are transparent. + implementation: Explicit implementation name. ``"warp"`` is preferred; + ``"torch"`` is available as a portable fallback. + + Returns: + ``uint8`` RGBA volume with shape ``(nx, ny, nz, 4)``. + """ + + @FunctionSpec.register(name="warp", required_imports=("warp>=1.0.0",), rank=0) + def warp_forward( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, + ) -> torch.Tensor: + return scalar_field_to_rgba_warp( + field=field, + vmin=vmin, + vmax=vmax, + max_opacity=max_opacity, + opacity_threshold=opacity_threshold, + ) + + @FunctionSpec.register(name="torch", rank=1, baseline=True) + def torch_forward( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, + ) -> torch.Tensor: + return scalar_field_to_rgba_torch( + field=field, + vmin=vmin, + vmax=vmax, + max_opacity=max_opacity, + opacity_threshold=opacity_threshold, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + coords = torch.linspace(0.0, 1.0, 24, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + field = torch.sqrt((x - 0.5) ** 2 + (y - 0.5) ** 2 + (z - 0.5) ** 2) + yield ("grid24", (field, 0.0, 0.9), {"max_opacity": 0.75}) + + @classmethod + def compare_forward(cls, output: torch.Tensor, reference: torch.Tensor) -> None: + torch.testing.assert_close(output, reference, atol=1, rtol=0) + + +scalar_field_to_rgba = ScalarFieldToRGBA.make_function("scalar_field_to_rgba") + +__all__ = ["ScalarFieldToRGBA", "scalar_field_to_rgba"] diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py new file mode 100644 index 0000000000..6716807b5d --- /dev/null +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py @@ -0,0 +1,96 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._torch_impl import vector_field_to_rgba_torch +from ._warp_impl import vector_field_to_rgba_warp + + +class VectorFieldToRGBA(FunctionSpec): + """Map vector magnitude and LIC values to an RGBA volume. + + Args: + vector_field: Vector field with shape ``(nx, ny, nz, 3)``. + lic_field: LIC scalar field with shape ``(nx, ny, nz)``. + vmin: Vector magnitude mapped to the bottom of the transfer function. + vmax: Vector magnitude mapped to the top of the transfer function. + max_opacity: Maximum output alpha in ``[0, 1]``. + lic_threshold: LIC values below this threshold are transparent. + implementation: Explicit implementation name. ``"warp"`` is preferred; + ``"torch"`` is available as a portable fallback. + + Returns: + ``uint8`` RGBA volume with shape ``(nx, ny, nz, 4)``. + """ + + @FunctionSpec.register(name="warp", required_imports=("warp>=1.0.0",), rank=0) + def warp_forward( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, + ) -> torch.Tensor: + return vector_field_to_rgba_warp( + vector_field=vector_field, + lic_field=lic_field, + vmin=vmin, + vmax=vmax, + max_opacity=max_opacity, + lic_threshold=lic_threshold, + ) + + @FunctionSpec.register(name="torch", rank=1, baseline=True) + def torch_forward( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, + ) -> torch.Tensor: + return vector_field_to_rgba_torch( + vector_field=vector_field, + lic_field=lic_field, + vmin=vmin, + vmax=vmax, + max_opacity=max_opacity, + lic_threshold=lic_threshold, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + coords = torch.linspace(-1.0, 1.0, 16, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.25 * torch.ones_like(z)], dim=-1) + lic_field = torch.full((16, 16, 16), 0.8, device=device) + yield ("vortex16", (vector_field, lic_field, 0.0, 1.5), {}) + + @classmethod + def compare_forward(cls, output: torch.Tensor, reference: torch.Tensor) -> None: + torch.testing.assert_close(output, reference, atol=1, rtol=0) + + +vector_field_to_rgba = VectorFieldToRGBA.make_function("vector_field_to_rgba") + +__all__ = ["VectorFieldToRGBA", "vector_field_to_rgba"] diff --git a/physicsnemo/nn/functional/rendering/volume_render.py b/physicsnemo/nn/functional/rendering/volume_render.py new file mode 100644 index 0000000000..14a750b4c4 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/volume_render.py @@ -0,0 +1,109 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections.abc import Sequence + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import volume_render_warp + + +class VolumeRender(FunctionSpec): + """Render an RGBA volume with front-to-back ray marching. + + Args: + rgba_volume: RGBA volume with shape ``(nx, ny, nz, 4)``. ``uint8`` input + is normalized to ``[0, 1]`` internally. + image_height: Output image height. + image_width: Output image width. + eye: Camera position with shape ``(3,)``. + center: Camera look-at point with shape ``(3,)``. + up: Camera up direction with shape ``(3,)``. + fov_y_degrees: Vertical field of view in degrees. + bounds_min: Minimum world-space volume bound with shape ``(3,)``. + bounds_max: Maximum world-space volume bound with shape ``(3,)``. + step_size: Ray-marching step size in world units. + max_steps: Maximum number of march steps per pixel. + opacity_threshold: Stop marching after this accumulated opacity. + depth_threshold: Accumulated opacity needed before depth is recorded. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + Tuple of ``(rgba, depth)`` image tensors. + """ + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor | Sequence[float], + center: torch.Tensor | Sequence[float], + up: torch.Tensor | Sequence[float], + fov_y_degrees: float, + bounds_min: torch.Tensor | Sequence[float], + bounds_max: torch.Tensor | Sequence[float], + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, + ) -> tuple[torch.Tensor, torch.Tensor]: + return volume_render_warp( + rgba_volume=rgba_volume, + image_height=image_height, + image_width=image_width, + eye=eye, + center=center, + up=up, + fov_y_degrees=fov_y_degrees, + bounds_min=bounds_min, + bounds_max=bounds_max, + step_size=step_size, + max_steps=max_steps, + opacity_threshold=opacity_threshold, + depth_threshold=depth_threshold, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + rgba_volume = torch.zeros((24, 24, 24, 4), device=device, dtype=torch.uint8) + rgba_volume[..., 0] = 96 + rgba_volume[..., 1] = 192 + rgba_volume[..., 2] = 255 + rgba_volume[7:17, 7:17, 7:17, 3] = 96 + eye = torch.tensor([0.0, 0.0, -2.5], device=device) + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + yield ( + "cube24-img32", + (rgba_volume, 32, 32, eye, center, up, 45.0, bounds_min, bounds_max), + {"step_size": 0.08, "max_steps": 80}, + ) + + +volume_render = VolumeRender.make_function("volume_render") + +__all__ = ["VolumeRender", "volume_render"] diff --git a/physicsnemo/nn/functional/rendering/wireframe_render.py b/physicsnemo/nn/functional/rendering/wireframe_render.py new file mode 100644 index 0000000000..1007abd7f0 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/wireframe_render.py @@ -0,0 +1,107 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections.abc import Sequence + +import torch + +from physicsnemo.core.function_spec import FunctionSpec + +from ._warp_impl import wireframe_render_warp + + +class WireframeRender(FunctionSpec): + """Rasterize 3D line segments into RGBA and depth images. + + One Warp thread projects and rasterizes each segment. Depth writes are + resolved atomically and all segments use the same line color. + + Args: + edges: Line segments with shape ``(num_edges, 2, 3)`` or + ``(num_edges, 6)``. + image_height: Output image height. + image_width: Output image width. + eye: Camera position with shape ``(3,)``. + center: Camera look-at point with shape ``(3,)``. + up: Camera up direction with shape ``(3,)``. + fov_y_degrees: Vertical field of view in degrees. + line_color: Optional uniform RGB/RGBA line color. + line_thickness: Line thickness in pixels. + near: Near clip distance. + far: Far clip distance. + implementation: Explicit implementation name. Currently only ``"warp"`` + is registered. + + Returns: + Tuple of ``(rgba, depth)`` image tensors. + """ + + @FunctionSpec.register( + name="warp", required_imports=("warp>=1.0.0",), rank=0, baseline=True + ) + def warp_forward( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor | Sequence[float], + center: torch.Tensor | Sequence[float], + up: torch.Tensor | Sequence[float], + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, + ) -> tuple[torch.Tensor, torch.Tensor]: + return wireframe_render_warp( + edges=edges, + image_height=image_height, + image_width=image_width, + eye=eye, + center=center, + up=up, + fov_y_degrees=fov_y_degrees, + line_color=line_color, + line_thickness=line_thickness, + near=near, + far=far, + ) + + @classmethod + def make_inputs_forward(cls, device: torch.device | str = "cpu"): + device = torch.device(device) + edges = torch.tensor( + [ + [[-0.5, -0.5, 0.0], [0.5, -0.5, 0.0]], + [[0.5, -0.5, 0.0], [0.0, 0.5, 0.0]], + ], + device=device, + ) + eye = torch.tensor([0.0, 0.0, -2.0], device=device) + center = torch.tensor([0.0, 0.0, 0.0], device=device) + up = torch.tensor([0.0, 1.0, 0.0], device=device) + line_color = torch.tensor([1.0, 0.9, 0.2], device=device) + yield ( + "edges2-img32", + (edges, 32, 32, eye, center, up, 45.0), + {"line_color": line_color}, + ) + + +wireframe_render = WireframeRender.make_function("wireframe_render") + +__all__ = ["WireframeRender", "wireframe_render"] diff --git a/test/nn/functional/rendering/test_isosurface_render.py b/test/nn/functional/rendering/test_isosurface_render.py new file mode 100644 index 0000000000..35a1ff28e4 --- /dev/null +++ b/test/nn/functional/rendering/test_isosurface_render.py @@ -0,0 +1,149 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import isosurface_render +from physicsnemo.nn.functional.rendering import IsosurfaceRender +from test.conftest import requires_module + + +def _sphere_field(grid_n: int, device: str, radius: float = 0.5) -> torch.Tensor: + coords = torch.linspace(-1.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + return torch.sqrt(x * x + y * y + z * z) - radius + + +def _sphere_color_field(grid_n: int, device: str) -> torch.Tensor: + coords = torch.linspace(0.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + rgb = torch.stack([x, y, 0.35 + 0.65 * z], dim=-1) + return (rgb * 255).to(torch.uint8) + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.5], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_isosurface_render_returns_color_depth_and_normals(device: str): + field = _sphere_field(48, device) + color_field = _sphere_color_field(48, device) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye, center, up = _camera(device) + + rgba, depth, normal = isosurface_render( + field, + 33, + 33, + eye, + center, + up, + 35.0, + bounds_min, + bounds_max, + threshold=0.0, + step_size=0.05, + max_steps=128, + color_field=color_field, + light_direction=torch.tensor([0.0, 0.0, -1.0], device=device), + implementation="warp", + ) + + assert rgba.shape == (33, 33, 4) + assert depth.shape == (33, 33) + assert normal.shape == (33, 33, 3) + assert float(rgba[..., 3].sum()) > 0.0 + torch.testing.assert_close( + depth[16, 16], torch.tensor(2.0, device=device), atol=6.0e-2, rtol=0.0 + ) + assert float(normal[16, 16, 2]) < -0.9 + hit_luminance = rgba[..., :3].mean(dim=-1)[rgba[..., 3] > 0.0] + assert float(hit_luminance.max() - hit_luminance.min()) > 0.15 + assert "warp" in IsosurfaceRender.available_implementations() + + +@requires_module("warp") +def test_isosurface_render_make_inputs_forward(device: str): + label, args, kwargs = next(iter(IsosurfaceRender.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + rgba, depth, normal = IsosurfaceRender.dispatch( + *args, implementation="warp", **kwargs + ) + assert rgba.shape[-1] == 4 + assert normal.shape[-1] == 3 + assert depth.shape == rgba.shape[:2] + + +@requires_module("warp") +def test_isosurface_render_error_handling(device: str): + field = _sphere_field(16, device) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye, center, up = _camera(device) + + with pytest.raises(ValueError, match="color_field spatial shape"): + isosurface_render( + field, + 16, + 16, + eye, + center, + up, + 45.0, + bounds_min, + bounds_max, + color_field=torch.zeros(15, 16, 16, 3, device=device), + implementation="warp", + ) + + with pytest.raises(ValueError, match="step_size"): + isosurface_render( + field, + 16, + 16, + eye, + center, + up, + 45.0, + bounds_min, + bounds_max, + step_size=0.0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="eye and center"): + isosurface_render( + field, + 16, + 16, + eye, + eye, + up, + 45.0, + bounds_min, + bounds_max, + implementation="warp", + ) diff --git a/test/nn/functional/rendering/test_lic_and_raster_render.py b/test/nn/functional/rendering/test_lic_and_raster_render.py new file mode 100644 index 0000000000..ef4a804791 --- /dev/null +++ b/test/nn/functional/rendering/test_lic_and_raster_render.py @@ -0,0 +1,204 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import ( + line_integral_convolution, + point_cloud_render, + wireframe_render, +) +from physicsnemo.nn.functional.rendering import ( + LineIntegralConvolution, + PointCloudRender, + WireframeRender, +) +from test.conftest import requires_module + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.0], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_line_integral_convolution_returns_bounded_field(device: str): + coords = torch.linspace(-1.0, 1.0, 8, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.2 * torch.ones_like(z)], dim=-1) + seed = torch.linspace(0.0, 1.0, 8, device=device).reshape(8, 1, 1) + seed = seed.expand(8, 8, 8).contiguous() + + lic = line_integral_convolution( + vector_field, + seed, + step_size=0.4, + num_steps=4, + implementation="warp", + ) + + assert lic.shape == (8, 8, 8) + assert float(lic.min()) >= 0.0 + assert float(lic.max()) <= 1.0 + assert "warp" in LineIntegralConvolution.available_implementations() + + +@requires_module("warp") +def test_point_cloud_render_returns_color_and_depth(device: str): + points = torch.tensor( + [[0.0, 0.0, 0.0], [0.35, 0.2, 0.0]], device=device, dtype=torch.float32 + ) + colors = torch.tensor( + [[255, 0, 0], [0, 128, 255]], device=device, dtype=torch.uint8 + ) + eye, center, up = _camera(device) + + rgba, depth = point_cloud_render( + points, + 21, + 21, + eye, + center, + up, + 45.0, + point_colors=colors, + point_size=1, + implementation="warp", + ) + + assert rgba.shape == (21, 21, 4) + assert depth.shape == (21, 21) + assert float(rgba[..., 3].sum()) == pytest.approx(2.0) + assert torch.isfinite(depth).any() + assert "warp" in PointCloudRender.available_implementations() + + +@requires_module("warp") +def test_wireframe_render_returns_color_and_depth(device: str): + edges = torch.tensor( + [[[-0.5, -0.5, 0.0], [0.5, 0.5, 0.0]]], + device=device, + dtype=torch.float32, + ) + eye, center, up = _camera(device) + + rgba, depth = wireframe_render( + edges, + 21, + 21, + eye, + center, + up, + 45.0, + line_color=torch.tensor([0.8, 0.7, 0.2], device=device), + implementation="warp", + ) + + assert rgba.shape == (21, 21, 4) + assert depth.shape == (21, 21) + assert float(rgba[..., 3].sum()) > 0.0 + assert torch.isfinite(depth).any() + assert "warp" in WireframeRender.available_implementations() + + +@requires_module("warp") +def test_lic_and_raster_make_inputs_forward(device: str): + for spec in (LineIntegralConvolution, PointCloudRender, WireframeRender): + label, args, kwargs = next(iter(spec.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + output = spec.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_lic_and_raster_error_handling(device: str): + vector_field = torch.zeros(4, 4, 4, 3, device=device) + seed = torch.zeros(4, 4, 4, device=device) + with pytest.raises(ValueError, match="num_steps"): + line_integral_convolution( + vector_field, seed, num_steps=0, implementation="warp" + ) + + eye, center, up = _camera(device) + with pytest.raises(ValueError, match="point_size"): + point_cloud_render( + torch.zeros(1, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + point_size=0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="either point_colors or point_color"): + point_cloud_render( + torch.zeros(1, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + point_colors=torch.zeros(1, 3, device=device), + point_color=torch.ones(3, device=device), + implementation="warp", + ) + + with pytest.raises(ValueError, match="at least one point"): + point_cloud_render( + torch.zeros(0, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="line_thickness"): + wireframe_render( + torch.zeros(1, 2, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + line_thickness=0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="at least one edge"): + wireframe_render( + torch.zeros(0, 2, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + implementation="warp", + ) diff --git a/test/nn/functional/rendering/test_mesh_raycast.py b/test/nn/functional/rendering/test_mesh_raycast.py new file mode 100644 index 0000000000..879dbbc5fd --- /dev/null +++ b/test/nn/functional/rendering/test_mesh_raycast.py @@ -0,0 +1,176 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import mesh_raycast +from physicsnemo.nn.functional.rendering import MeshRaycast +from test.conftest import requires_module + + +def _triangle_mesh(device: str) -> tuple[torch.Tensor, torch.Tensor]: + return ( + torch.tensor( + [[-0.9, -0.8, 0.0], [0.9, -0.8, 0.0], [0.0, 0.9, 0.0]], + device=device, + dtype=torch.float32, + ), + torch.tensor([[0, 1, 2]], device=device, dtype=torch.int32), + ) + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.0], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_mesh_raycast_returns_color_depth_and_normals(device: str): + mesh_vertices, mesh_indices = _triangle_mesh(device) + vertex_colors = torch.tensor( + [[255, 0, 0], [0, 255, 0], [0, 0, 255]], + device=device, + dtype=torch.uint8, + ) + eye, center, up = _camera(device) + + rgba, depth, normal = mesh_raycast( + mesh_vertices, + mesh_indices, + 31, + 31, + eye, + center, + up, + 45.0, + vertex_colors=vertex_colors, + light_direction=torch.tensor([0.0, 0.0, -1.0], device=device), + implementation="warp", + ) + + assert rgba.shape == (31, 31, 4) + assert depth.shape == (31, 31) + assert normal.shape == (31, 31, 3) + assert float(rgba[15, 15, 3]) == 1.0 + torch.testing.assert_close( + depth[15, 15], torch.tensor(2.0, device=device), atol=1.0e-5, rtol=0.0 + ) + assert float(normal[15, 15, 2]) < -0.9 + assert float(rgba[15, 15, :3].max()) > 0.0 + assert torch.isinf(depth[0, 0]) + assert "warp" in MeshRaycast.available_implementations() + + +@requires_module("warp") +def test_mesh_raycast_face_colors_and_flat_indices(device: str): + mesh_vertices, mesh_indices = _triangle_mesh(device) + face_colors = torch.tensor([[64, 192, 255, 255]], device=device, dtype=torch.uint8) + eye, center, up = _camera(device) + + rgba_faces, depth_faces, normal_faces = mesh_raycast( + mesh_vertices, + mesh_indices, + 17, + 17, + eye, + center, + up, + 45.0, + face_colors=face_colors, + light_direction=torch.tensor([0.0, 0.0, -1.0], device=device), + implementation="warp", + ) + rgba_flat, depth_flat, normal_flat = mesh_raycast( + mesh_vertices, + mesh_indices.reshape(-1), + 17, + 17, + eye, + center, + up, + 45.0, + face_colors=face_colors, + light_direction=torch.tensor([0.0, 0.0, -1.0], device=device), + implementation="warp", + ) + + torch.testing.assert_close(rgba_faces, rgba_flat) + torch.testing.assert_close(depth_faces, depth_flat) + torch.testing.assert_close(normal_faces, normal_flat) + + +@requires_module("warp") +def test_mesh_raycast_make_inputs_forward(device: str): + label, args, kwargs = next(iter(MeshRaycast.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + rgba, depth, normal = MeshRaycast.dispatch(*args, implementation="warp", **kwargs) + assert rgba.shape[-1] == 4 + assert normal.shape[-1] == 3 + assert depth.shape == rgba.shape[:2] + + +@requires_module("warp") +def test_mesh_raycast_error_handling(device: str): + mesh_vertices, mesh_indices = _triangle_mesh(device) + eye, center, up = _camera(device) + + with pytest.raises(ValueError, match="either vertex_colors or face_colors"): + mesh_raycast( + mesh_vertices, + mesh_indices, + 16, + 16, + eye, + center, + up, + 45.0, + vertex_colors=torch.zeros(3, 3, device=device), + face_colors=torch.zeros(1, 3, device=device), + implementation="warp", + ) + + with pytest.raises(ValueError, match="complete triangle faces"): + mesh_raycast( + mesh_vertices, + torch.tensor([0, 1], device=device, dtype=torch.int32), + 16, + 16, + eye, + center, + up, + 45.0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="fov_y_degrees"): + mesh_raycast( + mesh_vertices, + mesh_indices, + 16, + 16, + eye, + center, + up, + 180.0, + implementation="warp", + ) diff --git a/test/nn/functional/rendering/test_transfer_and_volume_render.py b/test/nn/functional/rendering/test_transfer_and_volume_render.py new file mode 100644 index 0000000000..ada86c435c --- /dev/null +++ b/test/nn/functional/rendering/test_transfer_and_volume_render.py @@ -0,0 +1,225 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import ( + scalar_field_to_rgba, + vector_field_to_rgba, + volume_render, +) +from physicsnemo.nn.functional.rendering import ( + ScalarFieldToRGBA, + VectorFieldToRGBA, + VolumeRender, +) +from test.conftest import requires_module + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.5], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_scalar_field_to_rgba_maps_transfer_volume(device: str): + field = torch.linspace(0.0, 1.0, 16, device=device).reshape(4, 4, 1) + field = field.expand(4, 4, 4).contiguous() + + rgba_volume = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.5, + opacity_threshold=0.25, + implementation="warp", + ) + + assert rgba_volume.shape == (4, 4, 4, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].min()) == 0 + assert int(rgba_volume[..., 3].max()) <= 128 + assert int(rgba_volume[..., :3].max()) > 0 + assert "warp" in ScalarFieldToRGBA.available_implementations() + assert "torch" in ScalarFieldToRGBA.available_implementations() + + +@requires_module("warp") +def test_scalar_field_to_rgba_torch_matches_warp(device: str): + field = torch.linspace(-0.2, 1.2, 5 * 6 * 7, device=device).reshape(5, 6, 7) + + rgba_warp = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.7, + opacity_threshold=0.2, + implementation="warp", + ) + rgba_torch = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.7, + opacity_threshold=0.2, + implementation="torch", + ) + + torch.testing.assert_close(rgba_warp, rgba_torch, atol=1, rtol=0) + + +@requires_module("warp") +def test_vector_field_to_rgba_uses_magnitude_and_lic(device: str): + coords = torch.linspace(-1.0, 1.0, 6, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.25 * torch.ones_like(z)], dim=-1) + lic_field = torch.ones(6, 6, 6, device=device) + + rgba_volume = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.5, + max_opacity=0.75, + lic_threshold=0.25, + implementation="warp", + ) + + assert rgba_volume.shape == (6, 6, 6, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].max()) > 0 + assert "warp" in VectorFieldToRGBA.available_implementations() + assert "torch" in VectorFieldToRGBA.available_implementations() + + +@requires_module("warp") +def test_vector_field_to_rgba_torch_matches_warp(device: str): + coords = torch.linspace(-1.0, 1.0, 5, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.25 + z.square()], dim=-1) + lic_field = torch.linspace(0.0, 1.0, 5 * 5 * 5, device=device).reshape(5, 5, 5) + + rgba_warp = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.75, + max_opacity=0.65, + lic_threshold=0.3, + implementation="warp", + ) + rgba_torch = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.75, + max_opacity=0.65, + lic_threshold=0.3, + implementation="torch", + ) + + torch.testing.assert_close(rgba_warp, rgba_torch, atol=1, rtol=0) + + +@requires_module("warp") +def test_volume_render_returns_color_and_depth(device: str): + rgba_volume = torch.zeros(16, 16, 16, 4, device=device, dtype=torch.uint8) + rgba_volume[5:11, 5:11, 5:11, 0] = 255 + rgba_volume[5:11, 5:11, 5:11, 3] = 128 + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye, center, up = _camera(device) + + rgba, depth = volume_render( + rgba_volume, + 25, + 25, + eye, + center, + up, + 35.0, + bounds_min, + bounds_max, + step_size=0.08, + max_steps=80, + implementation="warp", + ) + + assert rgba.shape == (25, 25, 4) + assert depth.shape == (25, 25) + assert float(rgba[..., 3].sum()) > 0.0 + assert float(rgba[..., 0].max()) > 0.8 + assert torch.isfinite(depth).any() + assert torch.isinf(depth[0, 0]) + assert "warp" in VolumeRender.available_implementations() + + +@requires_module("warp") +def test_volume_render_accepts_sequence_camera_inputs(device: str): + rgba_volume = torch.zeros(8, 8, 8, 4, device=device, dtype=torch.uint8) + rgba_volume[2:6, 2:6, 2:6, 1] = 255 + rgba_volume[2:6, 2:6, 2:6, 3] = 128 + + rgba, depth = volume_render( + rgba_volume, + 11, + 11, + [0.0, 0.0, -2.5], + [0.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + 35.0, + [-1.0, -1.0, -1.0], + [1.0, 1.0, 1.0], + step_size=0.12, + max_steps=48, + implementation="warp", + ) + + assert rgba.shape == (11, 11, 4) + assert depth.shape == (11, 11) + assert float(rgba[..., 3].sum()) > 0.0 + + +@requires_module("warp") +def test_transfer_and_volume_make_inputs_forward(device: str): + for spec in (ScalarFieldToRGBA, VectorFieldToRGBA, VolumeRender): + label, args, kwargs = next(iter(spec.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + output = spec.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_transfer_error_handling(device: str): + field = torch.zeros(4, 4, 4, device=device) + with pytest.raises(ValueError, match="vmax"): + scalar_field_to_rgba(field, 1.0, 1.0, implementation="warp") + + vector_field = torch.zeros(4, 4, 4, 2, device=device) + with pytest.raises(ValueError, match="vector_field"): + vector_field_to_rgba( + vector_field, + torch.zeros(4, 4, 4, device=device), + 0.0, + 1.0, + implementation="warp", + ) From df05f9a892d8b739eaf1700a5a337723fbd07411 Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Wed, 6 May 2026 11:10:02 -0700 Subject: [PATCH 2/6] Move rendering examples under functional examples --- docs/api/nn/functionals/rendering.rst | 2 ++ examples/README.md | 6 ++++++ examples/functional/README.md | 8 ++++++++ examples/functional/rendering/README.md | 10 ++++++++++ .../rendering/line_integral_convolution/README.md | 0 .../rendering/line_integral_convolution/render_lic.py | 0 .../line_integral_convolution/render_lic_volume.py | 0 .../{ => functional}/rendering/mesh_raycast/README.md | 0 .../rendering/mesh_raycast/render_mesh.py | 0 .../rendering/sphere_isosurface/README.md | 0 .../rendering/sphere_isosurface/render_sphere.py | 0 11 files changed, 26 insertions(+) create mode 100644 examples/functional/README.md create mode 100644 examples/functional/rendering/README.md rename examples/{ => functional}/rendering/line_integral_convolution/README.md (100%) rename examples/{ => functional}/rendering/line_integral_convolution/render_lic.py (100%) rename examples/{ => functional}/rendering/line_integral_convolution/render_lic_volume.py (100%) rename examples/{ => functional}/rendering/mesh_raycast/README.md (100%) rename examples/{ => functional}/rendering/mesh_raycast/render_mesh.py (100%) rename examples/{ => functional}/rendering/sphere_isosurface/README.md (100%) rename examples/{ => functional}/rendering/sphere_isosurface/render_sphere.py (100%) diff --git a/docs/api/nn/functionals/rendering.rst b/docs/api/nn/functionals/rendering.rst index 6488bb3ce5..0da1d17b9e 100644 --- a/docs/api/nn/functionals/rendering.rst +++ b/docs/api/nn/functionals/rendering.rst @@ -6,6 +6,8 @@ buffers. They follow the same stateless functional pattern as the rest of ``physicsnemo.nn.functional``: tensors in, tensors out, with implementation dispatch handled through ``FunctionSpec``. +Runnable examples are available under ``examples/functional/rendering``. + Isosurface Render ----------------- diff --git a/examples/README.md b/examples/README.md index a48b9adff1..516984282f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -111,6 +111,12 @@ The several examples inside PhysicsNeMo can be classified based on their domains 1. [Classify the famous two-moons data distribution using Active learning](./active_learning/moons/) +### Functional + +|Use case|Functionals covered| +| --- | --- | +|[Rendering functionals](./functional/rendering/)|Isosurface rendering, mesh raycasting, line integral convolution, volume rendering, and raster overlays| + ## Additional examples Physics-informed training examples (PINNs, PINO, physics-informed fine-tuning) diff --git a/examples/functional/README.md b/examples/functional/README.md new file mode 100644 index 0000000000..f81d97a3b8 --- /dev/null +++ b/examples/functional/README.md @@ -0,0 +1,8 @@ +# Functional Examples + +These examples demonstrate standalone tensor functionals from +`physicsnemo.nn.functional`. + +|Use case|Functionals covered| +| --- | --- | +|[Rendering](./rendering/)|Isosurface rendering, mesh raycasting, line integral convolution, volume rendering, and raster overlays| diff --git a/examples/functional/rendering/README.md b/examples/functional/rendering/README.md new file mode 100644 index 0000000000..948983b557 --- /dev/null +++ b/examples/functional/rendering/README.md @@ -0,0 +1,10 @@ +# Rendering Functionals + +These examples demonstrate the rendering functionals in +`physicsnemo.nn.functional`. + +|Example|What it demonstrates| +| --- | --- | +|[Sphere isosurface](./sphere_isosurface/)|Rendering a moving scalar-field isosurface with RGB volume colors| +|[Mesh raycast](./mesh_raycast/)|Raycasting a rotating colored triangle mesh| +|[Line integral convolution](./line_integral_convolution/)|2D LIC slice rendering and 3D LIC volume rendering with a wireframe overlay| diff --git a/examples/rendering/line_integral_convolution/README.md b/examples/functional/rendering/line_integral_convolution/README.md similarity index 100% rename from examples/rendering/line_integral_convolution/README.md rename to examples/functional/rendering/line_integral_convolution/README.md diff --git a/examples/rendering/line_integral_convolution/render_lic.py b/examples/functional/rendering/line_integral_convolution/render_lic.py similarity index 100% rename from examples/rendering/line_integral_convolution/render_lic.py rename to examples/functional/rendering/line_integral_convolution/render_lic.py diff --git a/examples/rendering/line_integral_convolution/render_lic_volume.py b/examples/functional/rendering/line_integral_convolution/render_lic_volume.py similarity index 100% rename from examples/rendering/line_integral_convolution/render_lic_volume.py rename to examples/functional/rendering/line_integral_convolution/render_lic_volume.py diff --git a/examples/rendering/mesh_raycast/README.md b/examples/functional/rendering/mesh_raycast/README.md similarity index 100% rename from examples/rendering/mesh_raycast/README.md rename to examples/functional/rendering/mesh_raycast/README.md diff --git a/examples/rendering/mesh_raycast/render_mesh.py b/examples/functional/rendering/mesh_raycast/render_mesh.py similarity index 100% rename from examples/rendering/mesh_raycast/render_mesh.py rename to examples/functional/rendering/mesh_raycast/render_mesh.py diff --git a/examples/rendering/sphere_isosurface/README.md b/examples/functional/rendering/sphere_isosurface/README.md similarity index 100% rename from examples/rendering/sphere_isosurface/README.md rename to examples/functional/rendering/sphere_isosurface/README.md diff --git a/examples/rendering/sphere_isosurface/render_sphere.py b/examples/functional/rendering/sphere_isosurface/render_sphere.py similarity index 100% rename from examples/rendering/sphere_isosurface/render_sphere.py rename to examples/functional/rendering/sphere_isosurface/render_sphere.py From 5094323fd94939e270ef6e3eea2cc77a7f5c658a Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Wed, 6 May 2026 11:50:15 -0700 Subject: [PATCH 3/6] Document rendering functional helpers --- .../line_integral_convolution/render_lic.py | 5 +++++ .../render_lic_volume.py | 8 ++++++++ .../rendering/mesh_raycast/render_mesh.py | 3 +++ .../rendering/sphere_isosurface/render_sphere.py | 3 +++ .../nn/functional/rendering/_warp_impl.py | 16 ++++++++++++++++ .../nn/functional/rendering/isosurface_render.py | 2 ++ .../rendering/line_integral_convolution.py | 2 ++ .../nn/functional/rendering/mesh_raycast.py | 2 ++ .../functional/rendering/point_cloud_render.py | 2 ++ .../functional/rendering/scalar_field_to_rgba.py | 4 ++++ .../functional/rendering/vector_field_to_rgba.py | 4 ++++ .../nn/functional/rendering/volume_render.py | 2 ++ .../nn/functional/rendering/wireframe_render.py | 2 ++ 13 files changed, 55 insertions(+) diff --git a/examples/functional/rendering/line_integral_convolution/render_lic.py b/examples/functional/rendering/line_integral_convolution/render_lic.py index b8cbad293f..c164b6b0a5 100644 --- a/examples/functional/rendering/line_integral_convolution/render_lic.py +++ b/examples/functional/rendering/line_integral_convolution/render_lic.py @@ -29,6 +29,7 @@ def dipole_field( grid_size: int, depth_size: int, phase: float, device: torch.device ) -> torch.Tensor: + """Build a thin 3D dipole vector field for LIC slice rendering.""" coords = torch.linspace(-2.0, 2.0, grid_size, device=device) z_coords = torch.linspace(-0.05, 0.05, depth_size, device=device) x, y, z = torch.meshgrid(coords, coords, z_coords, indexing="ij") @@ -59,10 +60,12 @@ def dipole_field( def seed_pattern(grid_size: int, device: torch.device) -> torch.Tensor: + """Create the fixed random seed texture advected by LIC.""" return torch.rand(grid_size, grid_size, 1, device=device) def jet_colormap(value: np.ndarray) -> np.ndarray: + """Map normalized scalar values to RGB jet colors.""" red = np.clip(np.minimum(4.0 * value - 1.5, -4.0 * value + 4.5), 0.0, 1.0) green = np.clip(np.minimum(4.0 * value - 0.5, -4.0 * value + 3.5), 0.0, 1.0) blue = np.clip(np.minimum(4.0 * value + 0.5, -4.0 * value + 2.5), 0.0, 1.0) @@ -83,6 +86,7 @@ def _draw_marker( def lic_to_rgb( lic: torch.Tensor, vector_field: torch.Tensor, phase: float ) -> np.ndarray: + """Convert a LIC slice and vector magnitude to an RGB image.""" center = lic.shape[2] // 2 lic_image = lic[:, :, center].detach().cpu().numpy() low = float(np.percentile(lic_image, 1.0)) @@ -110,6 +114,7 @@ def lic_to_rgb( def main() -> None: + """Generate a 2D LIC animation from a rotating dipole field.""" parser = argparse.ArgumentParser() parser.add_argument("--frames", type=int, default=16) parser.add_argument("--grid-size", type=int, default=192) diff --git a/examples/functional/rendering/line_integral_convolution/render_lic_volume.py b/examples/functional/rendering/line_integral_convolution/render_lic_volume.py index 60972a33c8..005e012e5d 100644 --- a/examples/functional/rendering/line_integral_convolution/render_lic_volume.py +++ b/examples/functional/rendering/line_integral_convolution/render_lic_volume.py @@ -31,6 +31,7 @@ def dipole_field(grid_size: int, device: torch.device) -> torch.Tensor: + """Build a steady 3D dipole vector field for volume LIC.""" coords = torch.linspace(-1.0, 1.0, grid_size, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") positive = torch.tensor([0.42, 0.0, 0.0], device=device) @@ -45,6 +46,7 @@ def dipole_field(grid_size: int, device: torch.device) -> torch.Tensor: def cube_edges(device: torch.device) -> torch.Tensor: + """Return the line segments for a unit context cube.""" vertices = torch.tensor( [ [-1.05, -1.05, -1.05], @@ -79,6 +81,7 @@ def cube_edges(device: torch.device) -> torch.Tensor: def rotate_edges(edges: torch.Tensor, phase: float) -> torch.Tensor: + """Rotate context-cube edges around two axes.""" angle = torch.tensor(phase, device=edges.device, dtype=edges.dtype) c = torch.cos(angle) s = torch.sin(angle) @@ -105,6 +108,7 @@ def rotate_edges(edges: torch.Tensor, phase: float) -> torch.Tensor: def jet_colormap(value: torch.Tensor) -> torch.Tensor: + """Map normalized tensor values to RGB jet colors.""" red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) @@ -116,6 +120,7 @@ def make_lic_rgba_volume( lic: torch.Tensor, max_opacity: float, ) -> torch.Tensor: + """Convert vector magnitude and LIC values into a uint8 RGBA volume.""" magnitude = torch.log1p(vector_field.norm(dim=-1)) magnitude = (magnitude / torch.quantile(magnitude.reshape(-1), 0.985)).clamp( 0.0, 1.0 @@ -135,18 +140,21 @@ def make_lic_rgba_volume( def composite_rgba(rgba: torch.Tensor, background: np.ndarray) -> np.ndarray: + """Composite a rendered RGBA image over a background color.""" image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() alpha = image[..., 3:4] return image[..., :3] * alpha + background * (1.0 - alpha) def overlay_wire(volume_rgb: np.ndarray, wire_rgba: torch.Tensor) -> np.ndarray: + """Alpha composite a wireframe render over a volume RGB image.""" wire = wire_rgba.detach().clamp(0.0, 1.0).cpu().numpy() alpha = wire[..., 3:4] return wire[..., :3] * alpha + volume_rgb * (1.0 - alpha) def main() -> None: + """Generate a 3D LIC volume-render animation with a rotating cube.""" parser = argparse.ArgumentParser() parser.add_argument("--frames", type=int, default=16) parser.add_argument("--grid-size", type=int, default=56) diff --git a/examples/functional/rendering/mesh_raycast/render_mesh.py b/examples/functional/rendering/mesh_raycast/render_mesh.py index 49c3bb9b2c..4e72860bc9 100644 --- a/examples/functional/rendering/mesh_raycast/render_mesh.py +++ b/examples/functional/rendering/mesh_raycast/render_mesh.py @@ -27,6 +27,7 @@ def cube_mesh(device: torch.device) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Create a colored cube mesh for the raycast example.""" vertices = torch.tensor( [ [-0.6, -0.6, -0.6], @@ -76,6 +77,7 @@ def cube_mesh(device: torch.device) -> tuple[torch.Tensor, torch.Tensor, torch.T def rotate_y(vertices: torch.Tensor, angle: torch.Tensor) -> torch.Tensor: + """Rotate vertices about the vertical axis.""" c = torch.cos(angle) s = torch.sin(angle) rotation = torch.stack( @@ -89,6 +91,7 @@ def rotate_y(vertices: torch.Tensor, angle: torch.Tensor) -> torch.Tensor: def main() -> None: + """Generate an animation with the ``mesh_raycast`` functional.""" parser = argparse.ArgumentParser() parser.add_argument("--frames", type=int, default=24) parser.add_argument("--image-size", type=int, default=256) diff --git a/examples/functional/rendering/sphere_isosurface/render_sphere.py b/examples/functional/rendering/sphere_isosurface/render_sphere.py index 58157ab638..b453d5788a 100644 --- a/examples/functional/rendering/sphere_isosurface/render_sphere.py +++ b/examples/functional/rendering/sphere_isosurface/render_sphere.py @@ -32,6 +32,7 @@ def sphere_field( radius: float, device: torch.device, ) -> torch.Tensor: + """Create a signed-distance scalar field for a sphere.""" coords = torch.linspace(-1.0, 1.0, grid_n, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") dx = x - center[0] @@ -41,6 +42,7 @@ def sphere_field( def color_field(grid_n: int, device: torch.device) -> torch.Tensor: + """Create a uint8 RGB volume used to color the sphere.""" coords = torch.linspace(0.0, 1.0, grid_n, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") rgb = torch.stack([0.15 + 0.85 * x, 0.25 + 0.55 * y, 0.95 - 0.45 * z], dim=-1) @@ -48,6 +50,7 @@ def color_field(grid_n: int, device: torch.device) -> torch.Tensor: def main() -> None: + """Generate an animation with the ``isosurface_render`` functional.""" parser = argparse.ArgumentParser() parser.add_argument("--frames", type=int, default=24) parser.add_argument("--grid-size", type=int, default=64) diff --git a/physicsnemo/nn/functional/rendering/_warp_impl.py b/physicsnemo/nn/functional/rendering/_warp_impl.py index f86cf35ac2..2476544d08 100644 --- a/physicsnemo/nn/functional/rendering/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/_warp_impl.py @@ -1174,6 +1174,7 @@ def scalar_field_to_rgba_impl( max_opacity: float = 0.8, opacity_threshold: float = 0.1, ) -> torch.Tensor: + """Launch the Warp scalar-to-RGBA transfer custom op.""" if field.ndim != 3: raise ValueError( f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" @@ -1225,6 +1226,7 @@ def line_integral_convolution_impl( num_steps: int = 20, contrast: float = 1.4, ) -> torch.Tensor: + """Launch the Warp line integral convolution custom op.""" _validate_vector_field(vector_field) if seed.shape != vector_field.shape[:3]: raise ValueError( @@ -1283,6 +1285,7 @@ def vector_field_to_rgba_impl( max_opacity: float = 0.8, lic_threshold: float = 0.5, ) -> torch.Tensor: + """Launch the Warp vector LIC-to-RGBA transfer custom op.""" _validate_vector_field(vector_field) if lic_field.shape != vector_field.shape[:3]: raise ValueError( @@ -1352,6 +1355,7 @@ def volume_render_impl( opacity_threshold: float = 0.95, depth_threshold: float = 0.1, ) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp RGBA volume rendering custom op.""" _validate_image_shape(image_height, image_width) _validate_fov(fov_y_degrees) if step_size <= 0.0: @@ -1432,6 +1436,7 @@ def point_cloud_render_impl( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp point cloud rendering custom op.""" if points.ndim != 2 or points.shape[-1] != 3: raise ValueError(f"points must have shape (num_points, 3), got {points.shape}") if points.shape[0] == 0: @@ -1545,6 +1550,7 @@ def wireframe_render_impl( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp wireframe rendering custom op.""" if edges.ndim == 3: if edges.shape[1:] != (2, 3): raise ValueError( @@ -1630,6 +1636,7 @@ def isosurface_render_impl( light_direction: torch.Tensor | None = None, ambient: float = 0.2, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Launch the Warp isosurface rendering custom op.""" if field.ndim != 3: raise ValueError( f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" @@ -1738,6 +1745,7 @@ def mesh_raycast_impl( ambient: float = 0.2, max_distance: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Launch the Warp mesh raycast rendering custom op.""" if mesh_vertices.ndim != 2 or mesh_vertices.shape[-1] != 3: raise ValueError( "mesh_vertices must have shape (num_vertices, 3), got " @@ -1861,6 +1869,7 @@ def isosurface_render_warp( light_direction: torch.Tensor | None = None, ambient: float = 0.2, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and render an isosurface with Warp.""" device = field.device return isosurface_render_impl( field, @@ -1898,6 +1907,7 @@ def mesh_raycast_warp( ambient: float = 0.2, max_distance: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and raycast a mesh with Warp.""" device = mesh_vertices.device return mesh_raycast_impl( mesh_vertices, @@ -1924,6 +1934,7 @@ def scalar_field_to_rgba_warp( max_opacity: float = 0.8, opacity_threshold: float = 0.1, ) -> torch.Tensor: + """Map a scalar field to an RGBA volume with Warp.""" return scalar_field_to_rgba_impl( field, vmin, @@ -1940,6 +1951,7 @@ def line_integral_convolution_warp( num_steps: int = 20, contrast: float = 1.4, ) -> torch.Tensor: + """Compute line integral convolution with Warp.""" return line_integral_convolution_impl( vector_field, seed, @@ -1957,6 +1969,7 @@ def vector_field_to_rgba_warp( max_opacity: float = 0.8, lic_threshold: float = 0.5, ) -> torch.Tensor: + """Map vector magnitude and LIC values to RGBA with Warp.""" return vector_field_to_rgba_impl( vector_field, lic_field, @@ -1982,6 +1995,7 @@ def volume_render_warp( opacity_threshold: float = 0.95, depth_threshold: float = 0.1, ) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and render an RGBA volume with Warp.""" device = rgba_volume.device return volume_render_impl( rgba_volume, @@ -2014,6 +2028,7 @@ def point_cloud_render_warp( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and rasterize a point cloud with Warp.""" device = points.device return point_cloud_render_impl( points, @@ -2044,6 +2059,7 @@ def wireframe_render_warp( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and rasterize wireframe segments with Warp.""" device = edges.device return wireframe_render_impl( edges, diff --git a/physicsnemo/nn/functional/rendering/isosurface_render.py b/physicsnemo/nn/functional/rendering/isosurface_render.py index bf8d2ed8d3..d1f1f1022e 100644 --- a/physicsnemo/nn/functional/rendering/isosurface_render.py +++ b/physicsnemo/nn/functional/rendering/isosurface_render.py @@ -94,6 +94,7 @@ def warp_forward( light_direction: torch.Tensor | None = None, ambient: float = 0.2, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Run the Warp implementation for ``isosurface_render``.""" return isosurface_render_warp( field=field, image_height=image_height, @@ -115,6 +116,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for the isosurface renderer.""" device = torch.device(device) bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution.py b/physicsnemo/nn/functional/rendering/line_integral_convolution.py index aa167c0c52..dd85cb7caa 100644 --- a/physicsnemo/nn/functional/rendering/line_integral_convolution.py +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution.py @@ -49,6 +49,7 @@ def warp_forward( num_steps: int = 20, contrast: float = 1.4, ) -> torch.Tensor: + """Run the Warp implementation for ``line_integral_convolution``.""" return line_integral_convolution_warp( vector_field=vector_field, seed=seed, @@ -59,6 +60,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for line integral convolution.""" device = torch.device(device) coords = torch.linspace(-1.0, 1.0, 16, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast.py b/physicsnemo/nn/functional/rendering/mesh_raycast.py index 99e2862282..673ed17638 100644 --- a/physicsnemo/nn/functional/rendering/mesh_raycast.py +++ b/physicsnemo/nn/functional/rendering/mesh_raycast.py @@ -78,6 +78,7 @@ def warp_forward( ambient: float = 0.2, max_distance: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Run the Warp implementation for ``mesh_raycast``.""" return mesh_raycast_warp( mesh_vertices=mesh_vertices, mesh_indices=mesh_indices, @@ -97,6 +98,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for mesh raycasting.""" device = torch.device(device) mesh_vertices = torch.tensor( [ diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render.py b/physicsnemo/nn/functional/rendering/point_cloud_render.py index 9f3f545027..3195ac43ac 100644 --- a/physicsnemo/nn/functional/rendering/point_cloud_render.py +++ b/physicsnemo/nn/functional/rendering/point_cloud_render.py @@ -69,6 +69,7 @@ def warp_forward( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Run the Warp implementation for ``point_cloud_render``.""" return point_cloud_render_warp( points=points, image_height=image_height, @@ -86,6 +87,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for point-cloud rendering.""" device = torch.device(device) points = torch.tensor( [[-0.4, 0.0, 0.0], [0.0, 0.2, 0.0], [0.4, 0.0, 0.0]], diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py index ceea1e4dd8..2b72d8367a 100644 --- a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py @@ -48,6 +48,7 @@ def warp_forward( max_opacity: float = 0.8, opacity_threshold: float = 0.1, ) -> torch.Tensor: + """Run the Warp implementation for ``scalar_field_to_rgba``.""" return scalar_field_to_rgba_warp( field=field, vmin=vmin, @@ -64,6 +65,7 @@ def torch_forward( max_opacity: float = 0.8, opacity_threshold: float = 0.1, ) -> torch.Tensor: + """Run the PyTorch implementation for ``scalar_field_to_rgba``.""" return scalar_field_to_rgba_torch( field=field, vmin=vmin, @@ -74,6 +76,7 @@ def torch_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for scalar RGBA transfer.""" device = torch.device(device) coords = torch.linspace(0.0, 1.0, 24, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") @@ -82,6 +85,7 @@ def make_inputs_forward(cls, device: torch.device | str = "cpu"): @classmethod def compare_forward(cls, output: torch.Tensor, reference: torch.Tensor) -> None: + """Compare Warp and PyTorch transfer outputs.""" torch.testing.assert_close(output, reference, atol=1, rtol=0) diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py index 6716807b5d..12952190d6 100644 --- a/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py @@ -50,6 +50,7 @@ def warp_forward( max_opacity: float = 0.8, lic_threshold: float = 0.5, ) -> torch.Tensor: + """Run the Warp implementation for ``vector_field_to_rgba``.""" return vector_field_to_rgba_warp( vector_field=vector_field, lic_field=lic_field, @@ -68,6 +69,7 @@ def torch_forward( max_opacity: float = 0.8, lic_threshold: float = 0.5, ) -> torch.Tensor: + """Run the PyTorch implementation for ``vector_field_to_rgba``.""" return vector_field_to_rgba_torch( vector_field=vector_field, lic_field=lic_field, @@ -79,6 +81,7 @@ def torch_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for vector RGBA transfer.""" device = torch.device(device) coords = torch.linspace(-1.0, 1.0, 16, device=device) x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") @@ -88,6 +91,7 @@ def make_inputs_forward(cls, device: torch.device | str = "cpu"): @classmethod def compare_forward(cls, output: torch.Tensor, reference: torch.Tensor) -> None: + """Compare Warp and PyTorch transfer outputs.""" torch.testing.assert_close(output, reference, atol=1, rtol=0) diff --git a/physicsnemo/nn/functional/rendering/volume_render.py b/physicsnemo/nn/functional/rendering/volume_render.py index 14a750b4c4..13eaf78b5d 100644 --- a/physicsnemo/nn/functional/rendering/volume_render.py +++ b/physicsnemo/nn/functional/rendering/volume_render.py @@ -68,6 +68,7 @@ def warp_forward( opacity_threshold: float = 0.95, depth_threshold: float = 0.1, ) -> tuple[torch.Tensor, torch.Tensor]: + """Run the Warp implementation for ``volume_render``.""" return volume_render_warp( rgba_volume=rgba_volume, image_height=image_height, @@ -86,6 +87,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for volume rendering.""" device = torch.device(device) rgba_volume = torch.zeros((24, 24, 24, 4), device=device, dtype=torch.uint8) rgba_volume[..., 0] = 96 diff --git a/physicsnemo/nn/functional/rendering/wireframe_render.py b/physicsnemo/nn/functional/rendering/wireframe_render.py index 1007abd7f0..812e3f511b 100644 --- a/physicsnemo/nn/functional/rendering/wireframe_render.py +++ b/physicsnemo/nn/functional/rendering/wireframe_render.py @@ -67,6 +67,7 @@ def warp_forward( near: float = 0.01, far: float = 1.0e8, ) -> tuple[torch.Tensor, torch.Tensor]: + """Run the Warp implementation for ``wireframe_render``.""" return wireframe_render_warp( edges=edges, image_height=image_height, @@ -83,6 +84,7 @@ def warp_forward( @classmethod def make_inputs_forward(cls, device: torch.device | str = "cpu"): + """Yield benchmark inputs for wireframe rendering.""" device = torch.device(device) edges = torch.tensor( [ From 16ee6afa783de9c47eb7664a6c188ed5db2ab36c Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Thu, 7 May 2026 01:09:52 -0700 Subject: [PATCH 4/6] Align isosurface error test with CUDA validation --- .../rendering/test_isosurface_render.py | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/test/nn/functional/rendering/test_isosurface_render.py b/test/nn/functional/rendering/test_isosurface_render.py index 35a1ff28e4..36c93e1414 100644 --- a/test/nn/functional/rendering/test_isosurface_render.py +++ b/test/nn/functional/rendering/test_isosurface_render.py @@ -134,16 +134,17 @@ def test_isosurface_render_error_handling(device: str): implementation="warp", ) - with pytest.raises(ValueError, match="eye and center"): - isosurface_render( - field, - 16, - 16, - eye, - eye, - up, - 45.0, - bounds_min, - bounds_max, - implementation="warp", - ) + if torch.device(device).type == "cpu": + with pytest.raises(ValueError, match="eye and center"): + isosurface_render( + field, + 16, + 16, + eye, + eye, + up, + 45.0, + bounds_min, + bounds_max, + implementation="warp", + ) From d420dea7c1bbaeb0d8d564f5328b3156d3e0f89e Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Thu, 7 May 2026 15:34:30 -0700 Subject: [PATCH 5/6] Align rendering functionals with functional layout --- docs/api/nn/functionals/rendering.rst | 2 - examples/README.md | 6 - examples/functional/README.md | 8 - examples/functional/rendering/README.md | 10 - .../line_integral_convolution/README.md | 21 -- .../line_integral_convolution/render_lic.py | 171 ------------ .../render_lic_volume.py | 256 ------------------ .../rendering/mesh_raycast/README.md | 12 - .../rendering/mesh_raycast/render_mesh.py | 157 ----------- .../rendering/sphere_isosurface/README.md | 13 - .../sphere_isosurface/render_sphere.py | 132 --------- .../{_torch_impl.py => _torch_ops.py} | 0 .../rendering/{_warp_impl.py => _warp_ops.py} | 0 .../rendering/isosurface_render/__init__.py | 7 + .../rendering/isosurface_render/_warp_impl.py | 7 + .../isosurface_render.py | 0 .../line_integral_convolution/__init__.py | 10 + .../line_integral_convolution/_warp_impl.py | 7 + .../line_integral_convolution.py | 0 .../rendering/mesh_raycast/__init__.py | 7 + .../rendering/mesh_raycast/_warp_impl.py | 7 + .../{ => mesh_raycast}/mesh_raycast.py | 0 .../rendering/point_cloud_render/__init__.py | 7 + .../point_cloud_render/_warp_impl.py | 7 + .../point_cloud_render.py | 0 .../scalar_field_to_rgba/__init__.py | 7 + .../scalar_field_to_rgba/_torch_impl.py | 7 + .../scalar_field_to_rgba/_warp_impl.py | 7 + .../scalar_field_to_rgba.py | 0 .../vector_field_to_rgba/__init__.py | 7 + .../vector_field_to_rgba/_torch_impl.py | 7 + .../vector_field_to_rgba/_warp_impl.py | 7 + .../vector_field_to_rgba.py | 0 .../rendering/volume_render/__init__.py | 7 + .../rendering/volume_render/_warp_impl.py | 7 + .../{ => volume_render}/volume_render.py | 0 .../rendering/wireframe_render/__init__.py | 7 + .../rendering/wireframe_render/_warp_impl.py | 7 + .../wireframe_render.py | 0 .../rendering/test_isosurface_render.py | 2 +- .../rendering/test_lic_and_raster_render.py | 204 -------------- .../test_line_integral_convolution.py | 68 +++++ .../functional/rendering/test_mesh_raycast.py | 2 +- .../rendering/test_point_cloud_render.py | 115 ++++++++ .../rendering/test_scalar_field_to_rgba.py | 110 ++++++++ .../test_transfer_and_volume_render.py | 225 --------------- .../rendering/test_vector_field_to_rgba.py | 124 +++++++++ .../rendering/test_volume_render.py | 123 +++++++++ .../rendering/test_wireframe_render.py | 99 +++++++ 49 files changed, 770 insertions(+), 1219 deletions(-) delete mode 100644 examples/functional/README.md delete mode 100644 examples/functional/rendering/README.md delete mode 100644 examples/functional/rendering/line_integral_convolution/README.md delete mode 100644 examples/functional/rendering/line_integral_convolution/render_lic.py delete mode 100644 examples/functional/rendering/line_integral_convolution/render_lic_volume.py delete mode 100644 examples/functional/rendering/mesh_raycast/README.md delete mode 100644 examples/functional/rendering/mesh_raycast/render_mesh.py delete mode 100644 examples/functional/rendering/sphere_isosurface/README.md delete mode 100644 examples/functional/rendering/sphere_isosurface/render_sphere.py rename physicsnemo/nn/functional/rendering/{_torch_impl.py => _torch_ops.py} (100%) rename physicsnemo/nn/functional/rendering/{_warp_impl.py => _warp_ops.py} (100%) create mode 100644 physicsnemo/nn/functional/rendering/isosurface_render/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => isosurface_render}/isosurface_render.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => line_integral_convolution}/line_integral_convolution.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => mesh_raycast}/mesh_raycast.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => point_cloud_render}/point_cloud_render.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py create mode 100644 physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => scalar_field_to_rgba}/scalar_field_to_rgba.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py create mode 100644 physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => vector_field_to_rgba}/vector_field_to_rgba.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/volume_render/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => volume_render}/volume_render.py (100%) create mode 100644 physicsnemo/nn/functional/rendering/wireframe_render/__init__.py create mode 100644 physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py rename physicsnemo/nn/functional/rendering/{ => wireframe_render}/wireframe_render.py (100%) delete mode 100644 test/nn/functional/rendering/test_lic_and_raster_render.py create mode 100644 test/nn/functional/rendering/test_line_integral_convolution.py create mode 100644 test/nn/functional/rendering/test_point_cloud_render.py create mode 100644 test/nn/functional/rendering/test_scalar_field_to_rgba.py delete mode 100644 test/nn/functional/rendering/test_transfer_and_volume_render.py create mode 100644 test/nn/functional/rendering/test_vector_field_to_rgba.py create mode 100644 test/nn/functional/rendering/test_volume_render.py create mode 100644 test/nn/functional/rendering/test_wireframe_render.py diff --git a/docs/api/nn/functionals/rendering.rst b/docs/api/nn/functionals/rendering.rst index 0da1d17b9e..6488bb3ce5 100644 --- a/docs/api/nn/functionals/rendering.rst +++ b/docs/api/nn/functionals/rendering.rst @@ -6,8 +6,6 @@ buffers. They follow the same stateless functional pattern as the rest of ``physicsnemo.nn.functional``: tensors in, tensors out, with implementation dispatch handled through ``FunctionSpec``. -Runnable examples are available under ``examples/functional/rendering``. - Isosurface Render ----------------- diff --git a/examples/README.md b/examples/README.md index 516984282f..a48b9adff1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -111,12 +111,6 @@ The several examples inside PhysicsNeMo can be classified based on their domains 1. [Classify the famous two-moons data distribution using Active learning](./active_learning/moons/) -### Functional - -|Use case|Functionals covered| -| --- | --- | -|[Rendering functionals](./functional/rendering/)|Isosurface rendering, mesh raycasting, line integral convolution, volume rendering, and raster overlays| - ## Additional examples Physics-informed training examples (PINNs, PINO, physics-informed fine-tuning) diff --git a/examples/functional/README.md b/examples/functional/README.md deleted file mode 100644 index f81d97a3b8..0000000000 --- a/examples/functional/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Functional Examples - -These examples demonstrate standalone tensor functionals from -`physicsnemo.nn.functional`. - -|Use case|Functionals covered| -| --- | --- | -|[Rendering](./rendering/)|Isosurface rendering, mesh raycasting, line integral convolution, volume rendering, and raster overlays| diff --git a/examples/functional/rendering/README.md b/examples/functional/rendering/README.md deleted file mode 100644 index 948983b557..0000000000 --- a/examples/functional/rendering/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Rendering Functionals - -These examples demonstrate the rendering functionals in -`physicsnemo.nn.functional`. - -|Example|What it demonstrates| -| --- | --- | -|[Sphere isosurface](./sphere_isosurface/)|Rendering a moving scalar-field isosurface with RGB volume colors| -|[Mesh raycast](./mesh_raycast/)|Raycasting a rotating colored triangle mesh| -|[Line integral convolution](./line_integral_convolution/)|2D LIC slice rendering and 3D LIC volume rendering with a wireframe overlay| diff --git a/examples/functional/rendering/line_integral_convolution/README.md b/examples/functional/rendering/line_integral_convolution/README.md deleted file mode 100644 index 407f61ba63..0000000000 --- a/examples/functional/rendering/line_integral_convolution/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Line Integral Convolution Rendering - -This example computes a line integral convolution field from a rotating dipole -vector field and writes a focused animation of the center slice. It starts from -fixed random noise, advects the texture along the dipole field, and uses the -LIC result to modulate a jet-colored field-magnitude image. - -Run it with: - -```bash -python render_lic.py -``` - -To render the LIC field as a 3D RGBA volume with a rotating cube overlay, run: - -```bash -python render_lic_volume.py -``` - -The script writes PNG frames and an animated GIF to -`outputs_line_integral_convolution/`. diff --git a/examples/functional/rendering/line_integral_convolution/render_lic.py b/examples/functional/rendering/line_integral_convolution/render_lic.py deleted file mode 100644 index c164b6b0a5..0000000000 --- a/examples/functional/rendering/line_integral_convolution/render_lic.py +++ /dev/null @@ -1,171 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import argparse -from pathlib import Path - -import numpy as np -import torch -from PIL import Image - -from physicsnemo.nn.functional import line_integral_convolution - - -def dipole_field( - grid_size: int, depth_size: int, phase: float, device: torch.device -) -> torch.Tensor: - """Build a thin 3D dipole vector field for LIC slice rendering.""" - coords = torch.linspace(-2.0, 2.0, grid_size, device=device) - z_coords = torch.linspace(-0.05, 0.05, depth_size, device=device) - x, y, z = torch.meshgrid(coords, coords, z_coords, indexing="ij") - angle = torch.tensor(phase, device=device) - axis = torch.stack([torch.cos(angle), torch.sin(angle)]) - separation = 0.65 - positive = separation * axis - negative = -separation * axis - - rx_pos = x - positive[0] - ry_pos = y - positive[1] - rz_pos = 0.25 * z - rx_neg = x - negative[0] - ry_neg = y - negative[1] - rz_neg = 0.25 * z - - eps = 0.045 - r_pos = (rx_pos * rx_pos + ry_pos * ry_pos + rz_pos * rz_pos + eps) ** 1.5 - r_neg = (rx_neg * rx_neg + ry_neg * ry_neg + rz_neg * rz_neg + eps) ** 1.5 - return torch.stack( - [ - rx_pos / r_pos - rx_neg / r_neg, - ry_pos / r_pos - ry_neg / r_neg, - rz_pos / r_pos - rz_neg / r_neg, - ], - dim=-1, - ) - - -def seed_pattern(grid_size: int, device: torch.device) -> torch.Tensor: - """Create the fixed random seed texture advected by LIC.""" - return torch.rand(grid_size, grid_size, 1, device=device) - - -def jet_colormap(value: np.ndarray) -> np.ndarray: - """Map normalized scalar values to RGB jet colors.""" - red = np.clip(np.minimum(4.0 * value - 1.5, -4.0 * value + 4.5), 0.0, 1.0) - green = np.clip(np.minimum(4.0 * value - 0.5, -4.0 * value + 3.5), 0.0, 1.0) - blue = np.clip(np.minimum(4.0 * value + 0.5, -4.0 * value + 2.5), 0.0, 1.0) - return np.stack([red, green, blue], axis=-1) - - -def _draw_marker( - image: np.ndarray, point: np.ndarray, color: np.ndarray, radius: int -) -> None: - height, width = image.shape[:2] - cx = int((point[0] + 2.0) * 0.25 * float(width - 1)) - cy = int((point[1] + 2.0) * 0.25 * float(height - 1)) - yy, xx = np.ogrid[:height, :width] - mask = (xx - cx) ** 2 + (yy - cy) ** 2 <= radius * radius - image[mask] = color - - -def lic_to_rgb( - lic: torch.Tensor, vector_field: torch.Tensor, phase: float -) -> np.ndarray: - """Convert a LIC slice and vector magnitude to an RGB image.""" - center = lic.shape[2] // 2 - lic_image = lic[:, :, center].detach().cpu().numpy() - low = float(np.percentile(lic_image, 1.0)) - high = float(np.percentile(lic_image, 99.0)) - lic_image = np.clip((lic_image - low) / max(high - low, 1.0e-6), 0.0, 1.0) - magnitude = vector_field.norm(dim=-1)[:, :, center].detach().cpu().numpy() - magnitude = np.log1p(magnitude) - high = max(float(np.percentile(magnitude, 99.0)), 1.0e-6) - magnitude = np.clip(magnitude / high, 0.0, 1.0) - color = jet_colormap(magnitude) - shade = 0.10 + 0.90 * lic_image - image = color * shade[..., None] - - border = max(1, image.shape[0] // 64) - image[:border, :, :] = 1.0 - image[-border:, :, :] = 1.0 - image[:, :border, :] = 1.0 - image[:, -border:, :] = 1.0 - axis = np.array([np.cos(phase), np.sin(phase)], dtype=np.float32) - separation = 0.65 - marker_radius = max(2, image.shape[0] // 32) - _draw_marker(image, separation * axis, np.array([1.0, 0.12, 0.08]), marker_radius) - _draw_marker(image, -separation * axis, np.array([0.08, 0.2, 1.0]), marker_radius) - return np.rot90(image, k=1) - - -def main() -> None: - """Generate a 2D LIC animation from a rotating dipole field.""" - parser = argparse.ArgumentParser() - parser.add_argument("--frames", type=int, default=16) - parser.add_argument("--grid-size", type=int, default=192) - parser.add_argument("--depth-size", type=int, default=4) - parser.add_argument("--seed", type=int, default=17) - parser.add_argument( - "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" - ) - parser.add_argument("--implementation", type=str, default=None) - parser.add_argument( - "--output-dir", type=Path, default=Path("outputs_line_integral_convolution") - ) - parser.add_argument("--gif-path", type=Path, default=None) - parser.add_argument("--gif-duration-ms", type=int, default=80) - args = parser.parse_args() - - device = torch.device(args.device) - torch.manual_seed(args.seed) - args.output_dir.mkdir(parents=True, exist_ok=True) - gif_path = args.gif_path or args.output_dir / "line_integral_convolution.gif" - gif_frames: list[Image.Image] = [] - seed = seed_pattern(args.grid_size, device).expand( - args.grid_size, args.grid_size, args.depth_size - ) - - for frame in range(args.frames): - phase = 2.0 * np.pi * frame / max(args.frames, 1) - field = dipole_field(args.grid_size, args.depth_size, phase, device) - lic = line_integral_convolution( - field, - seed, - step_size=0.65, - num_steps=52, - contrast=2.2, - implementation=args.implementation, - ) - image = (lic_to_rgb(lic, field, phase) * 255.0).clip(0, 255).astype(np.uint8) - frame_image = Image.fromarray(image, mode="RGB") - frame_image.save(args.output_dir / f"lic_{frame:04d}.png") - gif_frames.append(frame_image) - - if gif_frames: - gif_path.parent.mkdir(parents=True, exist_ok=True) - gif_frames[0].save( - gif_path, - save_all=True, - append_images=gif_frames[1:], - duration=args.gif_duration_ms, - loop=0, - ) - - -if __name__ == "__main__": - main() diff --git a/examples/functional/rendering/line_integral_convolution/render_lic_volume.py b/examples/functional/rendering/line_integral_convolution/render_lic_volume.py deleted file mode 100644 index 005e012e5d..0000000000 --- a/examples/functional/rendering/line_integral_convolution/render_lic_volume.py +++ /dev/null @@ -1,256 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import argparse -from pathlib import Path - -import numpy as np -import torch -from PIL import Image - -from physicsnemo.nn.functional import ( - line_integral_convolution, - volume_render, - wireframe_render, -) - - -def dipole_field(grid_size: int, device: torch.device) -> torch.Tensor: - """Build a steady 3D dipole vector field for volume LIC.""" - coords = torch.linspace(-1.0, 1.0, grid_size, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - positive = torch.tensor([0.42, 0.0, 0.0], device=device) - negative = torch.tensor([-0.42, 0.0, 0.0], device=device) - - r_pos = torch.stack([x - positive[0], y - positive[1], z - positive[2]], dim=-1) - r_neg = torch.stack([x - negative[0], y - negative[1], z - negative[2]], dim=-1) - eps = 0.035 - d_pos = (r_pos.square().sum(dim=-1, keepdim=True) + eps).pow(1.5) - d_neg = (r_neg.square().sum(dim=-1, keepdim=True) + eps).pow(1.5) - return r_pos / d_pos - r_neg / d_neg - - -def cube_edges(device: torch.device) -> torch.Tensor: - """Return the line segments for a unit context cube.""" - vertices = torch.tensor( - [ - [-1.05, -1.05, -1.05], - [1.05, -1.05, -1.05], - [1.05, 1.05, -1.05], - [-1.05, 1.05, -1.05], - [-1.05, -1.05, 1.05], - [1.05, -1.05, 1.05], - [1.05, 1.05, 1.05], - [-1.05, 1.05, 1.05], - ], - device=device, - ) - edge_indices = torch.tensor( - [ - [0, 1], - [1, 2], - [2, 3], - [3, 0], - [4, 5], - [5, 6], - [6, 7], - [7, 4], - [0, 4], - [1, 5], - [2, 6], - [3, 7], - ], - device=device, - ) - return vertices[edge_indices] - - -def rotate_edges(edges: torch.Tensor, phase: float) -> torch.Tensor: - """Rotate context-cube edges around two axes.""" - angle = torch.tensor(phase, device=edges.device, dtype=edges.dtype) - c = torch.cos(angle) - s = torch.sin(angle) - rotation_y = torch.stack( - [ - torch.stack([c, torch.zeros_like(c), s]), - torch.stack([torch.zeros_like(c), torch.ones_like(c), torch.zeros_like(c)]), - torch.stack([-s, torch.zeros_like(c), c]), - ] - ) - half = 0.45 * angle - ch = torch.cos(half) - sh = torch.sin(half) - rotation_x = torch.stack( - [ - torch.stack( - [torch.ones_like(ch), torch.zeros_like(ch), torch.zeros_like(ch)] - ), - torch.stack([torch.zeros_like(ch), ch, -sh]), - torch.stack([torch.zeros_like(ch), sh, ch]), - ] - ) - return edges @ (rotation_y @ rotation_x).T - - -def jet_colormap(value: torch.Tensor) -> torch.Tensor: - """Map normalized tensor values to RGB jet colors.""" - red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) - green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) - blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) - return torch.stack([red, green, blue], dim=-1) - - -def make_lic_rgba_volume( - vector_field: torch.Tensor, - lic: torch.Tensor, - max_opacity: float, -) -> torch.Tensor: - """Convert vector magnitude and LIC values into a uint8 RGBA volume.""" - magnitude = torch.log1p(vector_field.norm(dim=-1)) - magnitude = (magnitude / torch.quantile(magnitude.reshape(-1), 0.985)).clamp( - 0.0, 1.0 - ) - - lic_low = torch.quantile(lic.reshape(-1), 0.01) - lic_high = torch.quantile(lic.reshape(-1), 0.99) - lic_norm = ((lic - lic_low) / (lic_high - lic_low).clamp_min(1.0e-6)).clamp( - 0.0, 1.0 - ) - - color = jet_colormap(magnitude) - color = color * (0.18 + 0.82 * lic_norm[..., None]) - alpha = (0.02 + 0.98 * lic_norm) * magnitude.sqrt() * max_opacity - volume = torch.cat([color, alpha[..., None].clamp(0.0, 1.0)], dim=-1) - return (volume * 255.0).clamp(0, 255).to(torch.uint8) - - -def composite_rgba(rgba: torch.Tensor, background: np.ndarray) -> np.ndarray: - """Composite a rendered RGBA image over a background color.""" - image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() - alpha = image[..., 3:4] - return image[..., :3] * alpha + background * (1.0 - alpha) - - -def overlay_wire(volume_rgb: np.ndarray, wire_rgba: torch.Tensor) -> np.ndarray: - """Alpha composite a wireframe render over a volume RGB image.""" - wire = wire_rgba.detach().clamp(0.0, 1.0).cpu().numpy() - alpha = wire[..., 3:4] - return wire[..., :3] * alpha + volume_rgb * (1.0 - alpha) - - -def main() -> None: - """Generate a 3D LIC volume-render animation with a rotating cube.""" - parser = argparse.ArgumentParser() - parser.add_argument("--frames", type=int, default=16) - parser.add_argument("--grid-size", type=int, default=56) - parser.add_argument("--image-size", type=int, default=192) - parser.add_argument("--seed", type=int, default=29) - parser.add_argument("--sweep-degrees", type=float, default=90.0) - parser.add_argument( - "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" - ) - parser.add_argument("--implementation", type=str, default=None) - parser.add_argument( - "--output-dir", type=Path, default=Path("outputs_line_integral_volume") - ) - parser.add_argument("--gif-path", type=Path, default=None) - parser.add_argument("--gif-duration-ms", type=int, default=80) - args = parser.parse_args() - - device = torch.device(args.device) - torch.manual_seed(args.seed) - args.output_dir.mkdir(parents=True, exist_ok=True) - gif_path = args.gif_path or args.output_dir / "line_integral_convolution_3d.gif" - gif_frames: list[Image.Image] = [] - - vector_field = dipole_field(args.grid_size, device) - seed = torch.rand(args.grid_size, args.grid_size, args.grid_size, device=device) - lic = line_integral_convolution( - vector_field, - seed, - step_size=0.55, - num_steps=26, - contrast=2.0, - implementation=args.implementation, - ) - lic_volume = make_lic_rgba_volume(vector_field, lic, max_opacity=0.16) - - center = torch.tensor([0.0, 0.0, 0.0], device=device) - up = torch.tensor([0.0, 1.0, 0.0], device=device) - bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) - bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) - edges = cube_edges(device) - background = np.array([0.015, 0.018, 0.024], dtype=np.float32) - - sweep = np.deg2rad(args.sweep_degrees) - for frame in range(args.frames): - t = 0.5 if args.frames == 1 else frame / (args.frames - 1) - phase = (t - 0.5) * sweep - eye = torch.tensor( - [3.1 * np.sin(phase), 0.16, -3.1 * np.cos(phase)], - device=device, - dtype=torch.float32, - ) - volume_rgba, _ = volume_render( - lic_volume, - args.image_size, - args.image_size, - eye, - center, - up, - 42.0, - bounds_min, - bounds_max, - step_size=2.0 / args.grid_size, - max_steps=2 * args.grid_size, - opacity_threshold=0.97, - implementation=args.implementation, - ) - volume_rgb = composite_rgba(volume_rgba, background) - wire_rgba, _ = wireframe_render( - rotate_edges(edges, phase), - args.image_size, - args.image_size, - eye, - center, - up, - 42.0, - line_color=torch.tensor([1.0, 0.92, 0.18], device=device), - line_thickness=2, - implementation=args.implementation, - ) - image = ( - (overlay_wire(volume_rgb, wire_rgba) * 255.0).clip(0, 255).astype(np.uint8) - ) - frame_image = Image.fromarray(image, mode="RGB") - frame_image.save(args.output_dir / f"lic_volume_{frame:04d}.png") - gif_frames.append(frame_image) - - if gif_frames: - gif_path.parent.mkdir(parents=True, exist_ok=True) - gif_frames[0].save( - gif_path, - save_all=True, - append_images=gif_frames[1:], - duration=args.gif_duration_ms, - loop=0, - ) - - -if __name__ == "__main__": - main() diff --git a/examples/functional/rendering/mesh_raycast/README.md b/examples/functional/rendering/mesh_raycast/README.md deleted file mode 100644 index 065c06d63b..0000000000 --- a/examples/functional/rendering/mesh_raycast/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Mesh Raycast Rendering - -This example renders a colored rotating cube with the Warp-backed -`mesh_raycast` functional. - -Run with: - -```bash -python render_mesh.py -``` - -The script writes PNG frames and an animated GIF to `outputs_mesh_raycast/`. diff --git a/examples/functional/rendering/mesh_raycast/render_mesh.py b/examples/functional/rendering/mesh_raycast/render_mesh.py deleted file mode 100644 index 4e72860bc9..0000000000 --- a/examples/functional/rendering/mesh_raycast/render_mesh.py +++ /dev/null @@ -1,157 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import argparse -from pathlib import Path - -import numpy as np -import torch -from PIL import Image - -from physicsnemo.nn.functional import mesh_raycast - - -def cube_mesh(device: torch.device) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """Create a colored cube mesh for the raycast example.""" - vertices = torch.tensor( - [ - [-0.6, -0.6, -0.6], - [0.6, -0.6, -0.6], - [0.6, 0.6, -0.6], - [-0.6, 0.6, -0.6], - [-0.6, -0.6, 0.6], - [0.6, -0.6, 0.6], - [0.6, 0.6, 0.6], - [-0.6, 0.6, 0.6], - ], - device=device, - ) - indices = torch.tensor( - [ - [0, 2, 1], - [0, 3, 2], - [4, 5, 6], - [4, 6, 7], - [0, 1, 5], - [0, 5, 4], - [2, 3, 7], - [2, 7, 6], - [1, 2, 6], - [1, 6, 5], - [3, 0, 4], - [3, 4, 7], - ], - device=device, - dtype=torch.int32, - ) - colors = torch.tensor( - [ - [35, 105, 255], - [40, 190, 255], - [60, 230, 160], - [245, 220, 80], - [255, 120, 80], - [230, 80, 170], - [150, 85, 255], - [80, 235, 235], - ], - device=device, - dtype=torch.uint8, - ) - return vertices, indices, colors - - -def rotate_y(vertices: torch.Tensor, angle: torch.Tensor) -> torch.Tensor: - """Rotate vertices about the vertical axis.""" - c = torch.cos(angle) - s = torch.sin(angle) - rotation = torch.stack( - [ - torch.stack([c, torch.zeros_like(c), s]), - torch.stack([torch.zeros_like(c), torch.ones_like(c), torch.zeros_like(c)]), - torch.stack([-s, torch.zeros_like(c), c]), - ] - ) - return vertices @ rotation.T - - -def main() -> None: - """Generate an animation with the ``mesh_raycast`` functional.""" - parser = argparse.ArgumentParser() - parser.add_argument("--frames", type=int, default=24) - parser.add_argument("--image-size", type=int, default=256) - parser.add_argument( - "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" - ) - parser.add_argument("--implementation", type=str, default=None) - parser.add_argument("--output-dir", type=Path, default=Path("outputs_mesh_raycast")) - parser.add_argument("--gif-path", type=Path, default=None) - parser.add_argument("--gif-duration-ms", type=int, default=80) - args = parser.parse_args() - - device = torch.device(args.device) - args.output_dir.mkdir(parents=True, exist_ok=True) - gif_path = args.gif_path or args.output_dir / "mesh_raycast.gif" - gif_frames: list[Image.Image] = [] - - vertices, indices, colors = cube_mesh(device) - eye = torch.tensor([0.0, 0.15, -3.0], device=device) - look_at = torch.tensor([0.0, 0.0, 0.0], device=device) - up = torch.tensor([0.0, 1.0, 0.0], device=device) - light = torch.tensor([-0.4, 0.7, -1.0], device=device) - background = np.array([0.015, 0.018, 0.024], dtype=np.float32) - - for frame in range(args.frames): - angle = torch.tensor( - 2.0 * torch.pi * frame / max(args.frames, 1), device=device - ) - frame_vertices = rotate_y(vertices, angle) - rgba, _, _ = mesh_raycast( - frame_vertices, - indices, - args.image_size, - args.image_size, - eye, - look_at, - up, - 40.0, - vertex_colors=colors, - light_direction=light, - implementation=args.implementation, - ) - image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() - alpha = image[..., 3:4] - composite = image[..., :3] * alpha + background * (1.0 - alpha) - gif_image = (composite * 255.0).clip(0, 255).astype(np.uint8) - frame_image = Image.fromarray(gif_image, mode="RGB") - frame_image.save(args.output_dir / f"mesh_{frame:04d}.png") - gif_frames.append(frame_image) - - if gif_frames: - gif_path.parent.mkdir(parents=True, exist_ok=True) - gif_frames[0].save( - gif_path, - save_all=True, - append_images=gif_frames[1:], - duration=args.gif_duration_ms, - loop=0, - ) - - -if __name__ == "__main__": - main() diff --git a/examples/functional/rendering/sphere_isosurface/README.md b/examples/functional/rendering/sphere_isosurface/README.md deleted file mode 100644 index a05aeed4db..0000000000 --- a/examples/functional/rendering/sphere_isosurface/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sphere Isosurface Rendering - -This example builds a scalar field plus a `uint8` RGB volume for a moving sphere -and renders it with the fused `isosurface_render` functional. - -Run with: - -```bash -python render_sphere.py -``` - -The script writes PNG frames and an animated GIF to -`outputs_sphere_isosurface/`. diff --git a/examples/functional/rendering/sphere_isosurface/render_sphere.py b/examples/functional/rendering/sphere_isosurface/render_sphere.py deleted file mode 100644 index b453d5788a..0000000000 --- a/examples/functional/rendering/sphere_isosurface/render_sphere.py +++ /dev/null @@ -1,132 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import argparse -from pathlib import Path - -import numpy as np -import torch -from PIL import Image - -from physicsnemo.nn.functional import isosurface_render - - -def sphere_field( - grid_n: int, - center: torch.Tensor, - radius: float, - device: torch.device, -) -> torch.Tensor: - """Create a signed-distance scalar field for a sphere.""" - coords = torch.linspace(-1.0, 1.0, grid_n, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - dx = x - center[0] - dy = y - center[1] - dz = z - center[2] - return torch.sqrt(dx * dx + dy * dy + dz * dz) - radius - - -def color_field(grid_n: int, device: torch.device) -> torch.Tensor: - """Create a uint8 RGB volume used to color the sphere.""" - coords = torch.linspace(0.0, 1.0, grid_n, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - rgb = torch.stack([0.15 + 0.85 * x, 0.25 + 0.55 * y, 0.95 - 0.45 * z], dim=-1) - return (rgb * 255.0).to(torch.uint8) - - -def main() -> None: - """Generate an animation with the ``isosurface_render`` functional.""" - parser = argparse.ArgumentParser() - parser.add_argument("--frames", type=int, default=24) - parser.add_argument("--grid-size", type=int, default=64) - parser.add_argument("--image-size", type=int, default=256) - parser.add_argument( - "--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu" - ) - parser.add_argument("--implementation", type=str, default=None) - parser.add_argument( - "--output-dir", type=Path, default=Path("outputs_sphere_isosurface") - ) - parser.add_argument("--gif-path", type=Path, default=None) - parser.add_argument("--gif-duration-ms", type=int, default=80) - args = parser.parse_args() - - device = torch.device(args.device) - args.output_dir.mkdir(parents=True, exist_ok=True) - gif_path = args.gif_path or args.output_dir / "sphere_isosurface.gif" - gif_frames: list[Image.Image] = [] - - bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) - bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) - eye = torch.tensor([0.0, 0.2, -3.0], device=device) - look_at = torch.tensor([0.0, 0.0, 0.0], device=device) - up = torch.tensor([0.0, 1.0, 0.0], device=device) - light = torch.tensor([-0.45, 0.75, -1.0], device=device) - background = np.array([0.015, 0.018, 0.024], dtype=np.float32) - colors = color_field(args.grid_size, device) - - for frame in range(args.frames): - phase = 2.0 * torch.pi * frame / max(args.frames, 1) - center = torch.tensor( - [ - 0.35 * torch.cos(torch.tensor(phase)), - 0.18 * torch.sin(torch.tensor(phase)), - 0.0, - ], - device=device, - ) - field = sphere_field(args.grid_size, center, radius=0.42, device=device) - rgba, _, _ = isosurface_render( - field, - args.image_size, - args.image_size, - eye, - look_at, - up, - 38.0, - bounds_min, - bounds_max, - threshold=0.0, - step_size=2.0 / args.grid_size, - max_steps=2 * args.grid_size, - color_field=colors, - light_direction=light, - implementation=args.implementation, - ) - - image = rgba.detach().clamp(0.0, 1.0).cpu().numpy() - alpha = image[..., 3:4] - composite = image[..., :3] * alpha + background * (1.0 - alpha) - gif_image = (composite * 255.0).clip(0, 255).astype(np.uint8) - frame_image = Image.fromarray(gif_image, mode="RGB") - frame_image.save(args.output_dir / f"sphere_{frame:04d}.png") - gif_frames.append(frame_image) - - if gif_frames: - gif_path.parent.mkdir(parents=True, exist_ok=True) - gif_frames[0].save( - gif_path, - save_all=True, - append_images=gif_frames[1:], - duration=args.gif_duration_ms, - loop=0, - ) - - -if __name__ == "__main__": - main() diff --git a/physicsnemo/nn/functional/rendering/_torch_impl.py b/physicsnemo/nn/functional/rendering/_torch_ops.py similarity index 100% rename from physicsnemo/nn/functional/rendering/_torch_impl.py rename to physicsnemo/nn/functional/rendering/_torch_ops.py diff --git a/physicsnemo/nn/functional/rendering/_warp_impl.py b/physicsnemo/nn/functional/rendering/_warp_ops.py similarity index 100% rename from physicsnemo/nn/functional/rendering/_warp_impl.py rename to physicsnemo/nn/functional/rendering/_warp_ops.py diff --git a/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py b/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py new file mode 100644 index 0000000000..e5d2ba4782 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .isosurface_render import IsosurfaceRender, isosurface_render + +__all__ = ["IsosurfaceRender", "isosurface_render"] diff --git a/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py new file mode 100644 index 0000000000..a27bd5c8d7 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import isosurface_render_warp + +__all__ = ["isosurface_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/isosurface_render.py b/physicsnemo/nn/functional/rendering/isosurface_render/isosurface_render.py similarity index 100% rename from physicsnemo/nn/functional/rendering/isosurface_render.py rename to physicsnemo/nn/functional/rendering/isosurface_render/isosurface_render.py diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py b/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py new file mode 100644 index 0000000000..75dd1806be --- /dev/null +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .line_integral_convolution import ( + LineIntegralConvolution, + line_integral_convolution, +) + +__all__ = ["LineIntegralConvolution", "line_integral_convolution"] diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py b/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py new file mode 100644 index 0000000000..34f9da3207 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import line_integral_convolution_warp + +__all__ = ["line_integral_convolution_warp"] diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution.py b/physicsnemo/nn/functional/rendering/line_integral_convolution/line_integral_convolution.py similarity index 100% rename from physicsnemo/nn/functional/rendering/line_integral_convolution.py rename to physicsnemo/nn/functional/rendering/line_integral_convolution/line_integral_convolution.py diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py b/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py new file mode 100644 index 0000000000..7ed7b42097 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .mesh_raycast import MeshRaycast, mesh_raycast + +__all__ = ["MeshRaycast", "mesh_raycast"] diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py b/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py new file mode 100644 index 0000000000..121e61c571 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import mesh_raycast_warp + +__all__ = ["mesh_raycast_warp"] diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast.py b/physicsnemo/nn/functional/rendering/mesh_raycast/mesh_raycast.py similarity index 100% rename from physicsnemo/nn/functional/rendering/mesh_raycast.py rename to physicsnemo/nn/functional/rendering/mesh_raycast/mesh_raycast.py diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py b/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py new file mode 100644 index 0000000000..b7f5dfbc99 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .point_cloud_render import PointCloudRender, point_cloud_render + +__all__ = ["PointCloudRender", "point_cloud_render"] diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py new file mode 100644 index 0000000000..59d77643f3 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import point_cloud_render_warp + +__all__ = ["point_cloud_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render.py b/physicsnemo/nn/functional/rendering/point_cloud_render/point_cloud_render.py similarity index 100% rename from physicsnemo/nn/functional/rendering/point_cloud_render.py rename to physicsnemo/nn/functional/rendering/point_cloud_render/point_cloud_render.py diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py new file mode 100644 index 0000000000..83a162ae7e --- /dev/null +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .scalar_field_to_rgba import ScalarFieldToRGBA, scalar_field_to_rgba + +__all__ = ["ScalarFieldToRGBA", "scalar_field_to_rgba"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py new file mode 100644 index 0000000000..f05686b044 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._torch_ops import scalar_field_to_rgba_torch + +__all__ = ["scalar_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py new file mode 100644 index 0000000000..0a935e0a12 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import scalar_field_to_rgba_warp + +__all__ = ["scalar_field_to_rgba_warp"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/scalar_field_to_rgba.py similarity index 100% rename from physicsnemo/nn/functional/rendering/scalar_field_to_rgba.py rename to physicsnemo/nn/functional/rendering/scalar_field_to_rgba/scalar_field_to_rgba.py diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py new file mode 100644 index 0000000000..d9cdb8fd1d --- /dev/null +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .vector_field_to_rgba import VectorFieldToRGBA, vector_field_to_rgba + +__all__ = ["VectorFieldToRGBA", "vector_field_to_rgba"] diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py new file mode 100644 index 0000000000..acf9273087 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._torch_ops import vector_field_to_rgba_torch + +__all__ = ["vector_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py new file mode 100644 index 0000000000..dffc252b79 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import vector_field_to_rgba_warp + +__all__ = ["vector_field_to_rgba_warp"] diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/vector_field_to_rgba.py similarity index 100% rename from physicsnemo/nn/functional/rendering/vector_field_to_rgba.py rename to physicsnemo/nn/functional/rendering/vector_field_to_rgba/vector_field_to_rgba.py diff --git a/physicsnemo/nn/functional/rendering/volume_render/__init__.py b/physicsnemo/nn/functional/rendering/volume_render/__init__.py new file mode 100644 index 0000000000..bdb3c05812 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/volume_render/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .volume_render import VolumeRender, volume_render + +__all__ = ["VolumeRender", "volume_render"] diff --git a/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py new file mode 100644 index 0000000000..0066c3541a --- /dev/null +++ b/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import volume_render_warp + +__all__ = ["volume_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/volume_render.py b/physicsnemo/nn/functional/rendering/volume_render/volume_render.py similarity index 100% rename from physicsnemo/nn/functional/rendering/volume_render.py rename to physicsnemo/nn/functional/rendering/volume_render/volume_render.py diff --git a/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py b/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py new file mode 100644 index 0000000000..67801e145b --- /dev/null +++ b/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .wireframe_render import WireframeRender, wireframe_render + +__all__ = ["WireframeRender", "wireframe_render"] diff --git a/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py new file mode 100644 index 0000000000..6c501e185c --- /dev/null +++ b/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from .._warp_ops import wireframe_render_warp + +__all__ = ["wireframe_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/wireframe_render.py b/physicsnemo/nn/functional/rendering/wireframe_render/wireframe_render.py similarity index 100% rename from physicsnemo/nn/functional/rendering/wireframe_render.py rename to physicsnemo/nn/functional/rendering/wireframe_render/wireframe_render.py diff --git a/test/nn/functional/rendering/test_isosurface_render.py b/test/nn/functional/rendering/test_isosurface_render.py index 36c93e1414..a339548d9a 100644 --- a/test/nn/functional/rendering/test_isosurface_render.py +++ b/test/nn/functional/rendering/test_isosurface_render.py @@ -44,7 +44,7 @@ def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: @requires_module("warp") -def test_isosurface_render_returns_color_depth_and_normals(device: str): +def test_isosurface_render_warp(device: str): field = _sphere_field(48, device) color_field = _sphere_color_field(48, device) bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) diff --git a/test/nn/functional/rendering/test_lic_and_raster_render.py b/test/nn/functional/rendering/test_lic_and_raster_render.py deleted file mode 100644 index ef4a804791..0000000000 --- a/test/nn/functional/rendering/test_lic_and_raster_render.py +++ /dev/null @@ -1,204 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import pytest -import torch - -from physicsnemo.nn.functional import ( - line_integral_convolution, - point_cloud_render, - wireframe_render, -) -from physicsnemo.nn.functional.rendering import ( - LineIntegralConvolution, - PointCloudRender, - WireframeRender, -) -from test.conftest import requires_module - - -def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - return ( - torch.tensor([0.0, 0.0, -2.0], device=device), - torch.tensor([0.0, 0.0, 0.0], device=device), - torch.tensor([0.0, 1.0, 0.0], device=device), - ) - - -@requires_module("warp") -def test_line_integral_convolution_returns_bounded_field(device: str): - coords = torch.linspace(-1.0, 1.0, 8, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - vector_field = torch.stack([-y, x, 0.2 * torch.ones_like(z)], dim=-1) - seed = torch.linspace(0.0, 1.0, 8, device=device).reshape(8, 1, 1) - seed = seed.expand(8, 8, 8).contiguous() - - lic = line_integral_convolution( - vector_field, - seed, - step_size=0.4, - num_steps=4, - implementation="warp", - ) - - assert lic.shape == (8, 8, 8) - assert float(lic.min()) >= 0.0 - assert float(lic.max()) <= 1.0 - assert "warp" in LineIntegralConvolution.available_implementations() - - -@requires_module("warp") -def test_point_cloud_render_returns_color_and_depth(device: str): - points = torch.tensor( - [[0.0, 0.0, 0.0], [0.35, 0.2, 0.0]], device=device, dtype=torch.float32 - ) - colors = torch.tensor( - [[255, 0, 0], [0, 128, 255]], device=device, dtype=torch.uint8 - ) - eye, center, up = _camera(device) - - rgba, depth = point_cloud_render( - points, - 21, - 21, - eye, - center, - up, - 45.0, - point_colors=colors, - point_size=1, - implementation="warp", - ) - - assert rgba.shape == (21, 21, 4) - assert depth.shape == (21, 21) - assert float(rgba[..., 3].sum()) == pytest.approx(2.0) - assert torch.isfinite(depth).any() - assert "warp" in PointCloudRender.available_implementations() - - -@requires_module("warp") -def test_wireframe_render_returns_color_and_depth(device: str): - edges = torch.tensor( - [[[-0.5, -0.5, 0.0], [0.5, 0.5, 0.0]]], - device=device, - dtype=torch.float32, - ) - eye, center, up = _camera(device) - - rgba, depth = wireframe_render( - edges, - 21, - 21, - eye, - center, - up, - 45.0, - line_color=torch.tensor([0.8, 0.7, 0.2], device=device), - implementation="warp", - ) - - assert rgba.shape == (21, 21, 4) - assert depth.shape == (21, 21) - assert float(rgba[..., 3].sum()) > 0.0 - assert torch.isfinite(depth).any() - assert "warp" in WireframeRender.available_implementations() - - -@requires_module("warp") -def test_lic_and_raster_make_inputs_forward(device: str): - for spec in (LineIntegralConvolution, PointCloudRender, WireframeRender): - label, args, kwargs = next(iter(spec.make_inputs_forward(device))) - assert isinstance(label, str) - assert isinstance(args, tuple) - assert isinstance(kwargs, dict) - output = spec.dispatch(*args, implementation="warp", **kwargs) - assert output is not None - - -@requires_module("warp") -def test_lic_and_raster_error_handling(device: str): - vector_field = torch.zeros(4, 4, 4, 3, device=device) - seed = torch.zeros(4, 4, 4, device=device) - with pytest.raises(ValueError, match="num_steps"): - line_integral_convolution( - vector_field, seed, num_steps=0, implementation="warp" - ) - - eye, center, up = _camera(device) - with pytest.raises(ValueError, match="point_size"): - point_cloud_render( - torch.zeros(1, 3, device=device), - 16, - 16, - eye, - center, - up, - 45.0, - point_size=0, - implementation="warp", - ) - - with pytest.raises(ValueError, match="either point_colors or point_color"): - point_cloud_render( - torch.zeros(1, 3, device=device), - 16, - 16, - eye, - center, - up, - 45.0, - point_colors=torch.zeros(1, 3, device=device), - point_color=torch.ones(3, device=device), - implementation="warp", - ) - - with pytest.raises(ValueError, match="at least one point"): - point_cloud_render( - torch.zeros(0, 3, device=device), - 16, - 16, - eye, - center, - up, - 45.0, - implementation="warp", - ) - - with pytest.raises(ValueError, match="line_thickness"): - wireframe_render( - torch.zeros(1, 2, 3, device=device), - 16, - 16, - eye, - center, - up, - 45.0, - line_thickness=0, - implementation="warp", - ) - - with pytest.raises(ValueError, match="at least one edge"): - wireframe_render( - torch.zeros(0, 2, 3, device=device), - 16, - 16, - eye, - center, - up, - 45.0, - implementation="warp", - ) diff --git a/test/nn/functional/rendering/test_line_integral_convolution.py b/test/nn/functional/rendering/test_line_integral_convolution.py new file mode 100644 index 0000000000..c283649f44 --- /dev/null +++ b/test/nn/functional/rendering/test_line_integral_convolution.py @@ -0,0 +1,68 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import line_integral_convolution +from physicsnemo.nn.functional.rendering import LineIntegralConvolution +from test.conftest import requires_module + + +@requires_module("warp") +def test_line_integral_convolution_warp(device: str): + coords = torch.linspace(-1.0, 1.0, 8, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + vector_field = torch.stack([-y, x, 0.2 * torch.ones_like(z)], dim=-1) + seed = torch.linspace(0.0, 1.0, 8, device=device).reshape(8, 1, 1) + seed = seed.expand(8, 8, 8).contiguous() + + lic = line_integral_convolution( + vector_field, + seed, + step_size=0.4, + num_steps=4, + implementation="warp", + ) + + assert lic.shape == (8, 8, 8) + assert float(lic.min()) >= 0.0 + assert float(lic.max()) <= 1.0 + assert "warp" in LineIntegralConvolution.available_implementations() + + +@requires_module("warp") +def test_line_integral_convolution_make_inputs_forward(device: str): + label, args, kwargs = next( + iter(LineIntegralConvolution.make_inputs_forward(device)) + ) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = LineIntegralConvolution.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_line_integral_convolution_error_handling(device: str): + vector_field = torch.zeros(4, 4, 4, 3, device=device) + seed = torch.zeros(4, 4, 4, device=device) + + with pytest.raises(ValueError, match="num_steps"): + line_integral_convolution( + vector_field, seed, num_steps=0, implementation="warp" + ) diff --git a/test/nn/functional/rendering/test_mesh_raycast.py b/test/nn/functional/rendering/test_mesh_raycast.py index 879dbbc5fd..fe55bf805a 100644 --- a/test/nn/functional/rendering/test_mesh_raycast.py +++ b/test/nn/functional/rendering/test_mesh_raycast.py @@ -42,7 +42,7 @@ def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: @requires_module("warp") -def test_mesh_raycast_returns_color_depth_and_normals(device: str): +def test_mesh_raycast_warp(device: str): mesh_vertices, mesh_indices = _triangle_mesh(device) vertex_colors = torch.tensor( [[255, 0, 0], [0, 255, 0], [0, 0, 255]], diff --git a/test/nn/functional/rendering/test_point_cloud_render.py b/test/nn/functional/rendering/test_point_cloud_render.py new file mode 100644 index 0000000000..46ec6e2454 --- /dev/null +++ b/test/nn/functional/rendering/test_point_cloud_render.py @@ -0,0 +1,115 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import point_cloud_render +from physicsnemo.nn.functional.rendering import PointCloudRender +from test.conftest import requires_module + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.0], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_point_cloud_render_warp(device: str): + points = torch.tensor( + [[0.0, 0.0, 0.0], [0.35, 0.2, 0.0]], device=device, dtype=torch.float32 + ) + colors = torch.tensor( + [[255, 0, 0], [0, 128, 255]], device=device, dtype=torch.uint8 + ) + eye, center, up = _camera(device) + + rgba, depth = point_cloud_render( + points, + 21, + 21, + eye, + center, + up, + 45.0, + point_colors=colors, + point_size=1, + implementation="warp", + ) + + assert rgba.shape == (21, 21, 4) + assert depth.shape == (21, 21) + assert float(rgba[..., 3].sum()) == pytest.approx(2.0) + assert torch.isfinite(depth).any() + assert "warp" in PointCloudRender.available_implementations() + + +@requires_module("warp") +def test_point_cloud_render_make_inputs_forward(device: str): + label, args, kwargs = next(iter(PointCloudRender.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = PointCloudRender.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_point_cloud_render_error_handling(device: str): + eye, center, up = _camera(device) + + with pytest.raises(ValueError, match="point_size"): + point_cloud_render( + torch.zeros(1, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + point_size=0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="either point_colors or point_color"): + point_cloud_render( + torch.zeros(1, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + point_colors=torch.zeros(1, 3, device=device), + point_color=torch.ones(3, device=device), + implementation="warp", + ) + + with pytest.raises(ValueError, match="at least one point"): + point_cloud_render( + torch.zeros(0, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + implementation="warp", + ) diff --git a/test/nn/functional/rendering/test_scalar_field_to_rgba.py b/test/nn/functional/rendering/test_scalar_field_to_rgba.py new file mode 100644 index 0000000000..748936532e --- /dev/null +++ b/test/nn/functional/rendering/test_scalar_field_to_rgba.py @@ -0,0 +1,110 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import scalar_field_to_rgba +from physicsnemo.nn.functional.rendering import ScalarFieldToRGBA +from test.conftest import requires_module + + +@requires_module("warp") +def test_scalar_field_to_rgba_warp(device: str): + field = torch.linspace(0.0, 1.0, 16, device=device).reshape(4, 4, 1) + field = field.expand(4, 4, 4).contiguous() + + rgba_volume = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.5, + opacity_threshold=0.25, + implementation="warp", + ) + + assert rgba_volume.shape == (4, 4, 4, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].min()) == 0 + assert int(rgba_volume[..., 3].max()) <= 128 + assert int(rgba_volume[..., :3].max()) > 0 + assert "warp" in ScalarFieldToRGBA.available_implementations() + assert "torch" in ScalarFieldToRGBA.available_implementations() + + +def test_scalar_field_to_rgba_torch(): + field = torch.linspace(0.0, 1.0, 16).reshape(4, 4, 1) + field = field.expand(4, 4, 4).contiguous() + + rgba_volume = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.5, + opacity_threshold=0.25, + implementation="torch", + ) + + assert rgba_volume.shape == (4, 4, 4, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].min()) == 0 + assert int(rgba_volume[..., 3].max()) <= 128 + + +@requires_module("warp") +def test_scalar_field_to_rgba_backend_forward_parity(device: str): + field = torch.linspace(-0.2, 1.2, 5 * 6 * 7, device=device).reshape(5, 6, 7) + + rgba_warp = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.7, + opacity_threshold=0.2, + implementation="warp", + ) + rgba_torch = scalar_field_to_rgba( + field, + 0.0, + 1.0, + max_opacity=0.7, + opacity_threshold=0.2, + implementation="torch", + ) + + ScalarFieldToRGBA.compare_forward(rgba_warp, rgba_torch) + + +def test_scalar_field_to_rgba_make_inputs_forward(): + label, args, kwargs = next(iter(ScalarFieldToRGBA.make_inputs_forward("cpu"))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = ScalarFieldToRGBA.dispatch(*args, implementation="torch", **kwargs) + assert output is not None + + +def test_scalar_field_to_rgba_compare_forward_contract(): + reference = torch.zeros(2, 2, 2, 4, dtype=torch.uint8) + output = reference.clone() + ScalarFieldToRGBA.compare_forward(output, reference) + + +def test_scalar_field_to_rgba_error_handling(): + field = torch.zeros(4, 4, 4) + with pytest.raises(ValueError, match="vmax"): + scalar_field_to_rgba(field, 1.0, 1.0, implementation="torch") diff --git a/test/nn/functional/rendering/test_transfer_and_volume_render.py b/test/nn/functional/rendering/test_transfer_and_volume_render.py deleted file mode 100644 index ada86c435c..0000000000 --- a/test/nn/functional/rendering/test_transfer_and_volume_render.py +++ /dev/null @@ -1,225 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import pytest -import torch - -from physicsnemo.nn.functional import ( - scalar_field_to_rgba, - vector_field_to_rgba, - volume_render, -) -from physicsnemo.nn.functional.rendering import ( - ScalarFieldToRGBA, - VectorFieldToRGBA, - VolumeRender, -) -from test.conftest import requires_module - - -def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - return ( - torch.tensor([0.0, 0.0, -2.5], device=device), - torch.tensor([0.0, 0.0, 0.0], device=device), - torch.tensor([0.0, 1.0, 0.0], device=device), - ) - - -@requires_module("warp") -def test_scalar_field_to_rgba_maps_transfer_volume(device: str): - field = torch.linspace(0.0, 1.0, 16, device=device).reshape(4, 4, 1) - field = field.expand(4, 4, 4).contiguous() - - rgba_volume = scalar_field_to_rgba( - field, - 0.0, - 1.0, - max_opacity=0.5, - opacity_threshold=0.25, - implementation="warp", - ) - - assert rgba_volume.shape == (4, 4, 4, 4) - assert rgba_volume.dtype == torch.uint8 - assert int(rgba_volume[..., 3].min()) == 0 - assert int(rgba_volume[..., 3].max()) <= 128 - assert int(rgba_volume[..., :3].max()) > 0 - assert "warp" in ScalarFieldToRGBA.available_implementations() - assert "torch" in ScalarFieldToRGBA.available_implementations() - - -@requires_module("warp") -def test_scalar_field_to_rgba_torch_matches_warp(device: str): - field = torch.linspace(-0.2, 1.2, 5 * 6 * 7, device=device).reshape(5, 6, 7) - - rgba_warp = scalar_field_to_rgba( - field, - 0.0, - 1.0, - max_opacity=0.7, - opacity_threshold=0.2, - implementation="warp", - ) - rgba_torch = scalar_field_to_rgba( - field, - 0.0, - 1.0, - max_opacity=0.7, - opacity_threshold=0.2, - implementation="torch", - ) - - torch.testing.assert_close(rgba_warp, rgba_torch, atol=1, rtol=0) - - -@requires_module("warp") -def test_vector_field_to_rgba_uses_magnitude_and_lic(device: str): - coords = torch.linspace(-1.0, 1.0, 6, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - vector_field = torch.stack([-y, x, 0.25 * torch.ones_like(z)], dim=-1) - lic_field = torch.ones(6, 6, 6, device=device) - - rgba_volume = vector_field_to_rgba( - vector_field, - lic_field, - 0.0, - 1.5, - max_opacity=0.75, - lic_threshold=0.25, - implementation="warp", - ) - - assert rgba_volume.shape == (6, 6, 6, 4) - assert rgba_volume.dtype == torch.uint8 - assert int(rgba_volume[..., 3].max()) > 0 - assert "warp" in VectorFieldToRGBA.available_implementations() - assert "torch" in VectorFieldToRGBA.available_implementations() - - -@requires_module("warp") -def test_vector_field_to_rgba_torch_matches_warp(device: str): - coords = torch.linspace(-1.0, 1.0, 5, device=device) - x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") - vector_field = torch.stack([-y, x, 0.25 + z.square()], dim=-1) - lic_field = torch.linspace(0.0, 1.0, 5 * 5 * 5, device=device).reshape(5, 5, 5) - - rgba_warp = vector_field_to_rgba( - vector_field, - lic_field, - 0.0, - 1.75, - max_opacity=0.65, - lic_threshold=0.3, - implementation="warp", - ) - rgba_torch = vector_field_to_rgba( - vector_field, - lic_field, - 0.0, - 1.75, - max_opacity=0.65, - lic_threshold=0.3, - implementation="torch", - ) - - torch.testing.assert_close(rgba_warp, rgba_torch, atol=1, rtol=0) - - -@requires_module("warp") -def test_volume_render_returns_color_and_depth(device: str): - rgba_volume = torch.zeros(16, 16, 16, 4, device=device, dtype=torch.uint8) - rgba_volume[5:11, 5:11, 5:11, 0] = 255 - rgba_volume[5:11, 5:11, 5:11, 3] = 128 - bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) - bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) - eye, center, up = _camera(device) - - rgba, depth = volume_render( - rgba_volume, - 25, - 25, - eye, - center, - up, - 35.0, - bounds_min, - bounds_max, - step_size=0.08, - max_steps=80, - implementation="warp", - ) - - assert rgba.shape == (25, 25, 4) - assert depth.shape == (25, 25) - assert float(rgba[..., 3].sum()) > 0.0 - assert float(rgba[..., 0].max()) > 0.8 - assert torch.isfinite(depth).any() - assert torch.isinf(depth[0, 0]) - assert "warp" in VolumeRender.available_implementations() - - -@requires_module("warp") -def test_volume_render_accepts_sequence_camera_inputs(device: str): - rgba_volume = torch.zeros(8, 8, 8, 4, device=device, dtype=torch.uint8) - rgba_volume[2:6, 2:6, 2:6, 1] = 255 - rgba_volume[2:6, 2:6, 2:6, 3] = 128 - - rgba, depth = volume_render( - rgba_volume, - 11, - 11, - [0.0, 0.0, -2.5], - [0.0, 0.0, 0.0], - [0.0, 1.0, 0.0], - 35.0, - [-1.0, -1.0, -1.0], - [1.0, 1.0, 1.0], - step_size=0.12, - max_steps=48, - implementation="warp", - ) - - assert rgba.shape == (11, 11, 4) - assert depth.shape == (11, 11) - assert float(rgba[..., 3].sum()) > 0.0 - - -@requires_module("warp") -def test_transfer_and_volume_make_inputs_forward(device: str): - for spec in (ScalarFieldToRGBA, VectorFieldToRGBA, VolumeRender): - label, args, kwargs = next(iter(spec.make_inputs_forward(device))) - assert isinstance(label, str) - assert isinstance(args, tuple) - assert isinstance(kwargs, dict) - output = spec.dispatch(*args, implementation="warp", **kwargs) - assert output is not None - - -@requires_module("warp") -def test_transfer_error_handling(device: str): - field = torch.zeros(4, 4, 4, device=device) - with pytest.raises(ValueError, match="vmax"): - scalar_field_to_rgba(field, 1.0, 1.0, implementation="warp") - - vector_field = torch.zeros(4, 4, 4, 2, device=device) - with pytest.raises(ValueError, match="vector_field"): - vector_field_to_rgba( - vector_field, - torch.zeros(4, 4, 4, device=device), - 0.0, - 1.0, - implementation="warp", - ) diff --git a/test/nn/functional/rendering/test_vector_field_to_rgba.py b/test/nn/functional/rendering/test_vector_field_to_rgba.py new file mode 100644 index 0000000000..f75d9fd4ba --- /dev/null +++ b/test/nn/functional/rendering/test_vector_field_to_rgba.py @@ -0,0 +1,124 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import vector_field_to_rgba +from physicsnemo.nn.functional.rendering import VectorFieldToRGBA +from test.conftest import requires_module + + +def _vector_field(device: torch.device | str, grid_n: int = 6) -> torch.Tensor: + coords = torch.linspace(-1.0, 1.0, grid_n, device=device) + x, y, z = torch.meshgrid(coords, coords, coords, indexing="ij") + return torch.stack([-y, x, 0.25 * torch.ones_like(z)], dim=-1) + + +@requires_module("warp") +def test_vector_field_to_rgba_warp(device: str): + vector_field = _vector_field(device) + lic_field = torch.ones(6, 6, 6, device=device) + + rgba_volume = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.5, + max_opacity=0.75, + lic_threshold=0.25, + implementation="warp", + ) + + assert rgba_volume.shape == (6, 6, 6, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].max()) > 0 + assert "warp" in VectorFieldToRGBA.available_implementations() + assert "torch" in VectorFieldToRGBA.available_implementations() + + +def test_vector_field_to_rgba_torch(): + vector_field = _vector_field("cpu") + lic_field = torch.ones(6, 6, 6) + + rgba_volume = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.5, + max_opacity=0.75, + lic_threshold=0.25, + implementation="torch", + ) + + assert rgba_volume.shape == (6, 6, 6, 4) + assert rgba_volume.dtype == torch.uint8 + assert int(rgba_volume[..., 3].max()) > 0 + + +@requires_module("warp") +def test_vector_field_to_rgba_backend_forward_parity(device: str): + vector_field = _vector_field(device, grid_n=5) + lic_field = torch.linspace(0.0, 1.0, 5 * 5 * 5, device=device).reshape(5, 5, 5) + + rgba_warp = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.75, + max_opacity=0.65, + lic_threshold=0.3, + implementation="warp", + ) + rgba_torch = vector_field_to_rgba( + vector_field, + lic_field, + 0.0, + 1.75, + max_opacity=0.65, + lic_threshold=0.3, + implementation="torch", + ) + + VectorFieldToRGBA.compare_forward(rgba_warp, rgba_torch) + + +def test_vector_field_to_rgba_make_inputs_forward(): + label, args, kwargs = next(iter(VectorFieldToRGBA.make_inputs_forward("cpu"))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = VectorFieldToRGBA.dispatch(*args, implementation="torch", **kwargs) + assert output is not None + + +def test_vector_field_to_rgba_compare_forward_contract(): + reference = torch.zeros(2, 2, 2, 4, dtype=torch.uint8) + output = reference.clone() + VectorFieldToRGBA.compare_forward(output, reference) + + +def test_vector_field_to_rgba_error_handling(): + vector_field = torch.zeros(4, 4, 4, 2) + with pytest.raises(ValueError, match="vector_field"): + vector_field_to_rgba( + vector_field, + torch.zeros(4, 4, 4), + 0.0, + 1.0, + implementation="torch", + ) diff --git a/test/nn/functional/rendering/test_volume_render.py b/test/nn/functional/rendering/test_volume_render.py new file mode 100644 index 0000000000..501c2fed33 --- /dev/null +++ b/test/nn/functional/rendering/test_volume_render.py @@ -0,0 +1,123 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import volume_render +from physicsnemo.nn.functional.rendering import VolumeRender +from test.conftest import requires_module + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.5], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_volume_render_warp(device: str): + rgba_volume = torch.zeros(16, 16, 16, 4, device=device, dtype=torch.uint8) + rgba_volume[5:11, 5:11, 5:11, 0] = 255 + rgba_volume[5:11, 5:11, 5:11, 3] = 128 + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye, center, up = _camera(device) + + rgba, depth = volume_render( + rgba_volume, + 25, + 25, + eye, + center, + up, + 35.0, + bounds_min, + bounds_max, + step_size=0.08, + max_steps=80, + implementation="warp", + ) + + assert rgba.shape == (25, 25, 4) + assert depth.shape == (25, 25) + assert float(rgba[..., 3].sum()) > 0.0 + assert float(rgba[..., 0].max()) > 0.8 + assert torch.isfinite(depth).any() + assert torch.isinf(depth[0, 0]) + assert "warp" in VolumeRender.available_implementations() + + +@requires_module("warp") +def test_volume_render_accepts_sequence_camera_inputs(device: str): + rgba_volume = torch.zeros(8, 8, 8, 4, device=device, dtype=torch.uint8) + rgba_volume[2:6, 2:6, 2:6, 1] = 255 + rgba_volume[2:6, 2:6, 2:6, 3] = 128 + + rgba, depth = volume_render( + rgba_volume, + 11, + 11, + [0.0, 0.0, -2.5], + [0.0, 0.0, 0.0], + [0.0, 1.0, 0.0], + 35.0, + [-1.0, -1.0, -1.0], + [1.0, 1.0, 1.0], + step_size=0.12, + max_steps=48, + implementation="warp", + ) + + assert rgba.shape == (11, 11, 4) + assert depth.shape == (11, 11) + assert float(rgba[..., 3].sum()) > 0.0 + + +@requires_module("warp") +def test_volume_render_make_inputs_forward(device: str): + label, args, kwargs = next(iter(VolumeRender.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = VolumeRender.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_volume_render_error_handling(device: str): + rgba_volume = torch.zeros(8, 8, 8, 4, device=device, dtype=torch.uint8) + bounds_min = torch.tensor([-1.0, -1.0, -1.0], device=device) + bounds_max = torch.tensor([1.0, 1.0, 1.0], device=device) + eye, center, up = _camera(device) + + with pytest.raises(ValueError, match="step_size"): + volume_render( + rgba_volume, + 11, + 11, + eye, + center, + up, + 35.0, + bounds_min, + bounds_max, + step_size=0.0, + implementation="warp", + ) diff --git a/test/nn/functional/rendering/test_wireframe_render.py b/test/nn/functional/rendering/test_wireframe_render.py new file mode 100644 index 0000000000..c0ce4f3c20 --- /dev/null +++ b/test/nn/functional/rendering/test_wireframe_render.py @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch + +from physicsnemo.nn.functional import wireframe_render +from physicsnemo.nn.functional.rendering import WireframeRender +from test.conftest import requires_module + + +def _camera(device: str) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return ( + torch.tensor([0.0, 0.0, -2.0], device=device), + torch.tensor([0.0, 0.0, 0.0], device=device), + torch.tensor([0.0, 1.0, 0.0], device=device), + ) + + +@requires_module("warp") +def test_wireframe_render_warp(device: str): + edges = torch.tensor( + [[[-0.5, -0.5, 0.0], [0.5, 0.5, 0.0]]], + device=device, + dtype=torch.float32, + ) + eye, center, up = _camera(device) + + rgba, depth = wireframe_render( + edges, + 21, + 21, + eye, + center, + up, + 45.0, + line_color=torch.tensor([0.8, 0.7, 0.2], device=device), + implementation="warp", + ) + + assert rgba.shape == (21, 21, 4) + assert depth.shape == (21, 21) + assert float(rgba[..., 3].sum()) > 0.0 + assert torch.isfinite(depth).any() + assert "warp" in WireframeRender.available_implementations() + + +@requires_module("warp") +def test_wireframe_render_make_inputs_forward(device: str): + label, args, kwargs = next(iter(WireframeRender.make_inputs_forward(device))) + assert isinstance(label, str) + assert isinstance(args, tuple) + assert isinstance(kwargs, dict) + + output = WireframeRender.dispatch(*args, implementation="warp", **kwargs) + assert output is not None + + +@requires_module("warp") +def test_wireframe_render_error_handling(device: str): + eye, center, up = _camera(device) + + with pytest.raises(ValueError, match="line_thickness"): + wireframe_render( + torch.zeros(1, 2, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + line_thickness=0, + implementation="warp", + ) + + with pytest.raises(ValueError, match="at least one edge"): + wireframe_render( + torch.zeros(0, 2, 3, device=device), + 16, + 16, + eye, + center, + up, + 45.0, + implementation="warp", + ) From fe6ff580dd0158e257daf7be29e7b83304f97cb7 Mon Sep 17 00:00:00 2001 From: Oliver Hennigh Date: Thu, 7 May 2026 15:44:59 -0700 Subject: [PATCH 6/6] Move rendering backends into functional packages --- .../nn/functional/rendering/_torch_ops.py | 104 - .../nn/functional/rendering/_warp_ops.py | 2088 ----------------- .../rendering/isosurface_render/__init__.py | 12 + .../rendering/isosurface_render/_warp_impl.py | 297 ++- .../line_integral_convolution/__init__.py | 12 + .../line_integral_convolution/_warp_impl.py | 164 +- .../rendering/mesh_raycast/__init__.py | 12 + .../rendering/mesh_raycast/_warp_impl.py | 271 ++- .../rendering/point_cloud_render/__init__.py | 12 + .../point_cloud_render/_warp_impl.py | 257 +- .../scalar_field_to_rgba/__init__.py | 12 + .../scalar_field_to_rgba/_torch_impl.py | 64 +- .../scalar_field_to_rgba/_warp_impl.py | 122 +- physicsnemo/nn/functional/rendering/utils.py | 615 +++++ .../vector_field_to_rgba/__init__.py | 12 + .../vector_field_to_rgba/_torch_impl.py | 76 +- .../vector_field_to_rgba/_warp_impl.py | 144 +- .../rendering/volume_render/__init__.py | 12 + .../rendering/volume_render/_warp_impl.py | 230 +- .../rendering/wireframe_render/__init__.py | 12 + .../rendering/wireframe_render/_warp_impl.py | 259 +- 21 files changed, 2585 insertions(+), 2202 deletions(-) delete mode 100644 physicsnemo/nn/functional/rendering/_torch_ops.py delete mode 100644 physicsnemo/nn/functional/rendering/_warp_ops.py create mode 100644 physicsnemo/nn/functional/rendering/utils.py diff --git a/physicsnemo/nn/functional/rendering/_torch_ops.py b/physicsnemo/nn/functional/rendering/_torch_ops.py deleted file mode 100644 index e162b3a3f5..0000000000 --- a/physicsnemo/nn/functional/rendering/_torch_ops.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import math - -import torch - - -def _validate_transfer_range(vmin: float, vmax: float) -> None: - if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: - raise ValueError("vmax must be greater than vmin") - - -def _validate_opacity(value: float, *, name: str) -> None: - if not math.isfinite(value) or value < 0.0 or value > 1.0: - raise ValueError(f"{name} must lie in the closed interval [0, 1]") - - -def _jet_colormap(value: torch.Tensor) -> torch.Tensor: - red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) - green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) - blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) - return torch.stack([red, green, blue], dim=-1) - - -def _rgba_to_uint8(color: torch.Tensor, alpha: torch.Tensor) -> torch.Tensor: - rgba = torch.cat([color, alpha.unsqueeze(-1)], dim=-1) - return (rgba * 255.0).clamp(0.0, 255.0).to(torch.uint8) - - -def scalar_field_to_rgba_torch( - field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - opacity_threshold: float = 0.1, -) -> torch.Tensor: - """Map a scalar volume to a uint8 RGBA transfer-function volume.""" - if field.ndim != 3: - raise ValueError( - f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" - ) - _validate_transfer_range(vmin, vmax) - _validate_opacity(max_opacity, name="max_opacity") - _validate_opacity(opacity_threshold, name="opacity_threshold") - - value = ((field.to(torch.float32) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) - color = _jet_colormap(value) - alpha = torch.where(value < opacity_threshold, torch.zeros_like(value), value) - alpha = (alpha * max_opacity).clamp(0.0, 1.0) - return _rgba_to_uint8(color, alpha) - - -def vector_field_to_rgba_torch( - vector_field: torch.Tensor, - lic_field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - lic_threshold: float = 0.5, -) -> torch.Tensor: - """Map vector magnitude and LIC values to a uint8 RGBA volume.""" - if vector_field.ndim != 4 or vector_field.shape[-1] != 3: - raise ValueError( - "vector_field must have shape (nx, ny, nz, 3), got " - f"{tuple(vector_field.shape)}" - ) - if lic_field.shape != vector_field.shape[:3]: - raise ValueError( - "lic_field must have shape matching vector_field spatial dimensions" - ) - _validate_transfer_range(vmin, vmax) - _validate_opacity(max_opacity, name="max_opacity") - _validate_opacity(lic_threshold, name="lic_threshold") - - vector_fp32 = vector_field.to(torch.float32) - normalized = ((vector_fp32.norm(dim=-1) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) - color = _jet_colormap(normalized) - lic_value = lic_field.to(device=vector_field.device, dtype=torch.float32).clamp( - 0.0, 1.0 - ) - lic_value = torch.where( - lic_value < lic_threshold, torch.zeros_like(lic_value), lic_value - ) - alpha = (lic_value * normalized * max_opacity).clamp(0.0, 1.0) - return _rgba_to_uint8(color, alpha) - - -__all__ = ["scalar_field_to_rgba_torch", "vector_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/_warp_ops.py b/physicsnemo/nn/functional/rendering/_warp_ops.py deleted file mode 100644 index 2476544d08..0000000000 --- a/physicsnemo/nn/functional/rendering/_warp_ops.py +++ /dev/null @@ -1,2088 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. -# SPDX-FileCopyrightText: All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import annotations - -import math -from collections.abc import Sequence - -import torch -import warp as wp - -from physicsnemo.core.function_spec import FunctionSpec - -wp.init() -wp.config.quiet = True - - -def _normalize_torch(vector: torch.Tensor, eps: float = 1.0e-12) -> torch.Tensor: - return vector / vector.norm(dim=-1, keepdim=True).clamp_min(eps) - - -def _as_vec3( - value: torch.Tensor | Sequence[float], *, name: str, device -) -> torch.Tensor: - if isinstance(value, torch.Tensor): - value = value.to(device=device, dtype=torch.float32, non_blocking=True) - else: - value = torch.tensor(value, device=device, dtype=torch.float32) - if value.shape != (3,): - raise ValueError(f"{name} must have shape (3,), got {tuple(value.shape)}") - return value - - -def _optional_tensor_arg(value: torch.Tensor | Sequence[float] | None, *, device): - if value is None: - return None - if isinstance(value, torch.Tensor): - return value.to(device=device, non_blocking=True) - return torch.as_tensor(value, device=device) - - -def _camera_basis( - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - *, - device, -) -> torch.Tensor: - eye = _as_vec3(eye, name="eye", device=device) - center = _as_vec3(center, name="center", device=device) - up = _as_vec3(up, name="up", device=device) - forward_raw = center - eye - if forward_raw.device.type == "cpu" and bool( - (forward_raw.norm() <= 1.0e-12).item() - ): - raise ValueError("eye and center must not be equal") - forward = _normalize_torch(forward_raw) - up_hint = _normalize_torch(up) - right_raw = torch.linalg.cross(up_hint, forward, dim=0) - if right_raw.device.type == "cpu" and bool((right_raw.norm() <= 1.0e-12).item()): - raise ValueError("up must not be parallel to the camera direction") - right = _normalize_torch(right_raw) - camera_up = _normalize_torch(torch.linalg.cross(forward, right, dim=0)) - return torch.stack([eye, forward, right, camera_up]).contiguous() - - -def _bounds_tensor( - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - *, - device, -) -> torch.Tensor: - bounds_min = _as_vec3(bounds_min, name="bounds_min", device=device) - bounds_max = _as_vec3(bounds_max, name="bounds_max", device=device) - if bounds_min.device.type == "cpu" and bool( - torch.any(bounds_max <= bounds_min).item() - ): - raise ValueError("bounds_max must be greater than bounds_min in all dimensions") - return torch.stack([bounds_min, bounds_max]).contiguous() - - -def _color_tensor( - color: torch.Tensor | None, - *, - device, - shape_name: str, - expected_rank: int, -) -> torch.Tensor: - if color is None: - return torch.zeros((1,) * (expected_rank - 1) + (4,), device=device) - if color.ndim != expected_rank or color.shape[-1] not in (3, 4): - raise ValueError( - f"{shape_name} must have shape (..., 3) or (..., 4), got {tuple(color.shape)}" - ) - color = color.to(device=device) - if color.dtype == torch.uint8: - color = color.to(torch.float32) / 255.0 - else: - color = color.to(torch.float32) - if color.shape[-1] == 3: - alpha = torch.ones(*color.shape[:-1], 1, device=device, dtype=torch.float32) - color = torch.cat([color, alpha], dim=-1) - return color.contiguous().clamp(0.0, 1.0) - - -def _uniform_color_tensor( - surface_color: torch.Tensor | None, - *, - device, -) -> torch.Tensor: - if surface_color is None: - color = torch.tensor([[1.0, 1.0, 1.0, 1.0]], device=device) - else: - color = torch.as_tensor(surface_color, device=device) - if color.shape not in ((3,), (4,)): - raise ValueError( - f"surface_color must have shape (3,) or (4,), got {tuple(color.shape)}" - ) - if color.dtype == torch.uint8: - color = color.to(torch.float32) / 255.0 - else: - color = color.to(torch.float32) - if color.shape == (3,): - color = torch.cat([color, torch.ones(1, device=device)]) - color = color.reshape(1, 4) - return color.contiguous().clamp(0.0, 1.0) - - -def _light_tensor(light_direction: torch.Tensor | None, *, device) -> torch.Tensor: - if light_direction is None: - light_direction = torch.tensor([-0.45, 0.75, -1.0], device=device) - light_direction = _as_vec3( - light_direction, name="light_direction", device=device - ).reshape(1, 3) - return _normalize_torch(light_direction).contiguous() - - -@wp.func -def _normalize_vec3(vector: wp.vec3) -> wp.vec3: - length = wp.length(vector) - if length <= 1.0e-12: - return wp.vec3(0.0, 0.0, 0.0) - return vector / length - - -@wp.func -def _clamp_int(value: int, lo: int, hi: int) -> int: - return wp.min(wp.max(value, lo), hi) - - -@wp.func -def _make_ray_direction( - tid: int, - width: int, - height: int, - camera: wp.array(dtype=wp.vec3), - tan_half_fov: wp.float32, - aspect: wp.float32, -) -> wp.vec3: - y = tid / width - x = tid - y * width - px = ((wp.float32(x) + 0.5) / wp.float32(width)) * 2.0 - 1.0 - py = 1.0 - (((wp.float32(y) + 0.5) / wp.float32(height)) * 2.0) - px = px * tan_half_fov * aspect - py = py * tan_half_fov - return _normalize_vec3(camera[1] + px * camera[2] + py * camera[3]) - - -@wp.func -def _sample_field_trilinear( - field: wp.array3d(dtype=wp.float32), - point: wp.vec3, - bounds_min: wp.vec3, - bounds_max: wp.vec3, - nx: int, - ny: int, - nz: int, -) -> wp.float32: - sx = ( - (point[0] - bounds_min[0]) - / (bounds_max[0] - bounds_min[0]) - * wp.float32(nx - 1) - ) - sy = ( - (point[1] - bounds_min[1]) - / (bounds_max[1] - bounds_min[1]) - * wp.float32(ny - 1) - ) - sz = ( - (point[2] - bounds_min[2]) - / (bounds_max[2] - bounds_min[2]) - * wp.float32(nz - 1) - ) - - i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) - j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) - k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) - i1 = i0 + 1 - j1 = j0 + 1 - k1 = k0 + 1 - - fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) - fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) - fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) - - c000 = field[i0, j0, k0] - c100 = field[i1, j0, k0] - c010 = field[i0, j1, k0] - c110 = field[i1, j1, k0] - c001 = field[i0, j0, k1] - c101 = field[i1, j0, k1] - c011 = field[i0, j1, k1] - c111 = field[i1, j1, k1] - - c00 = c000 * (1.0 - fx) + c100 * fx - c10 = c010 * (1.0 - fx) + c110 * fx - c01 = c001 * (1.0 - fx) + c101 * fx - c11 = c011 * (1.0 - fx) + c111 * fx - c0 = c00 * (1.0 - fy) + c10 * fy - c1 = c01 * (1.0 - fy) + c11 * fy - return c0 * (1.0 - fz) + c1 * fz - - -@wp.func -def _sample_color_trilinear( - colors: wp.array4d(dtype=wp.float32), - point: wp.vec3, - bounds_min: wp.vec3, - bounds_max: wp.vec3, - nx: int, - ny: int, - nz: int, -) -> wp.vec4: - sx = ( - (point[0] - bounds_min[0]) - / (bounds_max[0] - bounds_min[0]) - * wp.float32(nx - 1) - ) - sy = ( - (point[1] - bounds_min[1]) - / (bounds_max[1] - bounds_min[1]) - * wp.float32(ny - 1) - ) - sz = ( - (point[2] - bounds_min[2]) - / (bounds_max[2] - bounds_min[2]) - * wp.float32(nz - 1) - ) - - i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) - j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) - k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) - i1 = i0 + 1 - j1 = j0 + 1 - k1 = k0 + 1 - - fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) - fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) - fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) - - out = wp.vec4(0.0, 0.0, 0.0, 0.0) - for channel in range(4): - c000 = colors[i0, j0, k0, channel] - c100 = colors[i1, j0, k0, channel] - c010 = colors[i0, j1, k0, channel] - c110 = colors[i1, j1, k0, channel] - c001 = colors[i0, j0, k1, channel] - c101 = colors[i1, j0, k1, channel] - c011 = colors[i0, j1, k1, channel] - c111 = colors[i1, j1, k1, channel] - - c00 = c000 * (1.0 - fx) + c100 * fx - c10 = c010 * (1.0 - fx) + c110 * fx - c01 = c001 * (1.0 - fx) + c101 * fx - c11 = c011 * (1.0 - fx) + c111 * fx - c0 = c00 * (1.0 - fy) + c10 * fy - c1 = c01 * (1.0 - fy) + c11 * fy - out[channel] = c0 * (1.0 - fz) + c1 * fz - return out - - -@wp.func -def _field_gradient( - field: wp.array3d(dtype=wp.float32), - point: wp.vec3, - bounds_min: wp.vec3, - bounds_max: wp.vec3, - nx: int, - ny: int, - nz: int, -) -> wp.vec3: - dx = (bounds_max[0] - bounds_min[0]) / wp.float32(nx - 1) - dy = (bounds_max[1] - bounds_min[1]) / wp.float32(ny - 1) - dz = (bounds_max[2] - bounds_min[2]) / wp.float32(nz - 1) - gx = ( - _sample_field_trilinear( - field, - point + wp.vec3(0.5 * dx, 0.0, 0.0), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - - _sample_field_trilinear( - field, - point - wp.vec3(0.5 * dx, 0.0, 0.0), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - ) / dx - gy = ( - _sample_field_trilinear( - field, - point + wp.vec3(0.0, 0.5 * dy, 0.0), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - - _sample_field_trilinear( - field, - point - wp.vec3(0.0, 0.5 * dy, 0.0), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - ) / dy - gz = ( - _sample_field_trilinear( - field, - point + wp.vec3(0.0, 0.0, 0.5 * dz), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - - _sample_field_trilinear( - field, - point - wp.vec3(0.0, 0.0, 0.5 * dz), - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - ) / dz - return wp.vec3(gx, gy, gz) - - -@wp.func -def _axis_intersection( - origin: wp.float32, - direction: wp.float32, - lo: wp.float32, - hi: wp.float32, -) -> wp.vec3: - if wp.abs(direction) < 1.0e-12: - if origin < lo or origin > hi: - return wp.vec3(1.0, 0.0, 0.0) - return wp.vec3(0.0, -3.402823e38, 3.402823e38) - - inv_d = 1.0 / direction - t0 = (lo - origin) * inv_d - t1 = (hi - origin) * inv_d - return wp.vec3(0.0, wp.min(t0, t1), wp.max(t0, t1)) - - -@wp.func -def _ray_box_intersection( - origin: wp.vec3, - direction: wp.vec3, - bounds_min: wp.vec3, - bounds_max: wp.vec3, -) -> wp.vec3: - x = _axis_intersection(origin[0], direction[0], bounds_min[0], bounds_max[0]) - y = _axis_intersection(origin[1], direction[1], bounds_min[1], bounds_max[1]) - z = _axis_intersection(origin[2], direction[2], bounds_min[2], bounds_max[2]) - - miss = x[0] + y[0] + z[0] - t_near = wp.max(0.0, wp.max(x[1], wp.max(y[1], z[1]))) - t_far = wp.min(x[2], wp.min(y[2], z[2])) - if miss > 0.0 or t_far < t_near: - return wp.vec3(0.0, 0.0, -1.0) - return wp.vec3(1.0, t_near, t_far) - - -@wp.func -def _shade( - color: wp.vec4, - normal: wp.vec3, - light_direction: wp.vec3, - ambient: wp.float32, -) -> wp.vec4: - diffuse = wp.max(wp.dot(normal, light_direction), 0.0) - intensity = ambient + (1.0 - ambient) * diffuse - return wp.vec4( - color[0] * intensity, - color[1] * intensity, - color[2] * intensity, - color[3], - ) - - -@wp.func -def _jet_colormap(value: wp.float32) -> wp.vec3: - r = wp.min(4.0 * value - 1.5, -4.0 * value + 4.5) - g = wp.min(4.0 * value - 0.5, -4.0 * value + 3.5) - b = wp.min(4.0 * value + 0.5, -4.0 * value + 2.5) - return wp.vec3( - wp.min(wp.max(r, 0.0), 1.0), - wp.min(wp.max(g, 0.0), 1.0), - wp.min(wp.max(b, 0.0), 1.0), - ) - - -@wp.func -def _sample_seed_trilinear( - seed: wp.array3d(dtype=wp.float32), - pos: wp.vec3, - nx: int, - ny: int, - nz: int, -) -> wp.float32: - i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) - j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) - k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) - i1 = _clamp_int(i0 + 1, 0, nx - 1) - j1 = _clamp_int(j0 + 1, 0, ny - 1) - k1 = _clamp_int(k0 + 1, 0, nz - 1) - - fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) - fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) - fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) - - c000 = seed[i0, j0, k0] - c100 = seed[i1, j0, k0] - c010 = seed[i0, j1, k0] - c110 = seed[i1, j1, k0] - c001 = seed[i0, j0, k1] - c101 = seed[i1, j0, k1] - c011 = seed[i0, j1, k1] - c111 = seed[i1, j1, k1] - - c00 = c000 * (1.0 - fx) + c100 * fx - c10 = c010 * (1.0 - fx) + c110 * fx - c01 = c001 * (1.0 - fx) + c101 * fx - c11 = c011 * (1.0 - fx) + c111 * fx - c0 = c00 * (1.0 - fy) + c10 * fy - c1 = c01 * (1.0 - fy) + c11 * fy - return c0 * (1.0 - fz) + c1 * fz - - -@wp.func -def _sample_vector_trilinear( - vector_field: wp.array4d(dtype=wp.float32), - pos: wp.vec3, - nx: int, - ny: int, - nz: int, -) -> wp.vec3: - i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) - j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) - k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) - i1 = _clamp_int(i0 + 1, 0, nx - 1) - j1 = _clamp_int(j0 + 1, 0, ny - 1) - k1 = _clamp_int(k0 + 1, 0, nz - 1) - - fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) - fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) - fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) - - result = wp.vec3(0.0, 0.0, 0.0) - for channel in range(3): - c000 = vector_field[i0, j0, k0, channel] - c100 = vector_field[i1, j0, k0, channel] - c010 = vector_field[i0, j1, k0, channel] - c110 = vector_field[i1, j1, k0, channel] - c001 = vector_field[i0, j0, k1, channel] - c101 = vector_field[i1, j0, k1, channel] - c011 = vector_field[i0, j1, k1, channel] - c111 = vector_field[i1, j1, k1, channel] - - c00 = c000 * (1.0 - fx) + c100 * fx - c10 = c010 * (1.0 - fx) + c110 * fx - c01 = c001 * (1.0 - fx) + c101 * fx - c11 = c011 * (1.0 - fx) + c111 * fx - c0 = c00 * (1.0 - fy) + c10 * fy - c1 = c01 * (1.0 - fy) + c11 * fy - result[channel] = c0 * (1.0 - fz) + c1 * fz - return result - - -@wp.func -def _project_point( - point: wp.vec3, - camera: wp.array(dtype=wp.vec3), - width: int, - height: int, - tan_half_fov: wp.float32, - aspect: wp.float32, -) -> wp.vec4: - rel = point - camera[0] - z = wp.dot(rel, camera[1]) - x = wp.dot(rel, camera[2]) - y = wp.dot(rel, camera[3]) - if z <= 1.0e-12: - return wp.vec4(0.0, 0.0, z, 0.0) - screen_x = (x / (z * tan_half_fov * aspect) + 1.0) * 0.5 * wp.float32(width) - screen_y = (1.0 - (y / (z * tan_half_fov) + 1.0) * 0.5) * wp.float32(height) - return wp.vec4(screen_x, screen_y, z, 1.0) - - -@wp.kernel -def _scalar_field_to_rgba_kernel( - field: wp.array3d(dtype=wp.float32), - vmin: wp.float32, - vmax: wp.float32, - max_opacity: wp.float32, - opacity_threshold: wp.float32, - nx: int, - ny: int, - nz: int, - rgba_volume: wp.array4d(dtype=wp.uint8), -): - i, j, k = wp.tid() - value = (field[i, j, k] - vmin) / (vmax - vmin) - value = wp.min(wp.max(value, 0.0), 1.0) - color = _jet_colormap(value) - - alpha = value - if alpha < opacity_threshold: - alpha = 0.0 - alpha = wp.min(wp.max(alpha * max_opacity, 0.0), 1.0) - - rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) - rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) - rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) - rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) - - -@wp.kernel -def _line_integral_convolution_kernel( - vector_field: wp.array4d(dtype=wp.float32), - seed: wp.array3d(dtype=wp.float32), - step_size: wp.float32, - num_steps: int, - contrast: wp.float32, - nx: int, - ny: int, - nz: int, - line_integral: wp.array3d(dtype=wp.float32), -): - i, j, k = wp.tid() - pos = wp.vec3(wp.float32(i), wp.float32(j), wp.float32(k)) - - total = seed[i, j, k] - total_weight = wp.float32(1.0) - - for direction_sign in range(2): - direction_scale = wp.float32(1.0) - if direction_sign == 1: - direction_scale = -1.0 - - current = pos - for step in range(num_steps): - vector = _sample_vector_trilinear(vector_field, current, nx, ny, nz) - vector_length = wp.length(vector) - if vector_length <= 1.0e-6: - break - vector = direction_scale * vector / vector_length - - mid = current + 0.5 * step_size * vector - mid_vector = _sample_vector_trilinear(vector_field, mid, nx, ny, nz) - mid_length = wp.length(mid_vector) - if mid_length <= 1.0e-6: - break - mid_vector = direction_scale * mid_vector / mid_length - current = current + step_size * mid_vector - - if ( - current[0] < 0.0 - or current[0] > wp.float32(nx - 1) - or current[1] < 0.0 - or current[1] > wp.float32(ny - 1) - or current[2] < 0.0 - or current[2] > wp.float32(nz - 1) - ): - break - - normalized_step = wp.float32(step + 1) / wp.float32(num_steps + 1) - weight = 1.0 - normalized_step - total += _sample_seed_trilinear(seed, current, nx, ny, nz) * weight - total_weight += weight - - value = total / wp.max(total_weight, 1.0e-6) - value = wp.min(wp.max(value, 0.0), 1.0) - value = (value - 0.5) * contrast + 0.5 - line_integral[i, j, k] = wp.min(wp.max(value, 0.0), 1.0) - - -@wp.kernel -def _vector_field_to_rgba_kernel( - vector_field: wp.array4d(dtype=wp.float32), - lic_field: wp.array3d(dtype=wp.float32), - vmin: wp.float32, - vmax: wp.float32, - max_opacity: wp.float32, - lic_threshold: wp.float32, - nx: int, - ny: int, - nz: int, - rgba_volume: wp.array4d(dtype=wp.uint8), -): - i, j, k = wp.tid() - vx = vector_field[i, j, k, 0] - vy = vector_field[i, j, k, 1] - vz = vector_field[i, j, k, 2] - magnitude = wp.sqrt(vx * vx + vy * vy + vz * vz) - normalized = wp.min(wp.max((magnitude - vmin) / (vmax - vmin), 0.0), 1.0) - color = _jet_colormap(normalized) - - lic_value = wp.min(wp.max(lic_field[i, j, k], 0.0), 1.0) - if lic_value < lic_threshold: - lic_value = 0.0 - alpha = wp.min(wp.max(lic_value * normalized * max_opacity, 0.0), 1.0) - - rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) - rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) - rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) - rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) - - -@wp.kernel -def _volume_render_kernel( - rgba_volume: wp.array4d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - bounds: wp.array(dtype=wp.vec3), - width: int, - height: int, - step_size: wp.float32, - max_steps: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - opacity_threshold: wp.float32, - depth_threshold: wp.float32, - nx: int, - ny: int, - nz: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), -): - tid = wp.tid() - ray_origin = camera[0] - ray_direction = _make_ray_direction( - tid, width, height, camera, tan_half_fov, aspect - ) - bounds_min = bounds[0] - bounds_max = bounds[1] - intersection = _ray_box_intersection( - ray_origin, ray_direction, bounds_min, bounds_max - ) - - if intersection[0] <= 0.0: - rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) - depth[tid] = 3.402823e38 - return - - accum = wp.vec4(0.0, 0.0, 0.0, 0.0) - first_depth = wp.float32(3.402823e38) - t = intersection[1] - for _ in range(max_steps): - if t > intersection[2] or accum[3] >= opacity_threshold: - break - sample = _sample_color_trilinear( - rgba_volume, - ray_origin + t * ray_direction, - bounds_min, - bounds_max, - nx, - ny, - nz, - ) - sample_alpha = wp.min(wp.max(sample[3], 0.0), 1.0) - if sample_alpha > 0.0: - opacity = (1.0 - accum[3]) * sample_alpha - accum[0] += sample[0] * opacity - accum[1] += sample[1] * opacity - accum[2] += sample[2] * opacity - accum[3] += opacity - if first_depth >= 3.0e38 and accum[3] >= depth_threshold: - first_depth = t - t += step_size - - if accum[3] <= 0.0: - rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) - depth[tid] = 3.402823e38 - return - - rgba[tid] = wp.vec4( - accum[0] / accum[3], - accum[1] / accum[3], - accum[2] / accum[3], - accum[3], - ) - depth[tid] = first_depth - - -@wp.func -def _write_depth_tested_pixel( - x: int, - y: int, - z: wp.float32, - color: wp.vec4, - width: int, - height: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), -): - if x >= 0 and x < width and y >= 0 and y < height: - index = y * width + x - old_depth = wp.atomic_min(depth, index, z) - if z <= old_depth: - rgba[index] = color - - -@wp.kernel -def _point_cloud_depth_kernel( - points: wp.array2d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - width: int, - height: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - near: wp.float32, - far: wp.float32, - point_size: int, - num_points: int, - depth_scale: wp.float32, - winners: wp.array(dtype=wp.int64), -): - tid = wp.tid() - point = wp.vec3(points[tid, 0], points[tid, 1], points[tid, 2]) - projected = _project_point(point, camera, width, height, tan_half_fov, aspect) - z = projected[2] - if z <= near or z >= far: - return - - radius = point_size / 2 - center_x = int(projected[0]) - center_y = int(projected[1]) - key = wp.int64(z * depth_scale) * wp.int64(num_points) + wp.int64(tid) - for dy in range(-radius, radius + 1): - for dx in range(-radius, radius + 1): - x = center_x + dx - y = center_y + dy - if x >= 0 and x < width and y >= 0 and y < height: - wp.atomic_min(winners, y * width + x, key) - - -@wp.kernel -def _point_cloud_resolve_kernel( - points: wp.array2d(dtype=wp.float32), - colors: wp.array2d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - uniform_color: wp.array(dtype=wp.vec4), - width: int, - height: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - has_point_colors: bool, - num_points: int, - empty_key: wp.int64, - winners: wp.array(dtype=wp.int64), - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), -): - tid = wp.tid() - key = winners[tid] - if key == empty_key: - return - - point_id = int(key % wp.int64(num_points)) - point = wp.vec3(points[point_id, 0], points[point_id, 1], points[point_id, 2]) - projected = _project_point(point, camera, width, height, tan_half_fov, aspect) - - color = uniform_color[0] - if has_point_colors: - color = wp.vec4( - colors[point_id, 0], - colors[point_id, 1], - colors[point_id, 2], - colors[point_id, 3], - ) - rgba[tid] = color - depth[tid] = projected[2] - - -@wp.func -def _draw_line_depth_tested( - x0: int, - y0: int, - x1: int, - y1: int, - z0: wp.float32, - z1: wp.float32, - width: int, - height: int, - color: wp.vec4, - thickness: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), -): - dx = wp.abs(x1 - x0) - dy = wp.abs(y1 - y0) - sx = wp.int32(1) - if x0 > x1: - sx = -1 - sy = wp.int32(1) - if y0 > y1: - sy = -1 - err = dx - dy - steps = wp.max(dx, dy) - radius = thickness / 2 - x = x0 - y = y0 - - for step in range(8192): - if step > steps: - break - alpha = wp.float32(0.0) - if steps > 0: - alpha = wp.float32(step) / wp.float32(steps) - z = z0 * (1.0 - alpha) + z1 * alpha - for oy in range(-radius, radius + 1): - for ox in range(-radius, radius + 1): - _write_depth_tested_pixel( - x + ox, y + oy, z, color, width, height, rgba, depth - ) - - if x == x1 and y == y1: - break - e2 = 2 * err - if e2 > -dy: - err -= dy - x += sx - if e2 < dx: - err += dx - y += sy - - -@wp.kernel -def _wireframe_render_kernel( - edges: wp.array2d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - uniform_color: wp.array(dtype=wp.vec4), - width: int, - height: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - near: wp.float32, - far: wp.float32, - line_thickness: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), -): - tid = wp.tid() - p0 = wp.vec3(edges[tid, 0], edges[tid, 1], edges[tid, 2]) - p1 = wp.vec3(edges[tid, 3], edges[tid, 4], edges[tid, 5]) - s0 = _project_point(p0, camera, width, height, tan_half_fov, aspect) - s1 = _project_point(p1, camera, width, height, tan_half_fov, aspect) - - if s0[2] <= near or s0[2] >= far or s1[2] <= near or s1[2] >= far: - return - - _draw_line_depth_tested( - int(s0[0]), - int(s0[1]), - int(s1[0]), - int(s1[1]), - s0[2], - s1[2], - width, - height, - uniform_color[0], - line_thickness, - rgba, - depth, - ) - - -@wp.kernel -def _isosurface_render_kernel( - field: wp.array3d(dtype=wp.float32), - color_field: wp.array4d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - bounds: wp.array(dtype=wp.vec3), - uniform_color: wp.array(dtype=wp.vec4), - light: wp.array(dtype=wp.vec3), - width: int, - height: int, - threshold: wp.float32, - step_size: wp.float32, - max_steps: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - ambient: wp.float32, - has_color_field: bool, - nx: int, - ny: int, - nz: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), - normal_out: wp.array(dtype=wp.vec3), -): - tid = wp.tid() - ray_origin = camera[0] - ray_direction = _make_ray_direction( - tid, width, height, camera, tan_half_fov, aspect - ) - bounds_min = bounds[0] - bounds_max = bounds[1] - intersection = _ray_box_intersection( - ray_origin, ray_direction, bounds_min, bounds_max - ) - - if intersection[0] <= 0.0: - rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) - depth[tid] = 3.402823e38 - normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) - return - - t_far = intersection[2] - prev_t = intersection[1] - prev_point = ray_origin + prev_t * ray_direction - prev_value = _sample_field_trilinear( - field, prev_point, bounds_min, bounds_max, nx, ny, nz - ) - - found = bool(False) - hit_t = wp.float32(3.402823e38) - - for _ in range(max_steps): - if found: - break - next_t = prev_t + step_size - if next_t > t_far: - break - - next_point = ray_origin + next_t * ray_direction - next_value = _sample_field_trilinear( - field, next_point, bounds_min, bounds_max, nx, ny, nz - ) - if (prev_value - threshold) * (next_value - threshold) <= 0.0: - denom = next_value - prev_value - if wp.abs(denom) < 1.0e-7: - if denom < 0.0: - denom = -1.0e-7 - else: - denom = 1.0e-7 - alpha = wp.min(wp.max((threshold - prev_value) / denom, 0.0), 1.0) - hit_t = prev_t + alpha * step_size - found = True - - prev_t = next_t - prev_value = next_value - - if not found: - rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) - depth[tid] = 3.402823e38 - normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) - return - - hit_point = ray_origin + hit_t * ray_direction - normal = _normalize_vec3( - _field_gradient(field, hit_point, bounds_min, bounds_max, nx, ny, nz) - ) - if wp.dot(normal, ray_direction) > 0.0: - normal = -normal - - color = uniform_color[0] - if has_color_field: - color = _sample_color_trilinear( - color_field, hit_point, bounds_min, bounds_max, nx, ny, nz - ) - - rgba[tid] = _shade(color, normal, light[0], ambient) - depth[tid] = hit_t - normal_out[tid] = normal - - -@wp.kernel -def _mesh_raycast_kernel( - mesh_id: wp.uint64, - color_values: wp.array2d(dtype=wp.float32), - camera: wp.array(dtype=wp.vec3), - uniform_color: wp.array(dtype=wp.vec4), - light: wp.array(dtype=wp.vec3), - width: int, - height: int, - tan_half_fov: wp.float32, - aspect: wp.float32, - max_distance: wp.float32, - ambient: wp.float32, - color_mode: int, - rgba: wp.array(dtype=wp.vec4), - depth: wp.array(dtype=wp.float32), - normal_out: wp.array(dtype=wp.vec3), -): - tid = wp.tid() - ray_origin = camera[0] - ray_direction = _make_ray_direction( - tid, width, height, camera, tan_half_fov, aspect - ) - query = wp.mesh_query_ray(mesh_id, ray_origin, ray_direction, max_distance) - - if not query.result: - rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) - depth[tid] = 3.402823e38 - normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) - return - - normal = _normalize_vec3(query.normal) - if wp.dot(normal, ray_direction) > 0.0: - normal = -normal - - color = uniform_color[0] - if color_mode == 1: - mesh = wp.mesh_get(mesh_id) - i0 = mesh.indices[3 * query.face + 0] - i1 = mesh.indices[3 * query.face + 1] - i2 = mesh.indices[3 * query.face + 2] - w0 = query.u - w1 = query.v - w2 = 1.0 - query.u - query.v - color = wp.vec4( - w0 * color_values[i0, 0] - + w1 * color_values[i1, 0] - + w2 * color_values[i2, 0], - w0 * color_values[i0, 1] - + w1 * color_values[i1, 1] - + w2 * color_values[i2, 1], - w0 * color_values[i0, 2] - + w1 * color_values[i1, 2] - + w2 * color_values[i2, 2], - w0 * color_values[i0, 3] - + w1 * color_values[i1, 3] - + w2 * color_values[i2, 3], - ) - elif color_mode == 2: - color = wp.vec4( - color_values[query.face, 0], - color_values[query.face, 1], - color_values[query.face, 2], - color_values[query.face, 3], - ) - - rgba[tid] = _shade(color, normal, light[0], ambient) - depth[tid] = query.t - normal_out[tid] = normal - - -def _validate_image_shape(image_height: int, image_width: int) -> None: - if image_height <= 0 or image_width <= 0: - raise ValueError("image_height and image_width must be strictly positive") - - -def _validate_fov(fov_y_degrees: float) -> None: - if fov_y_degrees <= 0.0 or fov_y_degrees >= 180.0: - raise ValueError("fov_y_degrees must lie in the open interval (0, 180)") - - -def _validate_ambient(ambient: float) -> None: - if ambient < 0.0 or ambient > 1.0: - raise ValueError("ambient must lie in the closed interval [0, 1]") - - -def _empty_render_outputs( - image_height: int, - image_width: int, - *, - device, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - rgba = torch.empty( - (image_height, image_width, 4), device=device, dtype=torch.float32 - ) - depth = torch.empty((image_height, image_width), device=device, dtype=torch.float32) - normal = torch.empty( - (image_height, image_width, 3), device=device, dtype=torch.float32 - ) - return rgba, depth, normal - - -def _empty_image_outputs( - image_height: int, - image_width: int, - *, - device, -) -> tuple[torch.Tensor, torch.Tensor]: - rgba = torch.zeros( - (image_height, image_width, 4), device=device, dtype=torch.float32 - ) - depth = torch.full( - (image_height, image_width), 3.402823e38, device=device, dtype=torch.float32 - ) - return rgba, depth - - -def _validate_transfer_range(vmin: float, vmax: float) -> None: - if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: - raise ValueError("vmax must be greater than vmin") - - -def _validate_opacity(value: float, *, name: str) -> None: - if not math.isfinite(value) or value < 0.0 or value > 1.0: - raise ValueError(f"{name} must lie in the closed interval [0, 1]") - - -def _validate_clip_range(near: float, far: float) -> None: - if not math.isfinite(near) or not math.isfinite(far) or near <= 0.0 or far <= near: - raise ValueError("near and far must satisfy 0 < near < far") - - -def _validate_vector_field(vector_field: torch.Tensor) -> None: - if vector_field.ndim != 4 or vector_field.shape[-1] != 3: - raise ValueError( - "vector_field must have shape (nx, ny, nz, 3), got " - f"{tuple(vector_field.shape)}" - ) - if any(size < 2 for size in vector_field.shape[:3]): - raise ValueError("vector_field must have at least two samples per dimension") - - -def _normalize_rgba_volume(rgba_volume: torch.Tensor) -> torch.Tensor: - if rgba_volume.ndim != 4 or rgba_volume.shape[-1] != 4: - raise ValueError( - "rgba_volume must have shape (nx, ny, nz, 4), got " - f"{tuple(rgba_volume.shape)}" - ) - if any(size < 2 for size in rgba_volume.shape[:3]): - raise ValueError("rgba_volume must have at least two samples per dimension") - if rgba_volume.dtype == torch.uint8: - rgba_volume = rgba_volume.to(torch.float32) / 255.0 - else: - rgba_volume = rgba_volume.to(torch.float32) - return rgba_volume.contiguous().clamp(0.0, 1.0) - - -@torch.library.custom_op("physicsnemo::scalar_field_to_rgba_warp", mutates_args=()) -def scalar_field_to_rgba_impl( - field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - opacity_threshold: float = 0.1, -) -> torch.Tensor: - """Launch the Warp scalar-to-RGBA transfer custom op.""" - if field.ndim != 3: - raise ValueError( - f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" - ) - _validate_transfer_range(vmin, vmax) - _validate_opacity(max_opacity, name="max_opacity") - _validate_opacity(opacity_threshold, name="opacity_threshold") - - field_fp32 = field.to(dtype=torch.float32).contiguous() - rgba_volume = torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) - wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _scalar_field_to_rgba_kernel, - dim=tuple(int(size) for size in field.shape), - inputs=[ - wp.from_torch(field_fp32, dtype=wp.float32), - float(vmin), - float(vmax), - float(max_opacity), - float(opacity_threshold), - int(field.shape[0]), - int(field.shape[1]), - int(field.shape[2]), - ], - outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], - device=wp_device, - stream=wp_stream, - ) - return rgba_volume - - -@scalar_field_to_rgba_impl.register_fake -def _( - field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - opacity_threshold: float = 0.1, -) -> torch.Tensor: - return torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) - - -@torch.library.custom_op("physicsnemo::line_integral_convolution_warp", mutates_args=()) -def line_integral_convolution_impl( - vector_field: torch.Tensor, - seed: torch.Tensor, - step_size: float = 0.5, - num_steps: int = 20, - contrast: float = 1.4, -) -> torch.Tensor: - """Launch the Warp line integral convolution custom op.""" - _validate_vector_field(vector_field) - if seed.shape != vector_field.shape[:3]: - raise ValueError( - "seed must have shape matching vector_field spatial dimensions, got " - f"{tuple(seed.shape)} and {tuple(vector_field.shape[:3])}" - ) - if step_size <= 0.0: - raise ValueError("step_size must be strictly positive") - if num_steps <= 0: - raise ValueError("num_steps must be strictly positive") - if contrast <= 0.0: - raise ValueError("contrast must be strictly positive") - - vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() - seed_fp32 = seed.to(device=vector_field.device, dtype=torch.float32).contiguous() - line_integral = torch.empty_like(seed_fp32) - wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _line_integral_convolution_kernel, - dim=tuple(int(size) for size in seed.shape), - inputs=[ - wp.from_torch(vector_fp32, dtype=wp.float32), - wp.from_torch(seed_fp32, dtype=wp.float32), - float(step_size), - int(num_steps), - float(contrast), - int(seed.shape[0]), - int(seed.shape[1]), - int(seed.shape[2]), - ], - outputs=[wp.from_torch(line_integral, dtype=wp.float32)], - device=wp_device, - stream=wp_stream, - ) - return line_integral - - -@line_integral_convolution_impl.register_fake -def _( - vector_field: torch.Tensor, - seed: torch.Tensor, - step_size: float = 0.5, - num_steps: int = 20, - contrast: float = 1.4, -) -> torch.Tensor: - return torch.empty_like(seed, dtype=torch.float32) - - -@torch.library.custom_op("physicsnemo::vector_field_to_rgba_warp", mutates_args=()) -def vector_field_to_rgba_impl( - vector_field: torch.Tensor, - lic_field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - lic_threshold: float = 0.5, -) -> torch.Tensor: - """Launch the Warp vector LIC-to-RGBA transfer custom op.""" - _validate_vector_field(vector_field) - if lic_field.shape != vector_field.shape[:3]: - raise ValueError( - "lic_field must have shape matching vector_field spatial dimensions" - ) - _validate_transfer_range(vmin, vmax) - _validate_opacity(max_opacity, name="max_opacity") - _validate_opacity(lic_threshold, name="lic_threshold") - - vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() - lic_fp32 = lic_field.to( - device=vector_field.device, dtype=torch.float32 - ).contiguous() - rgba_volume = torch.empty( - *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 - ) - wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _vector_field_to_rgba_kernel, - dim=tuple(int(size) for size in vector_field.shape[:3]), - inputs=[ - wp.from_torch(vector_fp32, dtype=wp.float32), - wp.from_torch(lic_fp32, dtype=wp.float32), - float(vmin), - float(vmax), - float(max_opacity), - float(lic_threshold), - int(vector_field.shape[0]), - int(vector_field.shape[1]), - int(vector_field.shape[2]), - ], - outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], - device=wp_device, - stream=wp_stream, - ) - return rgba_volume - - -@vector_field_to_rgba_impl.register_fake -def _( - vector_field: torch.Tensor, - lic_field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - lic_threshold: float = 0.5, -) -> torch.Tensor: - return torch.empty( - *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 - ) - - -@torch.library.custom_op("physicsnemo::volume_render_warp", mutates_args=()) -def volume_render_impl( - rgba_volume: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - step_size: float = 0.01, - max_steps: int = 512, - opacity_threshold: float = 0.95, - depth_threshold: float = 0.1, -) -> tuple[torch.Tensor, torch.Tensor]: - """Launch the Warp RGBA volume rendering custom op.""" - _validate_image_shape(image_height, image_width) - _validate_fov(fov_y_degrees) - if step_size <= 0.0: - raise ValueError("step_size must be strictly positive") - if max_steps <= 0: - raise ValueError("max_steps must be strictly positive") - _validate_opacity(opacity_threshold, name="opacity_threshold") - _validate_opacity(depth_threshold, name="depth_threshold") - - device = rgba_volume.device - rgba_volume_fp32 = _normalize_rgba_volume(rgba_volume) - camera = _camera_basis(eye, center, up, device=device) - bounds = _bounds_tensor(bounds_min, bounds_max, device=device) - rgba, depth = _empty_image_outputs(image_height, image_width, device=device) - wp_device, wp_stream = FunctionSpec.warp_launch_context(rgba_volume_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _volume_render_kernel, - dim=image_height * image_width, - inputs=[ - wp.from_torch(rgba_volume_fp32, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - wp.from_torch(bounds, dtype=wp.vec3), - int(image_width), - int(image_height), - float(step_size), - int(max_steps), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - float(opacity_threshold), - float(depth_threshold), - int(rgba_volume.shape[0]), - int(rgba_volume.shape[1]), - int(rgba_volume.shape[2]), - ], - outputs=[ - wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), - wp.from_torch(depth.reshape(-1), dtype=wp.float32), - ], - device=wp_device, - stream=wp_stream, - ) - depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) - return rgba, depth - - -@volume_render_impl.register_fake -def _( - rgba_volume: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - step_size: float = 0.01, - max_steps: int = 512, - opacity_threshold: float = 0.95, - depth_threshold: float = 0.1, -) -> tuple[torch.Tensor, torch.Tensor]: - return _empty_image_outputs(image_height, image_width, device=rgba_volume.device) - - -@torch.library.custom_op("physicsnemo::point_cloud_render_warp", mutates_args=()) -def point_cloud_render_impl( - points: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - point_colors: torch.Tensor | None = None, - point_color: torch.Tensor | None = None, - point_size: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - """Launch the Warp point cloud rendering custom op.""" - if points.ndim != 2 or points.shape[-1] != 3: - raise ValueError(f"points must have shape (num_points, 3), got {points.shape}") - if points.shape[0] == 0: - raise ValueError("points must contain at least one point") - _validate_image_shape(image_height, image_width) - _validate_fov(fov_y_degrees) - if point_size <= 0: - raise ValueError("point_size must be strictly positive") - _validate_clip_range(near, far) - - device = points.device - points_fp32 = points.to(dtype=torch.float32).contiguous() - colors = torch.zeros((1, 4), device=device, dtype=torch.float32) - has_point_colors = point_colors is not None - if point_colors is not None: - if point_color is not None: - raise ValueError("Pass either point_colors or point_color, not both") - if point_colors.shape[0] != points.shape[0]: - raise ValueError("point_colors must have one color per point") - colors = _color_tensor( - point_colors, device=device, shape_name="point_colors", expected_rank=2 - ) - uniform_color = _uniform_color_tensor(point_color, device=device) - camera = _camera_basis(eye, center, up, device=device) - rgba, depth = _empty_image_outputs(image_height, image_width, device=device) - empty_key = torch.iinfo(torch.int64).max - max_depth_key = float(empty_key // max(int(points.shape[0]), 1) - 1) - depth_scale = min(1.0e6, max_depth_key / float(far)) - winners = torch.full( - (image_height, image_width), empty_key, device=device, dtype=torch.int64 - ) - wp_device, wp_stream = FunctionSpec.warp_launch_context(points_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _point_cloud_depth_kernel, - dim=int(points.shape[0]), - inputs=[ - wp.from_torch(points_fp32, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - int(image_width), - int(image_height), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - float(near), - float(far), - int(point_size), - int(points.shape[0]), - float(depth_scale), - ], - outputs=[wp.from_torch(winners.reshape(-1), dtype=wp.int64)], - device=wp_device, - stream=wp_stream, - ) - wp.launch( - _point_cloud_resolve_kernel, - dim=image_height * image_width, - inputs=[ - wp.from_torch(points_fp32, dtype=wp.float32), - wp.from_torch(colors, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - wp.from_torch(uniform_color, dtype=wp.vec4), - int(image_width), - int(image_height), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - bool(has_point_colors), - int(points.shape[0]), - int(empty_key), - wp.from_torch(winners.reshape(-1), dtype=wp.int64), - ], - outputs=[ - wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), - wp.from_torch(depth.reshape(-1), dtype=wp.float32), - ], - device=wp_device, - stream=wp_stream, - ) - depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) - return rgba, depth - - -@point_cloud_render_impl.register_fake -def _( - points: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - point_colors: torch.Tensor | None = None, - point_color: torch.Tensor | None = None, - point_size: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - return _empty_image_outputs(image_height, image_width, device=points.device) - - -@torch.library.custom_op("physicsnemo::wireframe_render_warp", mutates_args=()) -def wireframe_render_impl( - edges: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - line_color: torch.Tensor | None = None, - line_thickness: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - """Launch the Warp wireframe rendering custom op.""" - if edges.ndim == 3: - if edges.shape[1:] != (2, 3): - raise ValueError( - "edges must have shape (num_edges, 2, 3) or (num_edges, 6)" - ) - edges = edges.reshape(edges.shape[0], 6) - elif edges.ndim != 2 or edges.shape[-1] != 6: - raise ValueError("edges must have shape (num_edges, 2, 3) or (num_edges, 6)") - if edges.shape[0] == 0: - raise ValueError("edges must contain at least one edge") - _validate_image_shape(image_height, image_width) - _validate_fov(fov_y_degrees) - if line_thickness <= 0: - raise ValueError("line_thickness must be strictly positive") - _validate_clip_range(near, far) - - device = edges.device - edges_fp32 = edges.to(dtype=torch.float32).contiguous() - uniform_color = _uniform_color_tensor(line_color, device=device) - camera = _camera_basis(eye, center, up, device=device) - rgba, depth = _empty_image_outputs(image_height, image_width, device=device) - wp_device, wp_stream = FunctionSpec.warp_launch_context(edges_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _wireframe_render_kernel, - dim=int(edges.shape[0]), - inputs=[ - wp.from_torch(edges_fp32, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - wp.from_torch(uniform_color, dtype=wp.vec4), - int(image_width), - int(image_height), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - float(near), - float(far), - int(line_thickness), - ], - outputs=[ - wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), - wp.from_torch(depth.reshape(-1), dtype=wp.float32), - ], - device=wp_device, - stream=wp_stream, - ) - depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) - return rgba, depth - - -@wireframe_render_impl.register_fake -def _( - edges: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - line_color: torch.Tensor | None = None, - line_thickness: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - return _empty_image_outputs(image_height, image_width, device=edges.device) - - -@torch.library.custom_op("physicsnemo::isosurface_render_warp", mutates_args=()) -def isosurface_render_impl( - field: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - threshold: float = 0.0, - step_size: float = 0.01, - max_steps: int = 512, - color_field: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """Launch the Warp isosurface rendering custom op.""" - if field.ndim != 3: - raise ValueError( - f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" - ) - if any(size < 2 for size in field.shape): - raise ValueError("field must have at least two samples in each dimension") - _validate_image_shape(image_height, image_width) - _validate_fov(fov_y_degrees) - _validate_ambient(ambient) - if step_size <= 0.0: - raise ValueError("step_size must be strictly positive") - if max_steps <= 0: - raise ValueError("max_steps must be strictly positive") - - device = field.device - field_fp32 = field.to(device=device, dtype=torch.float32).contiguous() - camera = _camera_basis(eye, center, up, device=device) - bounds = _bounds_tensor(bounds_min, bounds_max, device=device) - color_field_fp32 = _color_tensor( - color_field, device=device, shape_name="color_field", expected_rank=4 - ) - if color_field is not None and color_field.shape[:3] != field.shape: - raise ValueError( - f"color_field spatial shape must match field, got {tuple(color_field.shape[:3])}" - f" and {tuple(field.shape)}" - ) - uniform_color = _uniform_color_tensor(surface_color, device=device) - light = _light_tensor(light_direction, device=device) - - rgba, depth, normal = _empty_render_outputs( - image_height, image_width, device=device - ) - wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) - with wp.ScopedStream(wp_stream): - wp.launch( - _isosurface_render_kernel, - dim=image_height * image_width, - inputs=[ - wp.from_torch(field_fp32, dtype=wp.float32), - wp.from_torch(color_field_fp32, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - wp.from_torch(bounds, dtype=wp.vec3), - wp.from_torch(uniform_color, dtype=wp.vec4), - wp.from_torch(light, dtype=wp.vec3), - int(image_width), - int(image_height), - float(threshold), - float(step_size), - int(max_steps), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - float(ambient), - color_field is not None, - int(field_fp32.shape[0]), - int(field_fp32.shape[1]), - int(field_fp32.shape[2]), - ], - outputs=[ - wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), - wp.from_torch(depth.reshape(-1), dtype=wp.float32), - wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), - ], - device=wp_device, - stream=wp_stream, - ) - depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) - return rgba, depth, normal - - -@isosurface_render_impl.register_fake -def _( - field: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - threshold: float = 0.0, - step_size: float = 0.01, - max_steps: int = 512, - color_field: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - return _empty_render_outputs(image_height, image_width, device=field.device) - - -@torch.library.custom_op("physicsnemo::mesh_raycast_warp", mutates_args=()) -def mesh_raycast_impl( - mesh_vertices: torch.Tensor, - mesh_indices: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - vertex_colors: torch.Tensor | None = None, - face_colors: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, - max_distance: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """Launch the Warp mesh raycast rendering custom op.""" - if mesh_vertices.ndim != 2 or mesh_vertices.shape[-1] != 3: - raise ValueError( - "mesh_vertices must have shape (num_vertices, 3), got " - f"{tuple(mesh_vertices.shape)}" - ) - if mesh_vertices.shape[0] == 0: - raise ValueError("mesh_vertices must contain at least one vertex") - if mesh_indices.ndim == 2: - if mesh_indices.shape[-1] != 3: - raise ValueError("mesh_indices must have shape (num_faces, 3)") - mesh_indices = mesh_indices.reshape(-1) - elif mesh_indices.ndim != 1: - raise ValueError("mesh_indices must be 1D or have shape (num_faces, 3)") - if mesh_indices.numel() == 0 or mesh_indices.numel() % 3 != 0: - raise ValueError("mesh_indices must contain complete triangle faces") - if vertex_colors is not None and face_colors is not None: - raise ValueError("Pass either vertex_colors or face_colors, not both") - _validate_image_shape(image_height, image_width) - _validate_fov(fov_y_degrees) - _validate_ambient(ambient) - if max_distance <= 0.0: - raise ValueError("max_distance must be strictly positive") - - device = mesh_vertices.device - mesh_vertices_fp32 = mesh_vertices.to(dtype=torch.float32).contiguous() - mesh_indices_i32 = mesh_indices.to(device=device, dtype=torch.int32).contiguous() - camera = _camera_basis(eye, center, up, device=device) - uniform_color = _uniform_color_tensor(surface_color, device=device) - light = _light_tensor(light_direction, device=device) - - color_mode = 0 - color_values = torch.zeros((1, 4), device=device, dtype=torch.float32) - if vertex_colors is not None: - if vertex_colors.shape[0] != mesh_vertices.shape[0]: - raise ValueError("vertex_colors must have one color per mesh vertex") - color_values = _color_tensor( - vertex_colors, device=device, shape_name="vertex_colors", expected_rank=2 - ) - color_mode = 1 - elif face_colors is not None: - num_faces = mesh_indices_i32.numel() // 3 - if face_colors.shape[0] != num_faces: - raise ValueError("face_colors must have one color per mesh face") - color_values = _color_tensor( - face_colors, device=device, shape_name="face_colors", expected_rank=2 - ) - color_mode = 2 - - rgba, depth, normal = _empty_render_outputs( - image_height, image_width, device=device - ) - wp_device, wp_stream = FunctionSpec.warp_launch_context(mesh_vertices_fp32) - with wp.ScopedStream(wp_stream): - wp_vertices = wp.from_torch(mesh_vertices_fp32, dtype=wp.vec3) - wp_indices = wp.from_torch(mesh_indices_i32, dtype=wp.int32) - mesh = wp.Mesh(points=wp_vertices, indices=wp_indices) - wp.launch( - _mesh_raycast_kernel, - dim=image_height * image_width, - inputs=[ - mesh.id, - wp.from_torch(color_values, dtype=wp.float32), - wp.from_torch(camera, dtype=wp.vec3), - wp.from_torch(uniform_color, dtype=wp.vec4), - wp.from_torch(light, dtype=wp.vec3), - int(image_width), - int(image_height), - float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), - float(image_width) / float(image_height), - float(max_distance), - float(ambient), - int(color_mode), - ], - outputs=[ - wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), - wp.from_torch(depth.reshape(-1), dtype=wp.float32), - wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), - ], - device=wp_device, - stream=wp_stream, - ) - depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) - return rgba, depth, normal - - -@mesh_raycast_impl.register_fake -def _( - mesh_vertices: torch.Tensor, - mesh_indices: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - vertex_colors: torch.Tensor | None = None, - face_colors: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, - max_distance: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - return _empty_render_outputs(image_height, image_width, device=mesh_vertices.device) - - -def isosurface_render_warp( - field: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - threshold: float = 0.0, - step_size: float = 0.01, - max_steps: int = 512, - color_field: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """Prepare tensor arguments and render an isosurface with Warp.""" - device = field.device - return isosurface_render_impl( - field, - image_height, - image_width, - _as_vec3(eye, name="eye", device=device), - _as_vec3(center, name="center", device=device), - _as_vec3(up, name="up", device=device), - fov_y_degrees, - _as_vec3(bounds_min, name="bounds_min", device=device), - _as_vec3(bounds_max, name="bounds_max", device=device), - threshold, - step_size, - max_steps, - color_field, - _optional_tensor_arg(surface_color, device=device), - _optional_tensor_arg(light_direction, device=device), - ambient, - ) - - -def mesh_raycast_warp( - mesh_vertices: torch.Tensor, - mesh_indices: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - vertex_colors: torch.Tensor | None = None, - face_colors: torch.Tensor | None = None, - surface_color: torch.Tensor | None = None, - light_direction: torch.Tensor | None = None, - ambient: float = 0.2, - max_distance: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """Prepare tensor arguments and raycast a mesh with Warp.""" - device = mesh_vertices.device - return mesh_raycast_impl( - mesh_vertices, - mesh_indices, - image_height, - image_width, - _as_vec3(eye, name="eye", device=device), - _as_vec3(center, name="center", device=device), - _as_vec3(up, name="up", device=device), - fov_y_degrees, - vertex_colors, - face_colors, - _optional_tensor_arg(surface_color, device=device), - _optional_tensor_arg(light_direction, device=device), - ambient, - max_distance, - ) - - -def scalar_field_to_rgba_warp( - field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - opacity_threshold: float = 0.1, -) -> torch.Tensor: - """Map a scalar field to an RGBA volume with Warp.""" - return scalar_field_to_rgba_impl( - field, - vmin, - vmax, - max_opacity, - opacity_threshold, - ) - - -def line_integral_convolution_warp( - vector_field: torch.Tensor, - seed: torch.Tensor, - step_size: float = 0.5, - num_steps: int = 20, - contrast: float = 1.4, -) -> torch.Tensor: - """Compute line integral convolution with Warp.""" - return line_integral_convolution_impl( - vector_field, - seed, - step_size, - num_steps, - contrast, - ) - - -def vector_field_to_rgba_warp( - vector_field: torch.Tensor, - lic_field: torch.Tensor, - vmin: float, - vmax: float, - max_opacity: float = 0.8, - lic_threshold: float = 0.5, -) -> torch.Tensor: - """Map vector magnitude and LIC values to RGBA with Warp.""" - return vector_field_to_rgba_impl( - vector_field, - lic_field, - vmin, - vmax, - max_opacity, - lic_threshold, - ) - - -def volume_render_warp( - rgba_volume: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - bounds_min: torch.Tensor, - bounds_max: torch.Tensor, - step_size: float = 0.01, - max_steps: int = 512, - opacity_threshold: float = 0.95, - depth_threshold: float = 0.1, -) -> tuple[torch.Tensor, torch.Tensor]: - """Prepare tensor arguments and render an RGBA volume with Warp.""" - device = rgba_volume.device - return volume_render_impl( - rgba_volume, - image_height, - image_width, - _as_vec3(eye, name="eye", device=device), - _as_vec3(center, name="center", device=device), - _as_vec3(up, name="up", device=device), - fov_y_degrees, - _as_vec3(bounds_min, name="bounds_min", device=device), - _as_vec3(bounds_max, name="bounds_max", device=device), - step_size, - max_steps, - opacity_threshold, - depth_threshold, - ) - - -def point_cloud_render_warp( - points: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - point_colors: torch.Tensor | None = None, - point_color: torch.Tensor | None = None, - point_size: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - """Prepare tensor arguments and rasterize a point cloud with Warp.""" - device = points.device - return point_cloud_render_impl( - points, - image_height, - image_width, - _as_vec3(eye, name="eye", device=device), - _as_vec3(center, name="center", device=device), - _as_vec3(up, name="up", device=device), - fov_y_degrees, - point_colors, - _optional_tensor_arg(point_color, device=device), - point_size, - near, - far, - ) - - -def wireframe_render_warp( - edges: torch.Tensor, - image_height: int, - image_width: int, - eye: torch.Tensor, - center: torch.Tensor, - up: torch.Tensor, - fov_y_degrees: float, - line_color: torch.Tensor | None = None, - line_thickness: int = 1, - near: float = 0.01, - far: float = 1.0e8, -) -> tuple[torch.Tensor, torch.Tensor]: - """Prepare tensor arguments and rasterize wireframe segments with Warp.""" - device = edges.device - return wireframe_render_impl( - edges, - image_height, - image_width, - _as_vec3(eye, name="eye", device=device), - _as_vec3(center, name="center", device=device), - _as_vec3(up, name="up", device=device), - fov_y_degrees, - _optional_tensor_arg(line_color, device=device), - line_thickness, - near, - far, - ) - - -__all__ = [ - "isosurface_render_warp", - "line_integral_convolution_warp", - "mesh_raycast_warp", - "point_cloud_render_warp", - "scalar_field_to_rgba_warp", - "vector_field_to_rgba_warp", - "volume_render_warp", - "wireframe_render_warp", -] diff --git a/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py b/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py index e5d2ba4782..9d9980caae 100644 --- a/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py +++ b/physicsnemo/nn/functional/rendering/isosurface_render/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .isosurface_render import IsosurfaceRender, isosurface_render diff --git a/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py index a27bd5c8d7..0f53daf242 100644 --- a/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/isosurface_render/_warp_impl.py @@ -1,7 +1,302 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _as_vec3, + _bounds_tensor, + _camera_basis, + _color_tensor, + _empty_render_outputs, + _field_gradient, + _light_tensor, + _make_ray_direction, + _normalize_vec3, + _optional_tensor_arg, + _ray_box_intersection, + _sample_color_trilinear, + _sample_field_trilinear, + _shade, + _uniform_color_tensor, + _validate_ambient, + _validate_fov, + _validate_image_shape, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _isosurface_render_kernel( + field: wp.array3d(dtype=wp.float32), + color_field: wp.array4d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + bounds: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + light: wp.array(dtype=wp.vec3), + width: int, + height: int, + threshold: wp.float32, + step_size: wp.float32, + max_steps: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + ambient: wp.float32, + has_color_field: bool, + nx: int, + ny: int, + nz: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), + normal_out: wp.array(dtype=wp.vec3), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + bounds_min = bounds[0] + bounds_max = bounds[1] + intersection = _ray_box_intersection( + ray_origin, ray_direction, bounds_min, bounds_max + ) + + if intersection[0] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + t_far = intersection[2] + prev_t = intersection[1] + prev_point = ray_origin + prev_t * ray_direction + prev_value = _sample_field_trilinear( + field, prev_point, bounds_min, bounds_max, nx, ny, nz + ) + + found = bool(False) + hit_t = wp.float32(3.402823e38) + + for _ in range(max_steps): + if found: + break + next_t = prev_t + step_size + if next_t > t_far: + break + + next_point = ray_origin + next_t * ray_direction + next_value = _sample_field_trilinear( + field, next_point, bounds_min, bounds_max, nx, ny, nz + ) + if (prev_value - threshold) * (next_value - threshold) <= 0.0: + denom = next_value - prev_value + if wp.abs(denom) < 1.0e-7: + if denom < 0.0: + denom = -1.0e-7 + else: + denom = 1.0e-7 + alpha = wp.min(wp.max((threshold - prev_value) / denom, 0.0), 1.0) + hit_t = prev_t + alpha * step_size + found = True + + prev_t = next_t + prev_value = next_value + + if not found: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + hit_point = ray_origin + hit_t * ray_direction + normal = _normalize_vec3( + _field_gradient(field, hit_point, bounds_min, bounds_max, nx, ny, nz) + ) + if wp.dot(normal, ray_direction) > 0.0: + normal = -normal + + color = uniform_color[0] + if has_color_field: + color = _sample_color_trilinear( + color_field, hit_point, bounds_min, bounds_max, nx, ny, nz + ) + + rgba[tid] = _shade(color, normal, light[0], ambient) + depth[tid] = hit_t + normal_out[tid] = normal + + +@torch.library.custom_op("physicsnemo::isosurface_render_warp", mutates_args=()) +def isosurface_render_impl( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Launch the Warp isosurface rendering custom op.""" + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + if any(size < 2 for size in field.shape): + raise ValueError("field must have at least two samples in each dimension") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + _validate_ambient(ambient) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if max_steps <= 0: + raise ValueError("max_steps must be strictly positive") + + device = field.device + field_fp32 = field.to(device=device, dtype=torch.float32).contiguous() + camera = _camera_basis(eye, center, up, device=device) + bounds = _bounds_tensor(bounds_min, bounds_max, device=device) + color_field_fp32 = _color_tensor( + color_field, device=device, shape_name="color_field", expected_rank=4 + ) + if color_field is not None and color_field.shape[:3] != field.shape: + raise ValueError( + f"color_field spatial shape must match field, got {tuple(color_field.shape[:3])}" + f" and {tuple(field.shape)}" + ) + uniform_color = _uniform_color_tensor(surface_color, device=device) + light = _light_tensor(light_direction, device=device) + + rgba, depth, normal = _empty_render_outputs( + image_height, image_width, device=device + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _isosurface_render_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(field_fp32, dtype=wp.float32), + wp.from_torch(color_field_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(bounds, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + wp.from_torch(light, dtype=wp.vec3), + int(image_width), + int(image_height), + float(threshold), + float(step_size), + int(max_steps), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(ambient), + color_field is not None, + int(field_fp32.shape[0]), + int(field_fp32.shape[1]), + int(field_fp32.shape[2]), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth, normal + + +@isosurface_render_impl.register_fake +def _( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return _empty_render_outputs(image_height, image_width, device=field.device) + + +def isosurface_render_warp( + field: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + threshold: float = 0.0, + step_size: float = 0.01, + max_steps: int = 512, + color_field: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and render an isosurface with Warp.""" + device = field.device + return isosurface_render_impl( + field, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _as_vec3(bounds_min, name="bounds_min", device=device), + _as_vec3(bounds_max, name="bounds_max", device=device), + threshold, + step_size, + max_steps, + color_field, + _optional_tensor_arg(surface_color, device=device), + _optional_tensor_arg(light_direction, device=device), + ambient, + ) -from .._warp_ops import isosurface_render_warp __all__ = ["isosurface_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py b/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py index 75dd1806be..ad4b469de8 100644 --- a/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .line_integral_convolution import ( LineIntegralConvolution, diff --git a/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py b/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py index 34f9da3207..33b389827b 100644 --- a/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/line_integral_convolution/_warp_impl.py @@ -1,7 +1,169 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _sample_seed_trilinear, + _sample_vector_trilinear, + _validate_vector_field, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _line_integral_convolution_kernel( + vector_field: wp.array4d(dtype=wp.float32), + seed: wp.array3d(dtype=wp.float32), + step_size: wp.float32, + num_steps: int, + contrast: wp.float32, + nx: int, + ny: int, + nz: int, + line_integral: wp.array3d(dtype=wp.float32), +): + i, j, k = wp.tid() + pos = wp.vec3(wp.float32(i), wp.float32(j), wp.float32(k)) + + total = seed[i, j, k] + total_weight = wp.float32(1.0) + + for direction_sign in range(2): + direction_scale = wp.float32(1.0) + if direction_sign == 1: + direction_scale = -1.0 + + current = pos + for step in range(num_steps): + vector = _sample_vector_trilinear(vector_field, current, nx, ny, nz) + vector_length = wp.length(vector) + if vector_length <= 1.0e-6: + break + vector = direction_scale * vector / vector_length + + mid = current + 0.5 * step_size * vector + mid_vector = _sample_vector_trilinear(vector_field, mid, nx, ny, nz) + mid_length = wp.length(mid_vector) + if mid_length <= 1.0e-6: + break + mid_vector = direction_scale * mid_vector / mid_length + current = current + step_size * mid_vector + + if ( + current[0] < 0.0 + or current[0] > wp.float32(nx - 1) + or current[1] < 0.0 + or current[1] > wp.float32(ny - 1) + or current[2] < 0.0 + or current[2] > wp.float32(nz - 1) + ): + break + + normalized_step = wp.float32(step + 1) / wp.float32(num_steps + 1) + weight = 1.0 - normalized_step + total += _sample_seed_trilinear(seed, current, nx, ny, nz) * weight + total_weight += weight + + value = total / wp.max(total_weight, 1.0e-6) + value = wp.min(wp.max(value, 0.0), 1.0) + value = (value - 0.5) * contrast + 0.5 + line_integral[i, j, k] = wp.min(wp.max(value, 0.0), 1.0) + + +@torch.library.custom_op("physicsnemo::line_integral_convolution_warp", mutates_args=()) +def line_integral_convolution_impl( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + """Launch the Warp line integral convolution custom op.""" + _validate_vector_field(vector_field) + if seed.shape != vector_field.shape[:3]: + raise ValueError( + "seed must have shape matching vector_field spatial dimensions, got " + f"{tuple(seed.shape)} and {tuple(vector_field.shape[:3])}" + ) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if num_steps <= 0: + raise ValueError("num_steps must be strictly positive") + if contrast <= 0.0: + raise ValueError("contrast must be strictly positive") + + vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() + seed_fp32 = seed.to(device=vector_field.device, dtype=torch.float32).contiguous() + line_integral = torch.empty_like(seed_fp32) + wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _line_integral_convolution_kernel, + dim=tuple(int(size) for size in seed.shape), + inputs=[ + wp.from_torch(vector_fp32, dtype=wp.float32), + wp.from_torch(seed_fp32, dtype=wp.float32), + float(step_size), + int(num_steps), + float(contrast), + int(seed.shape[0]), + int(seed.shape[1]), + int(seed.shape[2]), + ], + outputs=[wp.from_torch(line_integral, dtype=wp.float32)], + device=wp_device, + stream=wp_stream, + ) + return line_integral + + +@line_integral_convolution_impl.register_fake +def _( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + return torch.empty_like(seed, dtype=torch.float32) + + +def line_integral_convolution_warp( + vector_field: torch.Tensor, + seed: torch.Tensor, + step_size: float = 0.5, + num_steps: int = 20, + contrast: float = 1.4, +) -> torch.Tensor: + """Compute line integral convolution with Warp.""" + return line_integral_convolution_impl( + vector_field, + seed, + step_size, + num_steps, + contrast, + ) -from .._warp_ops import line_integral_convolution_warp __all__ = ["line_integral_convolution_warp"] diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py b/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py index 7ed7b42097..892b80e768 100644 --- a/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py +++ b/physicsnemo/nn/functional/rendering/mesh_raycast/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .mesh_raycast import MeshRaycast, mesh_raycast diff --git a/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py b/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py index 121e61c571..a413684cd6 100644 --- a/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/mesh_raycast/_warp_impl.py @@ -1,7 +1,276 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _as_vec3, + _camera_basis, + _color_tensor, + _empty_render_outputs, + _light_tensor, + _make_ray_direction, + _normalize_vec3, + _optional_tensor_arg, + _shade, + _uniform_color_tensor, + _validate_ambient, + _validate_fov, + _validate_image_shape, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _mesh_raycast_kernel( + mesh_id: wp.uint64, + color_values: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + light: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + max_distance: wp.float32, + ambient: wp.float32, + color_mode: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), + normal_out: wp.array(dtype=wp.vec3), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + query = wp.mesh_query_ray(mesh_id, ray_origin, ray_direction, max_distance) + + if not query.result: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + normal_out[tid] = wp.vec3(0.0, 0.0, 0.0) + return + + normal = _normalize_vec3(query.normal) + if wp.dot(normal, ray_direction) > 0.0: + normal = -normal + + color = uniform_color[0] + if color_mode == 1: + mesh = wp.mesh_get(mesh_id) + i0 = mesh.indices[3 * query.face + 0] + i1 = mesh.indices[3 * query.face + 1] + i2 = mesh.indices[3 * query.face + 2] + w0 = query.u + w1 = query.v + w2 = 1.0 - query.u - query.v + color = wp.vec4( + w0 * color_values[i0, 0] + + w1 * color_values[i1, 0] + + w2 * color_values[i2, 0], + w0 * color_values[i0, 1] + + w1 * color_values[i1, 1] + + w2 * color_values[i2, 1], + w0 * color_values[i0, 2] + + w1 * color_values[i1, 2] + + w2 * color_values[i2, 2], + w0 * color_values[i0, 3] + + w1 * color_values[i1, 3] + + w2 * color_values[i2, 3], + ) + elif color_mode == 2: + color = wp.vec4( + color_values[query.face, 0], + color_values[query.face, 1], + color_values[query.face, 2], + color_values[query.face, 3], + ) + + rgba[tid] = _shade(color, normal, light[0], ambient) + depth[tid] = query.t + normal_out[tid] = normal + + +@torch.library.custom_op("physicsnemo::mesh_raycast_warp", mutates_args=()) +def mesh_raycast_impl( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Launch the Warp mesh raycast rendering custom op.""" + if mesh_vertices.ndim != 2 or mesh_vertices.shape[-1] != 3: + raise ValueError( + "mesh_vertices must have shape (num_vertices, 3), got " + f"{tuple(mesh_vertices.shape)}" + ) + if mesh_vertices.shape[0] == 0: + raise ValueError("mesh_vertices must contain at least one vertex") + if mesh_indices.ndim == 2: + if mesh_indices.shape[-1] != 3: + raise ValueError("mesh_indices must have shape (num_faces, 3)") + mesh_indices = mesh_indices.reshape(-1) + elif mesh_indices.ndim != 1: + raise ValueError("mesh_indices must be 1D or have shape (num_faces, 3)") + if mesh_indices.numel() == 0 or mesh_indices.numel() % 3 != 0: + raise ValueError("mesh_indices must contain complete triangle faces") + if vertex_colors is not None and face_colors is not None: + raise ValueError("Pass either vertex_colors or face_colors, not both") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + _validate_ambient(ambient) + if max_distance <= 0.0: + raise ValueError("max_distance must be strictly positive") + + device = mesh_vertices.device + mesh_vertices_fp32 = mesh_vertices.to(dtype=torch.float32).contiguous() + mesh_indices_i32 = mesh_indices.to(device=device, dtype=torch.int32).contiguous() + camera = _camera_basis(eye, center, up, device=device) + uniform_color = _uniform_color_tensor(surface_color, device=device) + light = _light_tensor(light_direction, device=device) + + color_mode = 0 + color_values = torch.zeros((1, 4), device=device, dtype=torch.float32) + if vertex_colors is not None: + if vertex_colors.shape[0] != mesh_vertices.shape[0]: + raise ValueError("vertex_colors must have one color per mesh vertex") + color_values = _color_tensor( + vertex_colors, device=device, shape_name="vertex_colors", expected_rank=2 + ) + color_mode = 1 + elif face_colors is not None: + num_faces = mesh_indices_i32.numel() // 3 + if face_colors.shape[0] != num_faces: + raise ValueError("face_colors must have one color per mesh face") + color_values = _color_tensor( + face_colors, device=device, shape_name="face_colors", expected_rank=2 + ) + color_mode = 2 + + rgba, depth, normal = _empty_render_outputs( + image_height, image_width, device=device + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(mesh_vertices_fp32) + with wp.ScopedStream(wp_stream): + wp_vertices = wp.from_torch(mesh_vertices_fp32, dtype=wp.vec3) + wp_indices = wp.from_torch(mesh_indices_i32, dtype=wp.int32) + mesh = wp.Mesh(points=wp_vertices, indices=wp_indices) + wp.launch( + _mesh_raycast_kernel, + dim=image_height * image_width, + inputs=[ + mesh.id, + wp.from_torch(color_values, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + wp.from_torch(light, dtype=wp.vec3), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(max_distance), + float(ambient), + int(color_mode), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + wp.from_torch(normal.reshape(-1, 3), dtype=wp.vec3), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth, normal + + +@mesh_raycast_impl.register_fake +def _( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + return _empty_render_outputs(image_height, image_width, device=mesh_vertices.device) + + +def mesh_raycast_warp( + mesh_vertices: torch.Tensor, + mesh_indices: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + vertex_colors: torch.Tensor | None = None, + face_colors: torch.Tensor | None = None, + surface_color: torch.Tensor | None = None, + light_direction: torch.Tensor | None = None, + ambient: float = 0.2, + max_distance: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and raycast a mesh with Warp.""" + device = mesh_vertices.device + return mesh_raycast_impl( + mesh_vertices, + mesh_indices, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + vertex_colors, + face_colors, + _optional_tensor_arg(surface_color, device=device), + _optional_tensor_arg(light_direction, device=device), + ambient, + max_distance, + ) -from .._warp_ops import mesh_raycast_warp __all__ = ["mesh_raycast_warp"] diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py b/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py index b7f5dfbc99..4845e3835b 100644 --- a/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py +++ b/physicsnemo/nn/functional/rendering/point_cloud_render/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .point_cloud_render import PointCloudRender, point_cloud_render diff --git a/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py index 59d77643f3..0f17d09ed1 100644 --- a/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/point_cloud_render/_warp_impl.py @@ -1,7 +1,262 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _as_vec3, + _camera_basis, + _color_tensor, + _empty_image_outputs, + _optional_tensor_arg, + _project_point, + _uniform_color_tensor, + _validate_clip_range, + _validate_fov, + _validate_image_shape, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _point_cloud_depth_kernel( + points: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + near: wp.float32, + far: wp.float32, + point_size: int, + num_points: int, + depth_scale: wp.float32, + winners: wp.array(dtype=wp.int64), +): + tid = wp.tid() + point = wp.vec3(points[tid, 0], points[tid, 1], points[tid, 2]) + projected = _project_point(point, camera, width, height, tan_half_fov, aspect) + z = projected[2] + if z <= near or z >= far: + return + + radius = point_size / 2 + center_x = int(projected[0]) + center_y = int(projected[1]) + key = wp.int64(z * depth_scale) * wp.int64(num_points) + wp.int64(tid) + for dy in range(-radius, radius + 1): + for dx in range(-radius, radius + 1): + x = center_x + dx + y = center_y + dy + if x >= 0 and x < width and y >= 0 and y < height: + wp.atomic_min(winners, y * width + x, key) + + +@wp.kernel +def _point_cloud_resolve_kernel( + points: wp.array2d(dtype=wp.float32), + colors: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + has_point_colors: bool, + num_points: int, + empty_key: wp.int64, + winners: wp.array(dtype=wp.int64), + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + key = winners[tid] + if key == empty_key: + return + + point_id = int(key % wp.int64(num_points)) + point = wp.vec3(points[point_id, 0], points[point_id, 1], points[point_id, 2]) + projected = _project_point(point, camera, width, height, tan_half_fov, aspect) + + color = uniform_color[0] + if has_point_colors: + color = wp.vec4( + colors[point_id, 0], + colors[point_id, 1], + colors[point_id, 2], + colors[point_id, 3], + ) + rgba[tid] = color + depth[tid] = projected[2] + + +@torch.library.custom_op("physicsnemo::point_cloud_render_warp", mutates_args=()) +def point_cloud_render_impl( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp point cloud rendering custom op.""" + if points.ndim != 2 or points.shape[-1] != 3: + raise ValueError(f"points must have shape (num_points, 3), got {points.shape}") + if points.shape[0] == 0: + raise ValueError("points must contain at least one point") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if point_size <= 0: + raise ValueError("point_size must be strictly positive") + _validate_clip_range(near, far) + + device = points.device + points_fp32 = points.to(dtype=torch.float32).contiguous() + colors = torch.zeros((1, 4), device=device, dtype=torch.float32) + has_point_colors = point_colors is not None + if point_colors is not None: + if point_color is not None: + raise ValueError("Pass either point_colors or point_color, not both") + if point_colors.shape[0] != points.shape[0]: + raise ValueError("point_colors must have one color per point") + colors = _color_tensor( + point_colors, device=device, shape_name="point_colors", expected_rank=2 + ) + uniform_color = _uniform_color_tensor(point_color, device=device) + camera = _camera_basis(eye, center, up, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + empty_key = torch.iinfo(torch.int64).max + max_depth_key = float(empty_key // max(int(points.shape[0]), 1) - 1) + depth_scale = min(1.0e6, max_depth_key / float(far)) + winners = torch.full( + (image_height, image_width), empty_key, device=device, dtype=torch.int64 + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(points_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _point_cloud_depth_kernel, + dim=int(points.shape[0]), + inputs=[ + wp.from_torch(points_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(near), + float(far), + int(point_size), + int(points.shape[0]), + float(depth_scale), + ], + outputs=[wp.from_torch(winners.reshape(-1), dtype=wp.int64)], + device=wp_device, + stream=wp_stream, + ) + wp.launch( + _point_cloud_resolve_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(points_fp32, dtype=wp.float32), + wp.from_torch(colors, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + bool(has_point_colors), + int(points.shape[0]), + int(empty_key), + wp.from_torch(winners.reshape(-1), dtype=wp.int64), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@point_cloud_render_impl.register_fake +def _( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=points.device) + + +def point_cloud_render_warp( + points: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + point_colors: torch.Tensor | None = None, + point_color: torch.Tensor | None = None, + point_size: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and rasterize a point cloud with Warp.""" + device = points.device + return point_cloud_render_impl( + points, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + point_colors, + _optional_tensor_arg(point_color, device=device), + point_size, + near, + far, + ) -from .._warp_ops import point_cloud_render_warp __all__ = ["point_cloud_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py index 83a162ae7e..4404892784 100644 --- a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .scalar_field_to_rgba import ScalarFieldToRGBA, scalar_field_to_rgba diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py index f05686b044..ce4aa6df89 100644 --- a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_torch_impl.py @@ -1,7 +1,69 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch + + +def _validate_transfer_range(vmin: float, vmax: float) -> None: + if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: + raise ValueError("vmax must be greater than vmin") + + +def _validate_opacity(value: float, *, name: str) -> None: + if not math.isfinite(value) or value < 0.0 or value > 1.0: + raise ValueError(f"{name} must lie in the closed interval [0, 1]") + + +def _jet_colormap(value: torch.Tensor) -> torch.Tensor: + red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) + green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) + blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) + return torch.stack([red, green, blue], dim=-1) + + +def _rgba_to_uint8(color: torch.Tensor, alpha: torch.Tensor) -> torch.Tensor: + rgba = torch.cat([color, alpha.unsqueeze(-1)], dim=-1) + return (rgba * 255.0).clamp(0.0, 255.0).to(torch.uint8) + + +def scalar_field_to_rgba_torch( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + """Map a scalar volume to a uint8 RGBA transfer-function volume.""" + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(opacity_threshold, name="opacity_threshold") + + value = ((field.to(torch.float32) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) + color = _jet_colormap(value) + alpha = torch.where(value < opacity_threshold, torch.zeros_like(value), value) + alpha = (alpha * max_opacity).clamp(0.0, 1.0) + return _rgba_to_uint8(color, alpha) -from .._torch_ops import scalar_field_to_rgba_torch __all__ = ["scalar_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py index 0a935e0a12..7b7ee7136d 100644 --- a/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/scalar_field_to_rgba/_warp_impl.py @@ -1,7 +1,127 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import _jet_colormap, _validate_opacity, _validate_transfer_range + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _scalar_field_to_rgba_kernel( + field: wp.array3d(dtype=wp.float32), + vmin: wp.float32, + vmax: wp.float32, + max_opacity: wp.float32, + opacity_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba_volume: wp.array4d(dtype=wp.uint8), +): + i, j, k = wp.tid() + value = (field[i, j, k] - vmin) / (vmax - vmin) + value = wp.min(wp.max(value, 0.0), 1.0) + color = _jet_colormap(value) + + alpha = value + if alpha < opacity_threshold: + alpha = 0.0 + alpha = wp.min(wp.max(alpha * max_opacity, 0.0), 1.0) + + rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) + rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) + rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) + rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) + + +@torch.library.custom_op("physicsnemo::scalar_field_to_rgba_warp", mutates_args=()) +def scalar_field_to_rgba_impl( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + """Launch the Warp scalar-to-RGBA transfer custom op.""" + if field.ndim != 3: + raise ValueError( + f"field must have shape (nx, ny, nz), got {tuple(field.shape)}" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(opacity_threshold, name="opacity_threshold") + + field_fp32 = field.to(dtype=torch.float32).contiguous() + rgba_volume = torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) + wp_device, wp_stream = FunctionSpec.warp_launch_context(field_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _scalar_field_to_rgba_kernel, + dim=tuple(int(size) for size in field.shape), + inputs=[ + wp.from_torch(field_fp32, dtype=wp.float32), + float(vmin), + float(vmax), + float(max_opacity), + float(opacity_threshold), + int(field.shape[0]), + int(field.shape[1]), + int(field.shape[2]), + ], + outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], + device=wp_device, + stream=wp_stream, + ) + return rgba_volume + + +@scalar_field_to_rgba_impl.register_fake +def _( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + return torch.empty(*field.shape, 4, device=field.device, dtype=torch.uint8) + + +def scalar_field_to_rgba_warp( + field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + opacity_threshold: float = 0.1, +) -> torch.Tensor: + """Map a scalar field to an RGBA volume with Warp.""" + return scalar_field_to_rgba_impl( + field, + vmin, + vmax, + max_opacity, + opacity_threshold, + ) -from .._warp_ops import scalar_field_to_rgba_warp __all__ = ["scalar_field_to_rgba_warp"] diff --git a/physicsnemo/nn/functional/rendering/utils.py b/physicsnemo/nn/functional/rendering/utils.py new file mode 100644 index 0000000000..af1912c6a8 --- /dev/null +++ b/physicsnemo/nn/functional/rendering/utils.py @@ -0,0 +1,615 @@ +# SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math +from collections.abc import Sequence + +import torch +import warp as wp + +wp.init() +wp.config.quiet = True + + +def _normalize_torch(vector: torch.Tensor, eps: float = 1.0e-12) -> torch.Tensor: + return vector / vector.norm(dim=-1, keepdim=True).clamp_min(eps) + + +def _as_vec3( + value: torch.Tensor | Sequence[float], *, name: str, device +) -> torch.Tensor: + if isinstance(value, torch.Tensor): + value = value.to(device=device, dtype=torch.float32, non_blocking=True) + else: + value = torch.tensor(value, device=device, dtype=torch.float32) + if value.shape != (3,): + raise ValueError(f"{name} must have shape (3,), got {tuple(value.shape)}") + return value + + +def _optional_tensor_arg(value: torch.Tensor | Sequence[float] | None, *, device): + if value is None: + return None + if isinstance(value, torch.Tensor): + return value.to(device=device, non_blocking=True) + return torch.as_tensor(value, device=device) + + +def _camera_basis( + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + *, + device, +) -> torch.Tensor: + eye = _as_vec3(eye, name="eye", device=device) + center = _as_vec3(center, name="center", device=device) + up = _as_vec3(up, name="up", device=device) + forward_raw = center - eye + if forward_raw.device.type == "cpu" and bool( + (forward_raw.norm() <= 1.0e-12).item() + ): + raise ValueError("eye and center must not be equal") + forward = _normalize_torch(forward_raw) + up_hint = _normalize_torch(up) + right_raw = torch.linalg.cross(up_hint, forward, dim=0) + if right_raw.device.type == "cpu" and bool((right_raw.norm() <= 1.0e-12).item()): + raise ValueError("up must not be parallel to the camera direction") + right = _normalize_torch(right_raw) + camera_up = _normalize_torch(torch.linalg.cross(forward, right, dim=0)) + return torch.stack([eye, forward, right, camera_up]).contiguous() + + +def _bounds_tensor( + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + *, + device, +) -> torch.Tensor: + bounds_min = _as_vec3(bounds_min, name="bounds_min", device=device) + bounds_max = _as_vec3(bounds_max, name="bounds_max", device=device) + if bounds_min.device.type == "cpu" and bool( + torch.any(bounds_max <= bounds_min).item() + ): + raise ValueError("bounds_max must be greater than bounds_min in all dimensions") + return torch.stack([bounds_min, bounds_max]).contiguous() + + +def _color_tensor( + color: torch.Tensor | None, + *, + device, + shape_name: str, + expected_rank: int, +) -> torch.Tensor: + if color is None: + return torch.zeros((1,) * (expected_rank - 1) + (4,), device=device) + if color.ndim != expected_rank or color.shape[-1] not in (3, 4): + raise ValueError( + f"{shape_name} must have shape (..., 3) or (..., 4), got {tuple(color.shape)}" + ) + color = color.to(device=device) + if color.dtype == torch.uint8: + color = color.to(torch.float32) / 255.0 + else: + color = color.to(torch.float32) + if color.shape[-1] == 3: + alpha = torch.ones(*color.shape[:-1], 1, device=device, dtype=torch.float32) + color = torch.cat([color, alpha], dim=-1) + return color.contiguous().clamp(0.0, 1.0) + + +def _uniform_color_tensor( + surface_color: torch.Tensor | None, + *, + device, +) -> torch.Tensor: + if surface_color is None: + color = torch.tensor([[1.0, 1.0, 1.0, 1.0]], device=device) + else: + color = torch.as_tensor(surface_color, device=device) + if color.shape not in ((3,), (4,)): + raise ValueError( + f"surface_color must have shape (3,) or (4,), got {tuple(color.shape)}" + ) + if color.dtype == torch.uint8: + color = color.to(torch.float32) / 255.0 + else: + color = color.to(torch.float32) + if color.shape == (3,): + color = torch.cat([color, torch.ones(1, device=device)]) + color = color.reshape(1, 4) + return color.contiguous().clamp(0.0, 1.0) + + +def _light_tensor(light_direction: torch.Tensor | None, *, device) -> torch.Tensor: + if light_direction is None: + light_direction = torch.tensor([-0.45, 0.75, -1.0], device=device) + light_direction = _as_vec3( + light_direction, name="light_direction", device=device + ).reshape(1, 3) + return _normalize_torch(light_direction).contiguous() + + +@wp.func +def _normalize_vec3(vector: wp.vec3) -> wp.vec3: + length = wp.length(vector) + if length <= 1.0e-12: + return wp.vec3(0.0, 0.0, 0.0) + return vector / length + + +@wp.func +def _clamp_int(value: int, lo: int, hi: int) -> int: + return wp.min(wp.max(value, lo), hi) + + +@wp.func +def _make_ray_direction( + tid: int, + width: int, + height: int, + camera: wp.array(dtype=wp.vec3), + tan_half_fov: wp.float32, + aspect: wp.float32, +) -> wp.vec3: + y = tid / width + x = tid - y * width + px = ((wp.float32(x) + 0.5) / wp.float32(width)) * 2.0 - 1.0 + py = 1.0 - (((wp.float32(y) + 0.5) / wp.float32(height)) * 2.0) + px = px * tan_half_fov * aspect + py = py * tan_half_fov + return _normalize_vec3(camera[1] + px * camera[2] + py * camera[3]) + + +@wp.func +def _sample_field_trilinear( + field: wp.array3d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.float32: + sx = ( + (point[0] - bounds_min[0]) + / (bounds_max[0] - bounds_min[0]) + * wp.float32(nx - 1) + ) + sy = ( + (point[1] - bounds_min[1]) + / (bounds_max[1] - bounds_min[1]) + * wp.float32(ny - 1) + ) + sz = ( + (point[2] - bounds_min[2]) + / (bounds_max[2] - bounds_min[2]) + * wp.float32(nz - 1) + ) + + i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) + j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) + k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) + i1 = i0 + 1 + j1 = j0 + 1 + k1 = k0 + 1 + + fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) + + c000 = field[i0, j0, k0] + c100 = field[i1, j0, k0] + c010 = field[i0, j1, k0] + c110 = field[i1, j1, k0] + c001 = field[i0, j0, k1] + c101 = field[i1, j0, k1] + c011 = field[i0, j1, k1] + c111 = field[i1, j1, k1] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + return c0 * (1.0 - fz) + c1 * fz + + +@wp.func +def _sample_color_trilinear( + colors: wp.array4d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec4: + sx = ( + (point[0] - bounds_min[0]) + / (bounds_max[0] - bounds_min[0]) + * wp.float32(nx - 1) + ) + sy = ( + (point[1] - bounds_min[1]) + / (bounds_max[1] - bounds_min[1]) + * wp.float32(ny - 1) + ) + sz = ( + (point[2] - bounds_min[2]) + / (bounds_max[2] - bounds_min[2]) + * wp.float32(nz - 1) + ) + + i0 = _clamp_int(int(wp.floor(sx)), 0, nx - 2) + j0 = _clamp_int(int(wp.floor(sy)), 0, ny - 2) + k0 = _clamp_int(int(wp.floor(sz)), 0, nz - 2) + i1 = i0 + 1 + j1 = j0 + 1 + k1 = k0 + 1 + + fx = wp.min(wp.max(sx - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(sy - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(sz - wp.float32(k0), 0.0), 1.0) + + out = wp.vec4(0.0, 0.0, 0.0, 0.0) + for channel in range(4): + c000 = colors[i0, j0, k0, channel] + c100 = colors[i1, j0, k0, channel] + c010 = colors[i0, j1, k0, channel] + c110 = colors[i1, j1, k0, channel] + c001 = colors[i0, j0, k1, channel] + c101 = colors[i1, j0, k1, channel] + c011 = colors[i0, j1, k1, channel] + c111 = colors[i1, j1, k1, channel] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + out[channel] = c0 * (1.0 - fz) + c1 * fz + return out + + +@wp.func +def _field_gradient( + field: wp.array3d(dtype=wp.float32), + point: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec3: + dx = (bounds_max[0] - bounds_min[0]) / wp.float32(nx - 1) + dy = (bounds_max[1] - bounds_min[1]) / wp.float32(ny - 1) + dz = (bounds_max[2] - bounds_min[2]) / wp.float32(nz - 1) + gx = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.5 * dx, 0.0, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.5 * dx, 0.0, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dx + gy = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.0, 0.5 * dy, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.0, 0.5 * dy, 0.0), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dy + gz = ( + _sample_field_trilinear( + field, + point + wp.vec3(0.0, 0.0, 0.5 * dz), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + - _sample_field_trilinear( + field, + point - wp.vec3(0.0, 0.0, 0.5 * dz), + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + ) / dz + return wp.vec3(gx, gy, gz) + + +@wp.func +def _axis_intersection( + origin: wp.float32, + direction: wp.float32, + lo: wp.float32, + hi: wp.float32, +) -> wp.vec3: + if wp.abs(direction) < 1.0e-12: + if origin < lo or origin > hi: + return wp.vec3(1.0, 0.0, 0.0) + return wp.vec3(0.0, -3.402823e38, 3.402823e38) + + inv_d = 1.0 / direction + t0 = (lo - origin) * inv_d + t1 = (hi - origin) * inv_d + return wp.vec3(0.0, wp.min(t0, t1), wp.max(t0, t1)) + + +@wp.func +def _ray_box_intersection( + origin: wp.vec3, + direction: wp.vec3, + bounds_min: wp.vec3, + bounds_max: wp.vec3, +) -> wp.vec3: + x = _axis_intersection(origin[0], direction[0], bounds_min[0], bounds_max[0]) + y = _axis_intersection(origin[1], direction[1], bounds_min[1], bounds_max[1]) + z = _axis_intersection(origin[2], direction[2], bounds_min[2], bounds_max[2]) + + miss = x[0] + y[0] + z[0] + t_near = wp.max(0.0, wp.max(x[1], wp.max(y[1], z[1]))) + t_far = wp.min(x[2], wp.min(y[2], z[2])) + if miss > 0.0 or t_far < t_near: + return wp.vec3(0.0, 0.0, -1.0) + return wp.vec3(1.0, t_near, t_far) + + +@wp.func +def _shade( + color: wp.vec4, + normal: wp.vec3, + light_direction: wp.vec3, + ambient: wp.float32, +) -> wp.vec4: + diffuse = wp.max(wp.dot(normal, light_direction), 0.0) + intensity = ambient + (1.0 - ambient) * diffuse + return wp.vec4( + color[0] * intensity, + color[1] * intensity, + color[2] * intensity, + color[3], + ) + + +@wp.func +def _jet_colormap(value: wp.float32) -> wp.vec3: + r = wp.min(4.0 * value - 1.5, -4.0 * value + 4.5) + g = wp.min(4.0 * value - 0.5, -4.0 * value + 3.5) + b = wp.min(4.0 * value + 0.5, -4.0 * value + 2.5) + return wp.vec3( + wp.min(wp.max(r, 0.0), 1.0), + wp.min(wp.max(g, 0.0), 1.0), + wp.min(wp.max(b, 0.0), 1.0), + ) + + +@wp.func +def _sample_seed_trilinear( + seed: wp.array3d(dtype=wp.float32), + pos: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.float32: + i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) + j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) + k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) + i1 = _clamp_int(i0 + 1, 0, nx - 1) + j1 = _clamp_int(j0 + 1, 0, ny - 1) + k1 = _clamp_int(k0 + 1, 0, nz - 1) + + fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) + + c000 = seed[i0, j0, k0] + c100 = seed[i1, j0, k0] + c010 = seed[i0, j1, k0] + c110 = seed[i1, j1, k0] + c001 = seed[i0, j0, k1] + c101 = seed[i1, j0, k1] + c011 = seed[i0, j1, k1] + c111 = seed[i1, j1, k1] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + return c0 * (1.0 - fz) + c1 * fz + + +@wp.func +def _sample_vector_trilinear( + vector_field: wp.array4d(dtype=wp.float32), + pos: wp.vec3, + nx: int, + ny: int, + nz: int, +) -> wp.vec3: + i0 = _clamp_int(int(wp.floor(pos[0])), 0, nx - 1) + j0 = _clamp_int(int(wp.floor(pos[1])), 0, ny - 1) + k0 = _clamp_int(int(wp.floor(pos[2])), 0, nz - 1) + i1 = _clamp_int(i0 + 1, 0, nx - 1) + j1 = _clamp_int(j0 + 1, 0, ny - 1) + k1 = _clamp_int(k0 + 1, 0, nz - 1) + + fx = wp.min(wp.max(pos[0] - wp.float32(i0), 0.0), 1.0) + fy = wp.min(wp.max(pos[1] - wp.float32(j0), 0.0), 1.0) + fz = wp.min(wp.max(pos[2] - wp.float32(k0), 0.0), 1.0) + + result = wp.vec3(0.0, 0.0, 0.0) + for channel in range(3): + c000 = vector_field[i0, j0, k0, channel] + c100 = vector_field[i1, j0, k0, channel] + c010 = vector_field[i0, j1, k0, channel] + c110 = vector_field[i1, j1, k0, channel] + c001 = vector_field[i0, j0, k1, channel] + c101 = vector_field[i1, j0, k1, channel] + c011 = vector_field[i0, j1, k1, channel] + c111 = vector_field[i1, j1, k1, channel] + + c00 = c000 * (1.0 - fx) + c100 * fx + c10 = c010 * (1.0 - fx) + c110 * fx + c01 = c001 * (1.0 - fx) + c101 * fx + c11 = c011 * (1.0 - fx) + c111 * fx + c0 = c00 * (1.0 - fy) + c10 * fy + c1 = c01 * (1.0 - fy) + c11 * fy + result[channel] = c0 * (1.0 - fz) + c1 * fz + return result + + +@wp.func +def _project_point( + point: wp.vec3, + camera: wp.array(dtype=wp.vec3), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, +) -> wp.vec4: + rel = point - camera[0] + z = wp.dot(rel, camera[1]) + x = wp.dot(rel, camera[2]) + y = wp.dot(rel, camera[3]) + if z <= 1.0e-12: + return wp.vec4(0.0, 0.0, z, 0.0) + screen_x = (x / (z * tan_half_fov * aspect) + 1.0) * 0.5 * wp.float32(width) + screen_y = (1.0 - (y / (z * tan_half_fov) + 1.0) * 0.5) * wp.float32(height) + return wp.vec4(screen_x, screen_y, z, 1.0) + + +def _validate_image_shape(image_height: int, image_width: int) -> None: + if image_height <= 0 or image_width <= 0: + raise ValueError("image_height and image_width must be strictly positive") + + +def _validate_fov(fov_y_degrees: float) -> None: + if fov_y_degrees <= 0.0 or fov_y_degrees >= 180.0: + raise ValueError("fov_y_degrees must lie in the open interval (0, 180)") + + +def _validate_ambient(ambient: float) -> None: + if ambient < 0.0 or ambient > 1.0: + raise ValueError("ambient must lie in the closed interval [0, 1]") + + +def _empty_render_outputs( + image_height: int, + image_width: int, + *, + device, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + rgba = torch.empty( + (image_height, image_width, 4), device=device, dtype=torch.float32 + ) + depth = torch.empty((image_height, image_width), device=device, dtype=torch.float32) + normal = torch.empty( + (image_height, image_width, 3), device=device, dtype=torch.float32 + ) + return rgba, depth, normal + + +def _empty_image_outputs( + image_height: int, + image_width: int, + *, + device, +) -> tuple[torch.Tensor, torch.Tensor]: + rgba = torch.zeros( + (image_height, image_width, 4), device=device, dtype=torch.float32 + ) + depth = torch.full( + (image_height, image_width), 3.402823e38, device=device, dtype=torch.float32 + ) + return rgba, depth + + +def _validate_transfer_range(vmin: float, vmax: float) -> None: + if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: + raise ValueError("vmax must be greater than vmin") + + +def _validate_opacity(value: float, *, name: str) -> None: + if not math.isfinite(value) or value < 0.0 or value > 1.0: + raise ValueError(f"{name} must lie in the closed interval [0, 1]") + + +def _validate_clip_range(near: float, far: float) -> None: + if not math.isfinite(near) or not math.isfinite(far) or near <= 0.0 or far <= near: + raise ValueError("near and far must satisfy 0 < near < far") + + +def _validate_vector_field(vector_field: torch.Tensor) -> None: + if vector_field.ndim != 4 or vector_field.shape[-1] != 3: + raise ValueError( + "vector_field must have shape (nx, ny, nz, 3), got " + f"{tuple(vector_field.shape)}" + ) + if any(size < 2 for size in vector_field.shape[:3]): + raise ValueError("vector_field must have at least two samples per dimension") + + +def _normalize_rgba_volume(rgba_volume: torch.Tensor) -> torch.Tensor: + if rgba_volume.ndim != 4 or rgba_volume.shape[-1] != 4: + raise ValueError( + "rgba_volume must have shape (nx, ny, nz, 4), got " + f"{tuple(rgba_volume.shape)}" + ) + if any(size < 2 for size in rgba_volume.shape[:3]): + raise ValueError("rgba_volume must have at least two samples per dimension") + if rgba_volume.dtype == torch.uint8: + rgba_volume = rgba_volume.to(torch.float32) / 255.0 + else: + rgba_volume = rgba_volume.to(torch.float32) + return rgba_volume.contiguous().clamp(0.0, 1.0) diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py index d9cdb8fd1d..241c3a5053 100644 --- a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .vector_field_to_rgba import VectorFieldToRGBA, vector_field_to_rgba diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py index acf9273087..e8a9b7363c 100644 --- a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_torch_impl.py @@ -1,7 +1,81 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch + + +def _validate_transfer_range(vmin: float, vmax: float) -> None: + if not math.isfinite(vmin) or not math.isfinite(vmax) or vmax <= vmin: + raise ValueError("vmax must be greater than vmin") + + +def _validate_opacity(value: float, *, name: str) -> None: + if not math.isfinite(value) or value < 0.0 or value > 1.0: + raise ValueError(f"{name} must lie in the closed interval [0, 1]") + + +def _jet_colormap(value: torch.Tensor) -> torch.Tensor: + red = torch.minimum(4.0 * value - 1.5, -4.0 * value + 4.5).clamp(0.0, 1.0) + green = torch.minimum(4.0 * value - 0.5, -4.0 * value + 3.5).clamp(0.0, 1.0) + blue = torch.minimum(4.0 * value + 0.5, -4.0 * value + 2.5).clamp(0.0, 1.0) + return torch.stack([red, green, blue], dim=-1) + + +def _rgba_to_uint8(color: torch.Tensor, alpha: torch.Tensor) -> torch.Tensor: + rgba = torch.cat([color, alpha.unsqueeze(-1)], dim=-1) + return (rgba * 255.0).clamp(0.0, 255.0).to(torch.uint8) + + +def vector_field_to_rgba_torch( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + """Map vector magnitude and LIC values to a uint8 RGBA volume.""" + if vector_field.ndim != 4 or vector_field.shape[-1] != 3: + raise ValueError( + "vector_field must have shape (nx, ny, nz, 3), got " + f"{tuple(vector_field.shape)}" + ) + if lic_field.shape != vector_field.shape[:3]: + raise ValueError( + "lic_field must have shape matching vector_field spatial dimensions" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(lic_threshold, name="lic_threshold") + + vector_fp32 = vector_field.to(torch.float32) + normalized = ((vector_fp32.norm(dim=-1) - vmin) / (vmax - vmin)).clamp(0.0, 1.0) + color = _jet_colormap(normalized) + lic_value = lic_field.to(device=vector_field.device, dtype=torch.float32).clamp( + 0.0, 1.0 + ) + lic_value = torch.where( + lic_value < lic_threshold, torch.zeros_like(lic_value), lic_value + ) + alpha = (lic_value * normalized * max_opacity).clamp(0.0, 1.0) + return _rgba_to_uint8(color, alpha) -from .._torch_ops import vector_field_to_rgba_torch __all__ = ["vector_field_to_rgba_torch"] diff --git a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py index dffc252b79..67329dbdc5 100644 --- a/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/vector_field_to_rgba/_warp_impl.py @@ -1,7 +1,149 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _jet_colormap, + _validate_opacity, + _validate_transfer_range, + _validate_vector_field, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _vector_field_to_rgba_kernel( + vector_field: wp.array4d(dtype=wp.float32), + lic_field: wp.array3d(dtype=wp.float32), + vmin: wp.float32, + vmax: wp.float32, + max_opacity: wp.float32, + lic_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba_volume: wp.array4d(dtype=wp.uint8), +): + i, j, k = wp.tid() + vx = vector_field[i, j, k, 0] + vy = vector_field[i, j, k, 1] + vz = vector_field[i, j, k, 2] + magnitude = wp.sqrt(vx * vx + vy * vy + vz * vz) + normalized = wp.min(wp.max((magnitude - vmin) / (vmax - vmin), 0.0), 1.0) + color = _jet_colormap(normalized) + + lic_value = wp.min(wp.max(lic_field[i, j, k], 0.0), 1.0) + if lic_value < lic_threshold: + lic_value = 0.0 + alpha = wp.min(wp.max(lic_value * normalized * max_opacity, 0.0), 1.0) + + rgba_volume[i, j, k, 0] = wp.uint8(color[0] * 255.0) + rgba_volume[i, j, k, 1] = wp.uint8(color[1] * 255.0) + rgba_volume[i, j, k, 2] = wp.uint8(color[2] * 255.0) + rgba_volume[i, j, k, 3] = wp.uint8(alpha * 255.0) + + +@torch.library.custom_op("physicsnemo::vector_field_to_rgba_warp", mutates_args=()) +def vector_field_to_rgba_impl( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + """Launch the Warp vector LIC-to-RGBA transfer custom op.""" + _validate_vector_field(vector_field) + if lic_field.shape != vector_field.shape[:3]: + raise ValueError( + "lic_field must have shape matching vector_field spatial dimensions" + ) + _validate_transfer_range(vmin, vmax) + _validate_opacity(max_opacity, name="max_opacity") + _validate_opacity(lic_threshold, name="lic_threshold") + + vector_fp32 = vector_field.to(dtype=torch.float32).contiguous() + lic_fp32 = lic_field.to( + device=vector_field.device, dtype=torch.float32 + ).contiguous() + rgba_volume = torch.empty( + *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 + ) + wp_device, wp_stream = FunctionSpec.warp_launch_context(vector_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _vector_field_to_rgba_kernel, + dim=tuple(int(size) for size in vector_field.shape[:3]), + inputs=[ + wp.from_torch(vector_fp32, dtype=wp.float32), + wp.from_torch(lic_fp32, dtype=wp.float32), + float(vmin), + float(vmax), + float(max_opacity), + float(lic_threshold), + int(vector_field.shape[0]), + int(vector_field.shape[1]), + int(vector_field.shape[2]), + ], + outputs=[wp.from_torch(rgba_volume, dtype=wp.uint8)], + device=wp_device, + stream=wp_stream, + ) + return rgba_volume + + +@vector_field_to_rgba_impl.register_fake +def _( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + return torch.empty( + *vector_field.shape[:3], 4, device=vector_field.device, dtype=torch.uint8 + ) + + +def vector_field_to_rgba_warp( + vector_field: torch.Tensor, + lic_field: torch.Tensor, + vmin: float, + vmax: float, + max_opacity: float = 0.8, + lic_threshold: float = 0.5, +) -> torch.Tensor: + """Map vector magnitude and LIC values to RGBA with Warp.""" + return vector_field_to_rgba_impl( + vector_field, + lic_field, + vmin, + vmax, + max_opacity, + lic_threshold, + ) -from .._warp_ops import vector_field_to_rgba_warp __all__ = ["vector_field_to_rgba_warp"] diff --git a/physicsnemo/nn/functional/rendering/volume_render/__init__.py b/physicsnemo/nn/functional/rendering/volume_render/__init__.py index bdb3c05812..a66c6aee84 100644 --- a/physicsnemo/nn/functional/rendering/volume_render/__init__.py +++ b/physicsnemo/nn/functional/rendering/volume_render/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .volume_render import VolumeRender, volume_render diff --git a/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py index 0066c3541a..ba1fae8105 100644 --- a/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/volume_render/_warp_impl.py @@ -1,7 +1,235 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _as_vec3, + _bounds_tensor, + _camera_basis, + _empty_image_outputs, + _make_ray_direction, + _normalize_rgba_volume, + _ray_box_intersection, + _sample_color_trilinear, + _validate_fov, + _validate_image_shape, + _validate_opacity, +) + +wp.init() +wp.config.quiet = True + + +@wp.kernel +def _volume_render_kernel( + rgba_volume: wp.array4d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + bounds: wp.array(dtype=wp.vec3), + width: int, + height: int, + step_size: wp.float32, + max_steps: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + opacity_threshold: wp.float32, + depth_threshold: wp.float32, + nx: int, + ny: int, + nz: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + ray_origin = camera[0] + ray_direction = _make_ray_direction( + tid, width, height, camera, tan_half_fov, aspect + ) + bounds_min = bounds[0] + bounds_max = bounds[1] + intersection = _ray_box_intersection( + ray_origin, ray_direction, bounds_min, bounds_max + ) + + if intersection[0] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + return + + accum = wp.vec4(0.0, 0.0, 0.0, 0.0) + first_depth = wp.float32(3.402823e38) + t = intersection[1] + for _ in range(max_steps): + if t > intersection[2] or accum[3] >= opacity_threshold: + break + sample = _sample_color_trilinear( + rgba_volume, + ray_origin + t * ray_direction, + bounds_min, + bounds_max, + nx, + ny, + nz, + ) + sample_alpha = wp.min(wp.max(sample[3], 0.0), 1.0) + if sample_alpha > 0.0: + opacity = (1.0 - accum[3]) * sample_alpha + accum[0] += sample[0] * opacity + accum[1] += sample[1] * opacity + accum[2] += sample[2] * opacity + accum[3] += opacity + if first_depth >= 3.0e38 and accum[3] >= depth_threshold: + first_depth = t + t += step_size + + if accum[3] <= 0.0: + rgba[tid] = wp.vec4(0.0, 0.0, 0.0, 0.0) + depth[tid] = 3.402823e38 + return + + rgba[tid] = wp.vec4( + accum[0] / accum[3], + accum[1] / accum[3], + accum[2] / accum[3], + accum[3], + ) + depth[tid] = first_depth + + +@torch.library.custom_op("physicsnemo::volume_render_warp", mutates_args=()) +def volume_render_impl( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp RGBA volume rendering custom op.""" + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if step_size <= 0.0: + raise ValueError("step_size must be strictly positive") + if max_steps <= 0: + raise ValueError("max_steps must be strictly positive") + _validate_opacity(opacity_threshold, name="opacity_threshold") + _validate_opacity(depth_threshold, name="depth_threshold") + + device = rgba_volume.device + rgba_volume_fp32 = _normalize_rgba_volume(rgba_volume) + camera = _camera_basis(eye, center, up, device=device) + bounds = _bounds_tensor(bounds_min, bounds_max, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + wp_device, wp_stream = FunctionSpec.warp_launch_context(rgba_volume_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _volume_render_kernel, + dim=image_height * image_width, + inputs=[ + wp.from_torch(rgba_volume_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(bounds, dtype=wp.vec3), + int(image_width), + int(image_height), + float(step_size), + int(max_steps), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(opacity_threshold), + float(depth_threshold), + int(rgba_volume.shape[0]), + int(rgba_volume.shape[1]), + int(rgba_volume.shape[2]), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@volume_render_impl.register_fake +def _( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=rgba_volume.device) + + +def volume_render_warp( + rgba_volume: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + bounds_min: torch.Tensor, + bounds_max: torch.Tensor, + step_size: float = 0.01, + max_steps: int = 512, + opacity_threshold: float = 0.95, + depth_threshold: float = 0.1, +) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and render an RGBA volume with Warp.""" + device = rgba_volume.device + return volume_render_impl( + rgba_volume, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _as_vec3(bounds_min, name="bounds_min", device=device), + _as_vec3(bounds_max, name="bounds_max", device=device), + step_size, + max_steps, + opacity_threshold, + depth_threshold, + ) -from .._warp_ops import volume_render_warp __all__ = ["volume_render_warp"] diff --git a/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py b/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py index 67801e145b..bde7fac654 100644 --- a/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py +++ b/physicsnemo/nn/functional/rendering/wireframe_render/__init__.py @@ -1,6 +1,18 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .wireframe_render import WireframeRender, wireframe_render diff --git a/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py b/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py index 6c501e185c..523055e8e0 100644 --- a/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py +++ b/physicsnemo/nn/functional/rendering/wireframe_render/_warp_impl.py @@ -1,7 +1,264 @@ # SPDX-FileCopyrightText: Copyright (c) 2023 - 2026 NVIDIA CORPORATION & AFFILIATES. # SPDX-FileCopyrightText: All rights reserved. # SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import math + +import torch +import warp as wp + +from physicsnemo.core.function_spec import FunctionSpec + +from ..utils import ( + _as_vec3, + _camera_basis, + _empty_image_outputs, + _optional_tensor_arg, + _project_point, + _uniform_color_tensor, + _validate_clip_range, + _validate_fov, + _validate_image_shape, +) + +wp.init() +wp.config.quiet = True + + +@wp.func +def _write_depth_tested_pixel( + x: int, + y: int, + z: wp.float32, + color: wp.vec4, + width: int, + height: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + if x >= 0 and x < width and y >= 0 and y < height: + index = y * width + x + old_depth = wp.atomic_min(depth, index, z) + if z <= old_depth: + rgba[index] = color + + +@wp.func +def _draw_line_depth_tested( + x0: int, + y0: int, + x1: int, + y1: int, + z0: wp.float32, + z1: wp.float32, + width: int, + height: int, + color: wp.vec4, + thickness: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + dx = wp.abs(x1 - x0) + dy = wp.abs(y1 - y0) + sx = wp.int32(1) + if x0 > x1: + sx = -1 + sy = wp.int32(1) + if y0 > y1: + sy = -1 + err = dx - dy + steps = wp.max(dx, dy) + radius = thickness / 2 + x = x0 + y = y0 + + for step in range(8192): + if step > steps: + break + alpha = wp.float32(0.0) + if steps > 0: + alpha = wp.float32(step) / wp.float32(steps) + z = z0 * (1.0 - alpha) + z1 * alpha + for oy in range(-radius, radius + 1): + for ox in range(-radius, radius + 1): + _write_depth_tested_pixel( + x + ox, y + oy, z, color, width, height, rgba, depth + ) + + if x == x1 and y == y1: + break + e2 = 2 * err + if e2 > -dy: + err -= dy + x += sx + if e2 < dx: + err += dx + y += sy + + +@wp.kernel +def _wireframe_render_kernel( + edges: wp.array2d(dtype=wp.float32), + camera: wp.array(dtype=wp.vec3), + uniform_color: wp.array(dtype=wp.vec4), + width: int, + height: int, + tan_half_fov: wp.float32, + aspect: wp.float32, + near: wp.float32, + far: wp.float32, + line_thickness: int, + rgba: wp.array(dtype=wp.vec4), + depth: wp.array(dtype=wp.float32), +): + tid = wp.tid() + p0 = wp.vec3(edges[tid, 0], edges[tid, 1], edges[tid, 2]) + p1 = wp.vec3(edges[tid, 3], edges[tid, 4], edges[tid, 5]) + s0 = _project_point(p0, camera, width, height, tan_half_fov, aspect) + s1 = _project_point(p1, camera, width, height, tan_half_fov, aspect) + + if s0[2] <= near or s0[2] >= far or s1[2] <= near or s1[2] >= far: + return + + _draw_line_depth_tested( + int(s0[0]), + int(s0[1]), + int(s1[0]), + int(s1[1]), + s0[2], + s1[2], + width, + height, + uniform_color[0], + line_thickness, + rgba, + depth, + ) + + +@torch.library.custom_op("physicsnemo::wireframe_render_warp", mutates_args=()) +def wireframe_render_impl( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + """Launch the Warp wireframe rendering custom op.""" + if edges.ndim == 3: + if edges.shape[1:] != (2, 3): + raise ValueError( + "edges must have shape (num_edges, 2, 3) or (num_edges, 6)" + ) + edges = edges.reshape(edges.shape[0], 6) + elif edges.ndim != 2 or edges.shape[-1] != 6: + raise ValueError("edges must have shape (num_edges, 2, 3) or (num_edges, 6)") + if edges.shape[0] == 0: + raise ValueError("edges must contain at least one edge") + _validate_image_shape(image_height, image_width) + _validate_fov(fov_y_degrees) + if line_thickness <= 0: + raise ValueError("line_thickness must be strictly positive") + _validate_clip_range(near, far) + + device = edges.device + edges_fp32 = edges.to(dtype=torch.float32).contiguous() + uniform_color = _uniform_color_tensor(line_color, device=device) + camera = _camera_basis(eye, center, up, device=device) + rgba, depth = _empty_image_outputs(image_height, image_width, device=device) + wp_device, wp_stream = FunctionSpec.warp_launch_context(edges_fp32) + with wp.ScopedStream(wp_stream): + wp.launch( + _wireframe_render_kernel, + dim=int(edges.shape[0]), + inputs=[ + wp.from_torch(edges_fp32, dtype=wp.float32), + wp.from_torch(camera, dtype=wp.vec3), + wp.from_torch(uniform_color, dtype=wp.vec4), + int(image_width), + int(image_height), + float(math.tan(math.radians(float(fov_y_degrees)) * 0.5)), + float(image_width) / float(image_height), + float(near), + float(far), + int(line_thickness), + ], + outputs=[ + wp.from_torch(rgba.reshape(-1, 4), dtype=wp.vec4), + wp.from_torch(depth.reshape(-1), dtype=wp.float32), + ], + device=wp_device, + stream=wp_stream, + ) + depth = torch.where(depth >= 3.0e38, torch.full_like(depth, torch.inf), depth) + return rgba, depth + + +@wireframe_render_impl.register_fake +def _( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + return _empty_image_outputs(image_height, image_width, device=edges.device) + + +def wireframe_render_warp( + edges: torch.Tensor, + image_height: int, + image_width: int, + eye: torch.Tensor, + center: torch.Tensor, + up: torch.Tensor, + fov_y_degrees: float, + line_color: torch.Tensor | None = None, + line_thickness: int = 1, + near: float = 0.01, + far: float = 1.0e8, +) -> tuple[torch.Tensor, torch.Tensor]: + """Prepare tensor arguments and rasterize wireframe segments with Warp.""" + device = edges.device + return wireframe_render_impl( + edges, + image_height, + image_width, + _as_vec3(eye, name="eye", device=device), + _as_vec3(center, name="center", device=device), + _as_vec3(up, name="up", device=device), + fov_y_degrees, + _optional_tensor_arg(line_color, device=device), + line_thickness, + near, + far, + ) -from .._warp_ops import wireframe_render_warp __all__ = ["wireframe_render_warp"]