Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • vtk/vtk
  • brad.king/vtk
  • allisonvacanti/vtk
  • chuck.atkins/vtk
  • shawn.waldon/vtk
  • robertmaynard/vtk
  • gcasey/vtk
  • danlipsa/vtk
  • sankhesh/vtk
  • nix/vtk
  • utkarsh.ayachit/vtk
  • seanm/vtk
  • amaclean/vtk
  • lorensen/vtk
  • dgobbi/vtk
  • jpouderoux/vtk
  • ken-martin/vtk
  • ben.boeckel/vtk
  • karsten.tausche/vtk
  • jbeezley/vtk
  • demarle/vtk
  • karasevpa/vtk
  • sebastien.jourdain/vtk
  • will.schroeder/vtk
  • pixelstime/vtk
  • sujin.philip/vtk
  • acbauer/vtk
  • berkgeveci/vtk
  • cory.quammen/vtk
  • john.tourtellott/vtk
  • jcfr/vtk
  • tcoulange/vtk
  • finetjul/vtk
  • aashish-chaudhary/vtk
  • tadeu/vtk
  • bxa/vtk
  • clinton/vtk
  • cjh1/vtk
  • alextsui05/vtk
  • jorge.suit/vtk
  • mwestphal/vtk
  • arnaudgelas/vtk
  • splines/vtk
  • dcthomp/spline-vtk
  • Lin.Ma/vtk-spline
  • matt-mccormick/vtk
  • ndfabian/vtk
  • scott.wittenburg/vtk
  • bill-hoffman/vtk
  • dlrdave/vtk
  • ethanb/vtk
  • johan-andruejol/vtk
  • ashray/vtk
  • Toki/vtk
  • kimbaol/vtk
  • toster/vtk
  • applekey/vtk
  • quantumsteve/vtk
  • a_neeman/vtk
  • biddisco/vtk
  • mhanwell/vtk
  • jjomier/vtk
  • dkuegler/vtk
  • bobifx/vtk
  • yordan_kyosev/vtk
  • schuyler.kylstra/vtk
  • ilya-five/vtk
  • JimCosby/vtk
  • Geng/vtk
  • blessley/vtk
  • davisb/vtk
  • iMSTK/vtk
  • chunmingchen/vtk
  • danlugli/vtk
  • chaffra/vtk
  • tjcorona/vtk
  • mennodeij1/vtk
  • thehummingbird/vtk
  • prabhuramachandran/vtk
  • chiranjibsur/vtk
  • jwilliz/vtk
  • wydesenej/vtk
  • msmolens/vtk
  • Lin.Ma/vtk
  • joseph.g.hennessey2.ctr/vtk
  • Wu/vtk
  • rogerkint/vtk
  • Xabi/vtk
  • timt/vtk
  • dcthomp/vtk
  • carson/vtk
  • Niels_Dekker/vtk
  • dmsurti/vtk
  • shreejan/vtk
  • brudfors/vtk
  • yumin/vtk
  • bob.obara/vtk
  • cousin_it/vtk
  • fstrati/vtk
  • dzenanz/vtk
  • cdeepakroy/vtk
  • LucasGandelKitware/vtk
  • alexis-girault/vtk
  • sreekanth-arikatla/vtk
  • SumedhaSingla/vtk
  • ricardo-ortiz/vtk
  • yboumenir/vtk
  • alvaro.sanchez/vtk
  • jgoizueta/vtk
  • bloring/vtk
  • akhilsurabhi/vtk
  • appstonic/vtk
  • waldyrious/vtk
  • lenlen/vtk
  • romangrothausmann/vtk
  • NevilX/vtk
  • natorious1990/vtk
  • ktsumura/vtk
  • radix-vinni/vtk
  • saumyabhadani/vtk
  • starius/vtk
  • mgenet/vtk
  • dhanannjay-deo/vtk
  • fabian.wenzel/vtk
  • stephenshamilton/vtk
  • axkibe/vtk
  • grlee77/vtk
  • lisa-avila/vtk
  • martyngigg/vtk
  • asmith/vtk
  • opoplawski/vtk
  • maxoox/vtk
  • estan/vtk
  • awehrfritz/vtk
  • dsgruss/vtk
  • abheekg/vtk
  • jfavre/vtk
  • updega2/vtk
  • dgraves/vtk
  • zaherabdulazeez/vtk
  • lisphacker/vtk
  • BillMcGrory/vtk
  • Yang/vtk
  • dumontal/vtk
  • DVigneault/vtk
  • xyjin213/vtk
  • cpatrick/vtk
  • isohatalaj/vtk
  • rete/vtk
  • polycorn/vtk
  • Promayon/vtk
  • karthik/vtk
  • betsy.mcphail/vtk
  • nschloe/vtk
  • kmorel/vtk
  • aniqah/vtk
  • rupertnash/vtk
  • iMichka/vtk
  • shru13448/vtk
  • aeslaughter/vtk
  • QuadmasterXLII1/vtk
  • QuadmasterXLII/vtk
  • haocheng.liu/vtk
  • LouisBergmann/vtk
  • alouis/vtk
  • bjacquet/vtk
  • pieper/vtk
  • Ychuan1115/vtk
  • srikanthnagella/vtk
  • SeunOdutola/vtk
  • jborck/vtk
  • sidd23295/vtk
  • besoft/vtk
  • imikejackson/vtk
  • tttanichka333/vtk
  • vromerocano/vtk
  • fogleman/vtk
  • hinashah/vtk
  • abhishekns/vtk
  • mpkh/vtk
  • borisb/vtk
  • eg/vtk
  • technic/vtk
  • chet.nieter/vtk
  • maleike/vtk
  • emmenlau/vtk
  • florianlink1/vtk
  • teracamo/vtk
  • ole.v.solberg/vtk
  • greenjava/vtk
  • snorrikris/vtk
  • HaipengY/vtk
  • hina/vtk
  • jhlegarreta/vtk
  • diorcety/vtk
  • taketwo/vtk
  • mnucci32/vtk
  • gnzlbg/vtk
  • dfroger/vtk
  • WimK/vtk
  • luciemacron/vtk
  • kd7uns/vtk
  • dgkf/vtk
  • gocarlos/vtk
  • jayas121/vtk
  • olesen/vtk
  • Jon_Garner/vtk
  • cschmitz/vtk
  • Paul/vtk
  • kaaalid/vtk
  • neiltwist/vtk
  • Hertz1239/vtk
  • jupiterben/vtk
  • pierre.guilbert/vtk
  • matthew-woehlke/vtk
  • xantares/vtk
  • mayeul.chassagnard/vtk
  • t-ikegami/vtk
  • gbivins4/vtk
  • jacob/vtk
  • sarahjelinek/vtk
  • nicolas.vuaille/vtk
  • art/vtk
  • Levinaz69/vtk
  • aron.helser/vtk
  • yohey/vtk
  • alex-novinski/vtk
  • jacob-becker/vtk
  • robbie_lxw/vtk
  • burhan14031/vtk
  • thewtex/vtk
  • ML/vtk
  • bilke/vtk
  • bvanelli/vtk
  • Juliano/vtk
  • luliag/vtk
  • muellni/vtk
  • barkinet/vtk
  • kvankooten/vtk
  • Moonypoony/vtk
  • derino/vtk
  • wendy/vtk
  • kekivelez/vtk
  • Archeks/vtk
  • claireguilbaud/vtk
  • lassoan/vtk
  • brunbennett/vtk
  • hcwiley/vtk
  • jie.cheng/vtk
  • kghandi/vtk
  • michalhabera/vtk
  • francis.giraldeau/vtk
  • GG1991/vtk
  • ugiwgh/vtk
  • benjaminjeliot/vtk
  • locuscaeruleus/vtk
  • marcelotrevisani/vtk
  • Punzo/vtk
  • pavelpokutnev/vtk
  • sylmarien/vtk
  • jbvimort/vtk
  • athius/vtk
  • aowen87/vtk
  • StefanBruens/vtk
  • nocnokneo/vtk
  • mds/vtk
  • forrest.li/vtk
  • rcfwgithub/vtk
  • Guenoleh/vtk
  • drmateo/vtk
  • ahota/vtk
  • nishanthkarthik/vtk
  • pdhahn/vtk
  • dyoll/vtk
  • todoooo/vtk
  • Rhodanos/vtk
  • bjoernthiel/vtk
  • pink2/vtk
  • thudacko/vtk
  • qwofford/vtk
  • michael.migliore/vtk
  • mohamedAhmedIsmailAhmed/vtk
  • m-chaturvedi/vtk
  • Shoepon/vtk
  • ricardomorello/vtk
  • ktsai/vtk
  • hjmjohnson/vtk
  • daseven/vtk
  • federico.miorelli/vtk
  • jianfulin/vtk
  • ihnorton/vtk
  • handrake0724/vtk
  • yuelinho777/vtk
  • eberroca/vtk
  • arankin/vtk
  • zachmullen/vtk
  • alzi/vtk
  • csukuangfj/vtk
  • nick.laurenson/vtk
  • ethan.stam/vtk
  • bujack/vtk
  • ifmfr/vtk
  • jpulido/vtk
  • Butakoff/vtk
  • innokentiy.alaytsev/vtk
  • hendersa/vtk
  • tkarabela/vtk
  • charly.girot/vtk
  • dbonhaus/vtk
  • ClundXIII/vtk
  • shaikan/vtk
  • timrowley/vtk
  • tomj/vtk
  • ombre5733/vtk
  • hbwhlk83/vtk
  • cpinter/vtk
  • fbudin/vtk
  • nehaljwani/vtk
  • CometS1/vtk
  • debian/vtk
  • jan.o.schutte/vtk
  • normanius/vtk
  • wehhh/vtk
  • bwspenc/vtk
  • sergioPereiraBR/vtk
  • yurivict/vtk
  • GarrettMorrison/vtk
  • jensgw/vtk
  • alesgenova/vtk
  • paulharris/vtk
  • niranjankala/vtk
  • tavaughan/vtk
  • christianezeani/vtk
  • kihneman/vtk
  • phcerdan/vtk
  • Bengt/vtk
  • knolla/vtk
  • shreeraj.jadhav/vtk
  • Sunderlandkyl/vtk
  • drpeterfranz/vtk
  • pedroneto/vtk
  • levara/vtk
  • TheBlackCat/vtk
  • Bleach665/vtk
  • JeromeDuboisPro/vtk
  • pbergeron/vtk
  • ilovezfs/vtk
  • jeffamstutz/vtk
  • edwinbennink/vtk
  • ChrisB/vtk
  • rexchai/vtk
  • jclearwater/vtk
  • pengzhou93/vtk
  • Cotrik/vtk
  • drouin-simon/vtk
  • Simon-GitLab/vtk
  • mcvaneede/vtk
  • aaigner/vtk
  • murraypurves/vtk
  • Chrisyunhua/vtk
  • lhofmann/vtk
  • tobias-haenel/vtk
  • aitormoreno/vtk
  • severnaa/vtk
  • angelika.ophagen/vtk
  • AOphagen/vtk
  • byhongda/vtk
  • HuangLiJinJames/vtk
  • NicholasWon47/vtk
  • chenhaomagnetic/vtk
  • imngy/vtk
  • maxGimeno/vtk
  • kf6kjg/vtk
  • cstew2/vtk
  • lrineau/vtk
  • vnpavanelli/vtk
  • erichlf/vtk
  • SunBlack/vtk
  • PauloCarvalhoRJ/vtk
  • McrmDev/vtk
  • jblekien/vtk
  • guerrero78/vtk
  • hygonsoc/vtk
  • embeddedmz/vtk
  • wangtaoz/vtk
  • andrea-iob/vtk
  • ollielo/vtk
  • boonth/vtk
  • lugia-kun/vtk
  • adrien.boucaud/vtk
  • jstark/vtk
  • mathiash/vtk
  • patrick-oleary/vtk
  • patchett2002/vtk
  • tbiedert/vtk
  • MITRALZ/vtk
  • shihabrus/vtk
  • Xaxetrov/vtk
  • charles.gueunet/vtk
  • edern.haumont/vtk
  • schweitzer/vtk
  • leonhardt/vtk
  • williamfgc/vtk
  • hococoder/vtk
  • barcharcraz/vtk
  • lcantell/vtk
  • matt.leotta/vtk
  • kairong.jiang/vtk
  • neohsbrother/vtk
  • animeshbaranawal/vtk
  • jdoenias/vtk
  • bmwiedemann/vtk
  • stephen.sanchez/vtk
  • kislinsk/vtk
  • yufeimi/vtk
  • milljm/vtk
  • zmj1316/vtk
  • zhuokaizhao/vtk
  • nghia.truong/vtk
  • Mycai/vtk
  • Jacques-Bernard/vtk
  • yohann.bearzi/vtk
  • nghiatruong.vn/vtk
  • caitlin.ross/vtk
  • aandreyev/vtk
  • robustwangace/vtk
  • kovtuh/vtk
  • paulyc/vtk
  • pronaman/vtk
  • huyidao625/vtk
  • EvgenyVRN/vtk
  • yale.lee_nga/vtk
  • cobo/vtk
  • Highphone110/vtk
  • kevin.tew/vtk
  • daniel.jasinski/vtk
  • aspsee/vtk
  • Jellby/vtk
  • Bo98/vtk
  • tkoyama010/vtk
  • keith.m.ballard/vtk
  • XinhuaZhang/vtk
  • Simon-Esneault/vtk
  • maximilian.reimer.42/vtk
  • florian360/vtk
  • patrick.avery/vtk
  • aglv/vtk
  • mat127/vtk
  • brad-t-moore/vtk
  • thompson318/vtk
  • kingyue737/vtk
  • gilcu2/vtk
  • shogarth/vtk
  • doktorkjeld/vtk
  • BuzzBurrowes/vtk
  • amine.aboufirass/vtk
  • kirv/vtk
  • westphalm/vtk
  • gerald.lodron/vtk
  • yhtank/vtk
  • paul.lafoix/vtk
  • KiraGabi/vtk
  • ralovich/vtk
  • s.jafari.m/vtk
  • richardc/vtk
  • larsoner/vtk
  • DavidLaidlaw/vtk
  • thibault.pelletier/vtk
  • dhanakoti.murali/vtk
  • vbolea/vtk
  • aravind90/vtk
  • martijnkoopman/vtk
  • Tiphainejh/vtk
  • yozara/vtk
  • NicolaasWeideman/vtk
  • fdepourcq/vtk
  • Eustache/vtk
  • mdaley/vtk
  • aangelos28/vtk
  • RaoGY/vtk
  • sthibaul/vtk
  • qyr3366/vtk
  • ChristophHonal/vtk
  • christos.tsolakis/vtk
  • Cool/vtk
  • hansuk/vtk
  • mdorier/vtk
  • nerdalien/vtk
  • yasushi.saito/vtk
  • paul.choisel/vtk
  • kovynev/vtk
  • bobmiller/vtk
  • ziqiangxu/vtk
  • gonzalosaezm55/vtk
  • SailCPU/vtk
  • woodbot/vtk
  • yufan/vtk
  • amelvill-umich/vtk
  • mossaiby/vtk
  • likehuaer/vtk
  • timothee.chabat/vtk
  • Senidenary/vtk
  • Tobias-Fischer/vtk
  • BrentFoster/vtk
  • thliebig/vtk
  • thomas.caissard/vtk
  • whophil/vtk
  • RafaelPalomar/vtk
  • Angelo-abel/vtk
  • shawfei/vtk
  • MattesSchu/vtk
  • guillaume.gindre/vtk
  • maack/vtk
  • zqcolorful/vtk
  • tniemi/vtk
  • imalkov82/vtk
  • bzindovic/vtk
  • v.engelgardt/vtk
  • mjjackey/vtk
  • halowine/vtk
  • laurenn.lam/vtk
  • zonghx/vtk
  • ProGamerCode/vtk
  • bp85540/vtk
  • julia.sanchez/vtk
  • melanie.carriere/vtk
  • jules.bourdais/vtk
  • jerome.dias/vtk
  • luca.lacaille/vtk
  • octave.rossi/vtk
  • c.wetterer-nelson/vtk
  • nima.tofighi/vtk
  • jspanchu/vtk
  • jsteele/vtk
  • PetiteViking/vtk
  • bart/vtk
  • LucasGasparinoBSC/vtk
  • julien2412/vtk
  • francois.mazen/vtk
  • lxgwd1983/vtk
  • timothee.couble/vtk
  • benntqoo/vtk
  • jmhawkins/vtk
  • stonej/vtk
  • JackGuyver/vtk
  • rodrigomologni/vtk
  • chart3388/vtk
  • jessica.marquis/vtk
  • rockandsalt/vtk
  • zakaria220/vtk
  • ryan.krattiger1/vtk
  • darktemplarbasealt/vtk
  • scbiradar/vtk
  • andrew.wilson/vtk
  • moritz-h/vtk
  • kyzitemelos93/vtk
  • qqzhoucn/vtk
  • laurent.malka/vtk
  • akaszynski/vtk
  • spiros.tsalikis/vtk
  • sercxjo/vtk
  • jesper.norell/vtk
  • tiffany.chhim/vtk
  • jennifermanzella11/vtk
  • loongson-zn/vtk
  • RonRahaman/vtk
  • Snethy/vtk
  • antoine.ruffion/vtk
  • air-h-128k-il/vtk
  • atomicky/vtk
  • chenjt2001/vtk
  • cclauss/vtk
  • Connor-Bowley/vtk
  • ferdymercury/vtk
  • connor.bowley/vtk
  • Tianyang86/vtk
  • stephen.crowell/vtk
  • xzhang/vtk
  • antoine.schieb/vtk
  • ArchangeGabriel/vtk
  • thomas.galland/vtk
  • kadabraqc/vtk
  • sanguinariojoe/vtk
  • tom.suchel/vtk
  • mgoodson-cvd/vtk
  • jtojnar/vtk
  • bwoodsend/vtk
  • frantze.raphael/vtk
  • YuhaoQiu/vtk
  • user-zmt/vtk
  • XiaLiChao82/vtk
  • biagas/vtk
  • gaspard.thevenon/vtk
  • nicoco/vtk
  • svenevs/vtk
  • olesalscheider/vtk
  • EvanHampton-Seequent/vtk
  • spsjorspeterse/vtk
  • p-j-smith/vtk
  • jaswant.panchumarti/vtk
  • nasos/vtk
  • david.berger/vtk
  • dmt/vtk
  • huangjx-beijing/vtk
  • andtokm/vtk
  • MehdiChinoune/vtk
  • alexy.pellegrini/vtk
  • lucas.givord/vtk
  • jianhui2769/vtk
  • chengchengjing/vtk
  • scienceasdf/vtk
  • maidamai0/vtk
  • GuillaumeFavelier/vtk
  • ayenpure/vtk
  • ikerssm/vtk
  • hakostra/vtk
  • epalmer/vtk
  • Dophi123/vtk
  • julien.fausty/vtk
  • zjibben/vtk
  • nncarlson/vtk
  • Simon96128/vtk
  • jiapei1001/vtk
  • jiapei100/vtk
  • Failxxx/vtk
  • jcorbettfrank/vtk
  • Xingorno/vtk
  • windgs/vtk
  • orbisvicis/vtk
  • jramaiah/vtk
  • luzpaz/vtk
  • kammnd/vtk
  • lokessh/vtk
  • QinChen1998/vtk
  • mirenradia/vtk
  • tbirdso/vtk
  • jones/vtk
  • HollowSun/vtk
  • db/vtk
  • matthiasbock/vtk
  • adam-grant-hendry/vtk
  • Kenichiro-Yoshimi/vtk
  • redemptorridon/vtk
  • Neumann-A/vtk
  • tereshkinvadimst/vtk
  • francorougier60/vtk
  • felixonmars/vtk
  • gabrielmuller/vtk
  • Alex9/vtk
  • XinweiHsu/vtk
  • Zz-er/vtk
  • ferdnyc/vtk
  • mahmoudmohamedk8200949/vtk
  • HamsaSaber/vtk
  • boomanaiden154/vtk
  • bebuch/vtk
  • fab/vtk
  • chrisadamsonmcri/vtk
  • yarous224/vtk
  • zhenhaochu/vtk
  • pranjal.sahu/vtk
  • thibault.bruyere/vtk
  • banesullivan/vtk
  • is0591hs/vtk
  • philipp.weissenbacher/vtk
  • xavier.tricoche/vtk
  • hopfer.benjamin/vtk
  • liyinyan/vtk
  • gabriel.lefloch/vtk
  • bistek/vtk
  • mmXIO/vtk
  • MicK7/vtk
  • jndxljun/vtk
  • Shirin_ra/vtk
  • hanfengyu/vtk
  • zhhaoyuting111/vtk
  • john-stone/vtk
  • woosukbyun0724/vtk
  • xenosLit/vtk
  • ashishmalik5am/vtk
  • j824h/vtk
  • jschueller/vtk
  • alexdewar/vtk
  • mo.gomaa1996/vtk
  • rubendebruin/vtk
  • CiaoTan/vtk
  • bhaq-tri/vtk
  • TattiRuby/vtk
  • griffin28/vtk
  • he.wryyy/vtk
  • aly.tireira/vtk
  • Riaa/vtk
  • b89alireza/vtk
  • john.parent/vtk
  • marin.kajtazi/vtk
  • andy9t7/vtk
  • mikedubb0811/vtk
  • kookoo9999/vtk
  • charly.bollinger/vtk
  • kamm1948/vtk
  • jacob.moore/vtk
  • gaoxinyu18/vtk
  • zhouyi-u/vtk
  • Robbie/vtk
  • couletj/vtk
  • julien.chaize1/vtk
  • shreeni152/vtk
  • lkaly/vtk
  • louis.gombert/vtk
  • linneapalmstrom/vtk
  • ppebay/vtk
  • Rocky/vtk
  • jiangxingkai/vtk
  • xutang/vtk
  • jens.munk.hansen/vtk
  • 5268368/vtk
  • jumbojing/vtk
  • vectorD/vtk
  • mo-schmid/vtk
  • CC9701/vtk
  • Diiiiii-9/vtk
  • moussa-li/vtk
  • MatthewFlamm/vtk
  • sergeylesnik/vtk
  • xpnguyen/vtk
  • FireFlyUh/vtk
  • klevzoff/vtk
  • jake.yun/vtk
  • ixxi/vtk
  • stavbodik/vtk
  • willdunklin/vtk
  • hjhicks321/vtk
  • ymao.mu/vtk
  • fghoussen/vtk
  • Otahal/vtk
  • OccupyMars2025/vtk
  • dglaeser/vtk
  • Skyde/vtk
  • rbinyahib/vtk
  • jmisedam/vtk
  • petlenz/vtk
  • nmnobre/vtk
  • mheinsen/vtk
  • LimitingFactor/vtk
  • Senguo/vtk
  • lee.newberg/vtk
  • svniemeijer/vtk
  • alfiogn/vtk
  • 2xB/vtk
  • karamozianalireza1010/vtk
  • astucky/vtk
  • penfe/vtk
  • lgombert/vtk
  • saichaitanya.rodda/vtk
  • thaumaturg1c/vtk
  • pkestene/vtk
  • rlexmann/vtk
  • gabokamaze/vtk
  • 212dandan/vtk
  • dinghao19960829/vtk
  • ScarpMarc/vtk
  • yangdonglai/vtk
  • stauffert.maxime/vtk
  • dyollb/vtk
  • hollowsunhc/vtk
  • loic.gaillard/vtk
  • ychaos/vtk
  • dperozzi/vtk
  • SeanCurtis-TRI/vtk
  • jhodges/vtk
  • jingliang2005/vtk
  • hbwhzc/vtk
  • zellmann/vtk
  • germa89/vtk
  • 2nafish117/vtk
  • uporersith/vtk
  • jordi.subirana/vtk
  • carlosgcolon/vtk
  • PeterFranzSeequent/vtk
  • cristianAnd24/vtk
  • mrbean-bremen/vtk
  • usiems/vtk
  • Krzmbrzl/vtk
  • tom.clabault/vtk
  • dpseiter1/vtk
  • scivision/vtk
  • Donvlouss/vtk
  • fedormsv/vtk
  • chandan.satija/vtk
  • anuraaga/vtk
  • kxxt/vtk
  • ryosga/vtk
  • Ajile3D/vtk-ajile
  • matekelemen/vtk
  • lililiangyu/vtk
  • ArashPartow/vtk
  • Peter.Zajac/vtk
  • zackgalbreath/vtk
  • bansan/vtk
  • leon.victor/vtk
  • gabbyva5/vtk
  • ClaudioHoffmann/vtk
  • larshg/vtk
  • barracuda156/vtk
  • niconiconi/vtk
  • quangvd3/vtk
  • lmaoha/vtk
  • jarredgaudineer/vtk
  • YingjuHan/vtk
  • afa/vtk
  • thecasterian/vtk
  • codeling/vtk
  • wortiz/vtk
  • undeadde/vtk
  • jonathanschilling/vtk
  • ychu-hoo/vtk
  • FlashPanda/vtk
  • rachedwaly/vtk
  • DownerCase/vtk
  • TurBoss/vtk
  • dunyazad/vtk
  • marquis.weng/vtk
  • chir-set/vtk
  • Mechazo11/az-vtk
  • nekto1989/vtk
  • jean.fechter/vtk
  • anonymous-fys/vtk
  • clintonstimpson/vtk
  • krande/vtk
  • zist8888/vtk
  • Joker-7-7/vtk
  • skashtanov/vtk
  • o.derewonko/vtk
  • ndelpuppo/vtk
  • kenavolic/vtk
  • raimund-schluessler/vtk
  • medmssaouri/vtk-pca-normals
  • karchit0509/vtk
  • gapry/vtk
  • guillaume-jacquenot/vtk
  • Dave-Allured/vtk
  • ctaylo41/vtk
  • johnnynunez/vtk
  • 1div0/vtk
  • aruggieri/vtk
  • LunaNebula/vtk
  • quinn.powell/vtk
  • exbluesbreaker/vtk
  • junghans/vtk
  • NikitaKolebaev/vtk
  • jwilson1881/vtk
  • celynchgt/vtk
  • guillaume.gisbert/vtk
853 results
Show changes
Commits on Source (60)
Showing
with 235 additions and 89 deletions
if (NOT DEFINED ENV{CI})
return ()
endif ()
if (DEFINED ENV{GITLAB_CI})
message(STATUS
"GitLab CI Pipeline: $ENV{CI_PIPELINE_URL}")
message(STATUS
"GitLab CI Job: $ENV{CI_JOB_URL}")
if (DEFINED ENV{CI_MERGE_REQUEST_PROJECT_URL})
message(STATUS
"GitLab Merge Request: $ENV{CI_MERGE_REQUEST_PROJECT_URL}/-/merge_requests/$ENV{CI_MERGE_REQUEST_IID}")
endif ()
if (DEFINED ENV{CI_PIPELINE_SCHEDULE_DESCRIPTION})
message(STATUS
"GitLab Scheduled Pipeline: $ENV{CI_PIPELINE_SCHEDULE_DESCRIPTION}")
endif ()
else ()
message(STATUS
"CI detected, but no known backend")
endif ()
......@@ -6,7 +6,7 @@ set(VTK_MINOR_VERSION 4)
# the date component is updated while it is in progress, the bump of the minor
# version ends up conflicting with the patch version update.
set(VTK_BUILD_VERSION 20250311)
set(VTK_BUILD_VERSION 20250316)
if (NOT VTK_MINOR_VERSION LESS 100)
message(FATAL_ERROR
......
......@@ -12,6 +12,7 @@ endif ()
set(vtk_cmake_dir "${VTK_SOURCE_DIR}/CMake")
list(INSERT CMAKE_MODULE_PATH 0 "${vtk_cmake_dir}")
include(vtkCI)
if (APPLE)
include(vtkApple)
......
......@@ -4,6 +4,7 @@
#include "vtkCommand.h"
#include "vtkDebugLeaks.h"
#include "vtkDeprecation.h"
#include "vtkGarbageCollector.h"
#include "vtkObjectFactory.h"
#include "vtkTimeStamp.h"
......@@ -714,6 +715,17 @@ void vtkSubjectHelper::PrintSelf(ostream& os, vtkIndent indent)
//--------------------------------vtkObject observer-----------------------
unsigned long vtkObject::AddObserver(unsigned long event, vtkCommand* cmd, float p)
{
// VTK_DEPRECATED_IN_9_5_0()
// Remove this "#if/#endif" code block when removing 9.5.0 deprecations
#if VTK_DEPRECATION_LEVEL >= VTK_VERSION_CHECK(9, 4, 20241008)
if (event == vtkCommand::WindowResizeEvent && this->IsA("vtkRenderWindowInteractor"))
{
vtkWarningMacro(
"WindowResizeEvent will not be generated by vtkRenderWindowInteractor after VTK 9.6.\n"
"Use ConfigureEvent instead, or observe WindowResizeEvent on the vtkRenderWindow.");
}
#endif
if (!this->SubjectHelper)
{
this->SubjectHelper = new vtkSubjectHelper;
......
......@@ -6,6 +6,7 @@
#include "vtkDoubleArray.h"
#include "vtkIntArray.h"
#include "vtkMath.h"
#include "vtkMathUtilities.h"
#include "vtkObjectFactory.h"
#include "vtkStructuredGrid.h"
#include "vtkUnsignedIntArray.h"
......@@ -231,6 +232,26 @@ bool vtkAMRInformation::Audit()
vtkErrorMacro("Invalid spacing at level " << i << endl);
}
}
if (this->HasRefinementRatio())
{
double ratio = this->Refinement->GetTuple1(0);
unsigned int nextLevel = i + 1;
if (nextLevel < this->GetNumberOfLevels())
{
double nextSpacing[3];
this->GetSpacing(nextLevel, nextSpacing);
for (int axis = 0; axis < 3; axis++)
{
if (axis != emptyDimension &&
!vtkMathUtilities::NearlyEqual(
ratio, vtkMathUtilities::SafeDivision(h[axis], nextSpacing[axis]), 10e-6))
{
vtkErrorMacro("Spacing and refinement ratio are inconsistent for level " << i << endl);
}
}
}
}
}
// check amr boxes
......
......@@ -2,15 +2,25 @@
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkOverlappingAMR
* @brief hierarchical dataset of vtkUniformGrids
* @brief a multi-resolution dataset based on vtkUniformGrid allowing overlaps
*
* vtkOverlappingAMR groups vtkUniformGrid into level of different refinement
* (AMR stands for Adaptive Mesh Refinement). See SetDataSet to add a new grid.
*
* vtkOverlappingAMR extends vtkUniformGridAMR by exposing access to the
* amr meta data, which stores all structural information represented
* by an vtkAMRInformation object
* The grids of a level are expected to have the same spacing and refinement ratio.
* The refinement ratio represent the spacing factor between a level and the
* previous one. This class does not ensure the link between spacing and refinement
* ratio: please set them carefully.
*
* Associated to each grid, a vtkAMRBox object describes the main information
* of the grid: origin, extent, spacing. When creating a vtkOverlappingAMR,
* you should call SetAMRBox for each block of each level.
*
* In a distributed environement, the structure should be shared across all rank:
* the vtkAMRInformation and vtkAMRBox should be duplicated as needed.
*
* @sa
* vtkAMRInformation
* vtkAMRInformation, vtkNonOverlappingAMR, vtkUniformGridAMR, vtkAMRBox
*/
#ifndef vtkOverlappingAMR_h
......@@ -54,7 +64,16 @@ public:
///@{
/**
* Get/Set the grid spacing at a given level
* Get/Set the grid spacing at a given level.
* Note that is expected (but not enforeced) that spacing evolves according
* to RefinementRatio factor from previous level to current.
* In pseudo code, you should ensure the following:
* ```
* GetSpacing(lvl, spacing)
* SetSpacing(lvl + 1, spacing / RefinementRatio)
* ```
*
* See SetRefinementRatio.
*/
void SetSpacing(unsigned int level, const double spacing[3]);
void GetSpacing(unsigned int level, double spacing[3]);
......
......@@ -2,12 +2,15 @@
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkUniformGridAMR
* @brief a concrete implementation of vtkCompositeDataSet
* @brief a multi-resolution dataset based on vtkUniformGrid
*
* vtkUniformGridAMR is an AMR (hierarchical) composite dataset that holds vtkUniformGrids.
* vtkUniformGridAMR (AMR stands for Adaptive Mesh Refinement)
* is a container for vtkUniformGrid. Each grid is added as a block of a given level.
*
* The structure of the container is described in a vtkAMRInformation object.
*
* @sa
* vtkUniformGridAMRDataIterator
* vtkOverlappingAMR, vtkNonOverlappingAMR, vtkAMRInformation, vtkUniformGridAMRDataIterator
*/
#ifndef vtkUniformGridAMR_h
......
## Generate ConfigureEvent for Qt QResizeEvent
The QVTKInteractorAdapter now translates QResizeEvent into
a VTK ConfigureEvent. This brings its behavior in line with
the native X11/Windows/macOS event handling, which generate
ConfigureEvent in response to the native UI resize events.
## Fix vtkParticleTracer with unstructured data
Fix an issue leading to crash in vtkParticleTracer where the locators
for unstructured data would not have been created.
## vtkParticleTracer::CachedData private
Previously protected member vtkParticleTracer::CachedData is now a private
member. It is not intended to be used by classes inheriting vtkParticleTracer.
## Fix lighting calculations for PBR interpolation
When both directional and positional lights were intermixed in the view, the polydata mapper treated
directional lights as positional and generated incorrect renderings. This issue is now fixed.
|Before|After|
|:--:|:--:|
|![](./pbr_light_before.png)|![](https://vtk.org/files/ExternalData/SHA512/01b2f3261b9dc1550b1dae1abcc32ab45c170964500115ee66efba9200ff46485d2bee6efe1e13c6972630661c29dfac5abc83de7ac88b21d566a3db215936d4)|
In the images above, there are two lights - a positional light in front of the lower left sphere and
a directional light in front of the third sphere in the second-last row.
As visible in the **Before** image, the directional light is treated as positional (see light
reflected in the neighborhood spheres) and has a conical intensity fall-off.
In the **After** image, once can see that the directional light is treated as a point light located
at an infinite distance from the scene.
Documentation/release/dev/pbr_light_before.png

283 KiB

## Update fast_float to be based on 8.0.2
Update fast_float third party library to be based
on [fast_float 8.0.2](https://github.com/fastfloat/fast_float/releases/tag/v8.0.2).
## VTKHDF Writer: Support writing composite temporal datasets
The vtkHDFWriter support now extends to composite and temporal datasets (multiblock and partitioned dataset collection), all written in a same file.
......@@ -16,6 +16,7 @@
#include "vtkCompositeDataWriter.h"
#include "vtkImageToStructuredGrid.h"
#include "vtkMultiBlockDataSet.h"
#include "vtkNew.h"
#include "vtkOverlappingAMR.h"
#include "vtkStructuredGridWriter.h"
#include "vtkUniformGrid.h"
......@@ -35,15 +36,13 @@ void WriteUniformGrid(vtkUniformGrid* g, const std::string& prefix)
{
assert("pre: Uniform grid (g) is NULL!" && (g != nullptr));
vtkXMLImageDataWriter* imgWriter = vtkXMLImageDataWriter::New();
vtkNew<vtkXMLImageDataWriter> imgWriter;
std::ostringstream oss;
oss << prefix << "." << imgWriter->GetDefaultFileExtension();
imgWriter->SetFileName(oss.str().c_str());
imgWriter->SetInputData(g);
imgWriter->Write();
imgWriter->Delete();
}
//------------------------------------------------------------------------------
......@@ -54,14 +53,13 @@ void WriteAMRData(vtkOverlappingAMR* amrData, const std::string& prefix)
// Sanity check
assert("pre: AMR dataset is NULL!" && (amrData != nullptr));
vtkCompositeDataWriter* writer = vtkCompositeDataWriter::New();
vtkNew<vtkCompositeDataWriter> writer;
std::ostringstream oss;
oss << prefix << ".vthb";
writer->SetFileName(oss.str().c_str());
writer->SetInputData(amrData);
writer->Write();
writer->Delete();
}
//------------------------------------------------------------------------------
......@@ -98,7 +96,7 @@ void WriteMultiBlockData(vtkMultiBlockDataSet* mbds, const std::string& prefix)
{
// Sanity check
assert("pre: Multi-block dataset is NULL" && (mbds != nullptr));
vtkXMLMultiBlockDataWriter* writer = vtkXMLMultiBlockDataWriter::New();
vtkNew<vtkXMLMultiBlockDataWriter> writer;
std::ostringstream oss;
oss.str("");
......@@ -107,7 +105,6 @@ void WriteMultiBlockData(vtkMultiBlockDataSet* mbds, const std::string& prefix)
writer->SetFileName(oss.str().c_str());
writer->SetInputData(mbds);
writer->Write();
writer->Delete();
}
//------------------------------------------------------------------------------
......@@ -115,7 +112,7 @@ void WriteMultiBlockData(vtkMultiBlockDataSet* mbds, const std::string& prefix)
// origin, grid spacing and dimensions.
vtkUniformGrid* GetGrid(double* origin, double* h, int* ndim)
{
vtkUniformGrid* grd = vtkUniformGrid::New();
vtkNew<vtkUniformGrid> grd;
grd->Initialize();
grd->SetOrigin(origin);
grd->SetSpacing(h);
......@@ -136,10 +133,9 @@ void ComputeCellCenter(vtkUniformGrid* grid, const int cellIdx, double c[3])
assert("post: cell is NULL" && (myCell != nullptr));
double pCenter[3];
double* weights = new double[myCell->GetNumberOfPoints()];
std::vector<double> weights(myCell->GetNumberOfPoints());
int subId = myCell->GetParametricCenter(pCenter);
myCell->EvaluateLocation(subId, pCenter, c, weights);
delete[] weights;
myCell->EvaluateLocation(subId, pCenter, c, weights.data());
}
VTK_ABI_NAMESPACE_END
......
......@@ -65,11 +65,10 @@ int main(int argc, char** argv)
SetPulse();
// STEP 1: Get the AMR dataset
vtkOverlappingAMR* amrDataSet = GetAMRDataSet();
auto amrDataSet = vtkSmartPointer<vtkOverlappingAMR>::Take(GetAMRDataSet());
assert("pre: nullptr AMR dataset" && (amrDataSet != nullptr));
AMRCommon::WriteAMRData(amrDataSet, "Gaussian2D");
amrDataSet->Delete();
return 0;
}
......@@ -89,7 +88,7 @@ void AttachPulseToGrid(vtkUniformGrid* grid)
{
assert("pre: grid is nullptr!" && (grid != nullptr));
vtkDoubleArray* xyz = vtkDoubleArray::New();
vtkNew<vtkDoubleArray> xyz;
xyz->SetName("GaussianPulse");
xyz->SetNumberOfComponents(1);
xyz->SetNumberOfTuples(grid->GetNumberOfCells());
......@@ -111,7 +110,6 @@ void AttachPulseToGrid(vtkUniformGrid* grid)
} // END for all cells
grid->GetCellData()->AddArray(xyz);
xyz->Delete();
}
//------------------------------------------------------------------------------
......@@ -123,7 +121,7 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[0] = origin[1] = -2.0;
origin[2] = 0.0;
vtkOverlappingAMR* data = vtkOverlappingAMR::New();
vtkNew<vtkOverlappingAMR> data;
data->Initialize(NumLevels, BlocksPerLevel);
data->SetOrigin(origin);
data->SetGridDescription(VTK_XY_PLANE);
......@@ -139,14 +137,13 @@ vtkOverlappingAMR* GetAMRDataSet()
int blockId = 0;
int level = 0;
vtkUniformGrid* root = AMRCommon::GetGrid(origin, h, ndim);
auto root = vtkSmartPointer<vtkUniformGrid>::Take(AMRCommon::GetGrid(origin, h, ndim));
vtkAMRBox box(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
AttachPulseToGrid(root);
data->SetSpacing(level, h);
data->SetAMRBox(level, blockId, box);
data->SetDataSet(level, blockId, root);
root->Delete();
// Block 1,0
ndim[0] = ndim[1] = 9;
......@@ -156,14 +153,13 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[2] = 0.0;
blockId = 0;
level = 1;
vtkUniformGrid* grid1 = AMRCommon::GetGrid(origin, h, ndim);
auto grid1 = vtkSmartPointer<vtkUniformGrid>::Take(AMRCommon::GetGrid(origin, h, ndim));
vtkAMRBox box1(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
AttachPulseToGrid(grid1);
data->SetSpacing(level, h);
data->SetAMRBox(level, blockId, box1);
data->SetDataSet(level, blockId, grid1);
grid1->Delete();
// Block 1,1
ndim[0] = ndim[1] = 9;
......@@ -173,14 +169,13 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[1] = origin[2] = 0.0;
blockId = 1;
level = 1;
vtkUniformGrid* grid3 = AMRCommon::GetGrid(origin, h, ndim);
vtkAMRBox box3(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
auto grid2 = vtkSmartPointer<vtkUniformGrid>::Take(AMRCommon::GetGrid(origin, h, ndim));
vtkAMRBox box2(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
AttachPulseToGrid(grid3);
AttachPulseToGrid(grid2);
data->SetSpacing(level, h);
data->SetAMRBox(level, blockId, box3);
data->SetDataSet(level, blockId, grid3);
grid3->Delete();
data->SetAMRBox(level, blockId, box2);
data->SetDataSet(level, blockId, grid2);
vtkAMRUtilities::BlankCells(data);
data->Audit();
......
......@@ -65,11 +65,10 @@ int main(int argc, char** argv)
SetPulse();
// STEP 1: Get the AMR dataset
vtkOverlappingAMR* amrDataSet = GetAMRDataSet();
assert("pre: nullptr AMR dataset" && (amrDataSet != nullptr));
vtkSmartPointer<vtkOverlappingAMR> amrDataSet;
amrDataSet.TakeReference(GetAMRDataSet());
AMRCommon::WriteAMRData(amrDataSet, "Gaussian3D");
amrDataSet->Delete();
return 0;
}
......@@ -89,7 +88,7 @@ void AttachPulseToGrid(vtkUniformGrid* grid)
{
assert("pre: grid is nullptr!" && (grid != nullptr));
vtkDoubleArray* xyz = vtkDoubleArray::New();
vtkNew<vtkDoubleArray> xyz;
xyz->SetName("GaussianPulse");
xyz->SetNumberOfComponents(1);
xyz->SetNumberOfTuples(grid->GetNumberOfCells());
......@@ -111,12 +110,11 @@ void AttachPulseToGrid(vtkUniformGrid* grid)
} // END for all cells
grid->GetCellData()->AddArray(xyz);
xyz->Delete();
}
//------------------------------------------------------------------------------
vtkOverlappingAMR* GetAMRDataSet()
{
vtkOverlappingAMR* data = vtkOverlappingAMR::New();
vtkNew<vtkOverlappingAMR> data;
int blocksPerLevel[2] = { 1, 3 };
double globalOrigin[3] = { -2.0, -2.0, -2.0 };
data->Initialize(2, blocksPerLevel);
......@@ -134,12 +132,12 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[0] = origin[1] = origin[2] = -2.0;
int blockId = 0;
int level = 0;
vtkUniformGrid* root = AMRCommon::GetGrid(origin, h, ndim);
vtkSmartPointer<vtkUniformGrid> root;
root.TakeReference(AMRCommon::GetGrid(origin, h, ndim));
vtkAMRBox box(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
AttachPulseToGrid(root);
data->SetAMRBox(level, blockId, box);
data->SetDataSet(level, blockId, root);
root->Delete();
// Block 1
ndim[0] = 3;
......@@ -148,12 +146,12 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[0] = origin[1] = origin[2] = -2.0;
blockId = 0;
level = 1;
vtkUniformGrid* grid1 = AMRCommon::GetGrid(origin, h, ndim);
vtkSmartPointer<vtkUniformGrid> grid1;
root.TakeReference(AMRCommon::GetGrid(origin, h, ndim));
AttachPulseToGrid(grid1);
vtkAMRBox box1(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
data->SetAMRBox(level, blockId, box1);
data->SetDataSet(level, blockId, grid1);
grid1->Delete();
// Block 2
ndim[0] = 3;
......@@ -163,12 +161,12 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[1] = origin[2] = -1.0;
blockId = 1;
level = 1;
vtkUniformGrid* grid2 = AMRCommon::GetGrid(origin, h, ndim);
vtkSmartPointer<vtkUniformGrid> grid2;
grid2.TakeReference(AMRCommon::GetGrid(origin, h, ndim));
AttachPulseToGrid(grid2);
vtkAMRBox box2(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
data->SetAMRBox(level, blockId, box2);
data->SetDataSet(level, blockId, grid2);
grid2->Delete();
// Block 3
ndim[0] = 3;
......@@ -178,13 +176,16 @@ vtkOverlappingAMR* GetAMRDataSet()
origin[1] = origin[2] = -1.0;
blockId = 2;
level = 1;
vtkUniformGrid* grid3 = AMRCommon::GetGrid(origin, h, ndim);
vtkSmartPointer<vtkUniformGrid> grid3;
grid3.TakeReference(AMRCommon::GetGrid(origin, h, ndim));
vtkAMRBox box3(origin, ndim, h, data->GetOrigin(), data->GetGridDescription());
AttachPulseToGrid(grid3);
data->SetAMRBox(level, blockId, box3);
data->SetDataSet(level, blockId, grid3);
grid3->Delete();
vtkAMRUtilities::BlankCells(data);
data->Audit();
return (data);
}
vtk_module_test_data(
Data/clt.vtm
Data/clt/,REGEX:.*
Data/ParticleTracers/pathline.vtp
Data/ParticleTracers/streakline.vtp
Data/ParticleTracers/tracer.vtp)
Data/ParticleTracers/image_pathline.vtp
Data/ParticleTracers/image_streakline.vtp
Data/ParticleTracers/image_tracer.vtp
Data/ParticleTracers/ug_pathline.vtp
Data/ParticleTracers/ug_streakline.vtp
Data/ParticleTracers/ug_tracer.vtp)
if (NOT vtk_testing_cxx_disabled)
add_subdirectory(Cxx)
......
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
#include "vtkAppendDataSets.h"
#include "vtkGenerateTimeSteps.h"
#include "vtkGradientFilter.h"
#include "vtkImageData.h"
#include "vtkLogger.h"
#include "vtkNew.h"
#include "vtkParticlePathFilter.h"
......@@ -21,12 +23,14 @@
namespace
{
template <class TracerT>
bool Execute(vtkAlgorithm* input, vtkPolyData* seeds, vtkSmartPointer<vtkDataObject>&& expected)
bool Execute(vtkAlgorithm* input, vtkPolyData* seeds, bool vorticity,
vtkSmartPointer<vtkDataObject>&& expected)
{
vtkNew<TracerT> tracer;
tracer->SetInputConnection(0, input->GetOutputPort());
tracer->SetInputData(1, seeds);
tracer->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_POINTS, "Gradients");
tracer->SetComputeVorticity(vorticity);
for (int t = 0; t < 10; ++t)
{
......@@ -43,7 +47,8 @@ bool Execute(vtkAlgorithm* input, vtkPolyData* seeds, vtkSmartPointer<vtkDataObj
}
} // anonymous namespace
int TestParticleTracers(int argc, char* argv[])
bool TestParticleTracersInput(
int argc, char* argv[], vtkDataSet* input, std::string_view prefix, bool vorticity)
{
auto getBaseline = [&](std::string&& name)
{
......@@ -54,10 +59,8 @@ int TestParticleTracers(int argc, char* argv[])
return vtkSmartPointer<vtkDataObject>(reader->GetOutputDataObject(0));
};
vtkNew<vtkRTAnalyticSource> wavelet;
vtkNew<vtkGradientFilter> gradient;
vtkNew<vtkGenerateTimeSteps> temporal;
vtkNew<vtkParticleTracer> tracer;
vtkNew<vtkPolyData> seeds;
vtkNew<vtkPoints> points;
......@@ -71,15 +74,42 @@ int TestParticleTracers(int argc, char* argv[])
std::iota(timesteps.begin(), timesteps.end(), 0);
temporal->SetTimeStepValues(10, timesteps.data());
gradient->SetInputConnection(wavelet->GetOutputPort());
gradient->SetInputData(input);
temporal->SetInputConnection(gradient->GetOutputPort());
bool retVal = true;
::Execute<vtkParticleTracer>(
temporal, seeds, vorticity, getBaseline(std::string(prefix) + "tracer.vtp"));
retVal &= ::Execute<vtkParticlePathFilter>(
temporal, seeds, vorticity, getBaseline(std::string(prefix) + "pathline.vtp"));
retVal &= ::Execute<vtkStreaklineFilter>(
temporal, seeds, vorticity, getBaseline(std::string(prefix) + "streakline.vtp"));
if (!retVal)
{
vtkLog(ERROR, "With an input of type " << input->GetClassName());
}
return retVal;
}
int TestParticleTracers(int argc, char* argv[])
{
bool retVal = true;
// Test image input
vtkNew<vtkRTAnalyticSource> wavelet;
// mimicking catalyst environment
wavelet->SetNoPriorTemporalAccessInformationKey();
wavelet->Update();
retVal &= ::TestParticleTracersInput(argc, argv, wavelet->GetOutput(), "image_", true);
// Test unstructured grid input
vtkNew<vtkAppendDataSets> append;
append->SetInputConnection(wavelet->GetOutputPort());
append->Update();
bool retVal = ::Execute<vtkParticleTracer>(temporal, seeds, getBaseline("tracer.vtp"));
retVal &= ::Execute<vtkParticlePathFilter>(temporal, seeds, getBaseline("pathline.vtp"));
retVal &= ::Execute<vtkStreaklineFilter>(temporal, seeds, getBaseline("streakline.vtp"));
// Because of https://gitlab.kitware.com/vtk/vtk/-/issues/19632, disable vorticity computation
retVal &= ::TestParticleTracersInput(argc, argv, append->GetOutput(), "ug_", false);
return retVal ? EXIT_SUCCESS : EXIT_FAILURE;
}
......@@ -135,12 +135,7 @@ vtkParticleTracerBase::~vtkParticleTracerBase()
{
this->SetParticleWriter(nullptr);
this->SetParticleFileName(nullptr);
this->CachedData[0] = nullptr;
this->CachedData[1] = nullptr;
this->SetIntegrator(nullptr);
this->SetController(nullptr);
}
......@@ -764,19 +759,6 @@ int vtkParticleTracerBase::Initialize(
return 0;
}
// TODO DUPLICATE CODE FIXME
if (auto composite = vtkCompositeDataSet::SafeDownCast(input))
{
this->CachedData[1]->ShallowCopy(composite);
}
else
{
auto pds = vtkSmartPointer<vtkPartitionedDataSet>::New();
pds->SetNumberOfPartitions(1);
pds->SetPartition(0, input);
this->CachedData[1] = pds;
}
this->OutputPointData->InterpolateAllocate(inputs.front()->GetPointData());
this->ParticleAge->Initialize();
......@@ -875,6 +857,21 @@ int vtkParticleTracerBase::Initialize(
return 1;
}
//------------------------------------------------------------------------------
void vtkParticleTracerBase::InitializeNextCachedData(vtkDataObject* input)
{
this->CachedData[1].TakeReference(vtkPartitionedDataSet::New());
if (auto composite = vtkCompositeDataSet::SafeDownCast(input))
{
this->CachedData[1]->CompositeShallowCopy(composite);
}
else
{
this->CachedData[1]->SetNumberOfPartitions(1);
this->CachedData[1]->SetPartition(0, input);
}
}
//------------------------------------------------------------------------------
int vtkParticleTracerBase::Execute(
vtkInformation*, vtkInformationVector** inputVector, vtkInformationVector*)
......@@ -889,18 +886,21 @@ int vtkParticleTracerBase::Execute(
vtkInformation* inInfo = inputVector[0]->GetInformationObject(0);
vtkDataObject* input = inInfo->Get(vtkDataObject::DATA_OBJECT());
double currentTimeStep = this->GetCurrentTimeStep();
std::swap(this->CachedData[0], this->CachedData[1]);
if (auto composite = vtkCompositeDataSet::SafeDownCast(input))
if (this->CachedData[0].Get() == nullptr || this->CachedData[1].Get() == nullptr)
{
this->CachedData[1]->ShallowCopy(composite);
// First execution
// Initialize the next cached data then copy it to current cached data
this->InitializeNextCachedData(input);
this->CachedData[0] = this->CachedData[1];
}
else
{
auto pds = vtkSmartPointer<vtkPartitionedDataSet>::New();
pds->SetNumberOfPartitions(1);
pds->SetPartition(0, input);
this->CachedData[1] = pds;
// Not the first execution:
// Copy next data to current data then initialized
// next cached data with input
this->CachedData[0] = this->CachedData[1];
this->InitializeNextCachedData(input);
}
if (this->InitializeInterpolator() != VTK_OK)
......
......@@ -45,6 +45,7 @@ class vtkInitialValueProblemSolver;
class vtkIntArray;
class vtkMultiBlockDataSet;
class vtkMultiProcessController;
class vtkPartitionedDataSet;
class vtkPointData;
class vtkPoints;
class vtkPolyData;
......@@ -579,9 +580,6 @@ protected:
// The velocity interpolator
vtkSmartPointer<vtkTemporalInterpolatedVelocityField> Interpolator;
// Data for time step CurrentTimeStep-1 and CurrentTimeStep
vtkSmartPointer<vtkCompositeDataSet> CachedData[2];
// MPI controller needed when running in parallel
vtkSmartPointer<vtkMultiProcessController> Controller;
......@@ -639,6 +637,13 @@ protected:
friend class StreaklineFilterInternal;
static const double Epsilon;
private:
// Internal method to initialize CachedData[1] using the provided input
void InitializeNextCachedData(vtkDataObject* input);
// Data for time step CurrentTimeStep-1 and CurrentTimeStep
vtkSmartPointer<vtkPartitionedDataSet> CachedData[2];
};
VTK_ABI_NAMESPACE_END
......