[SHARE] Memories of a Broken Dimension - glitch techniques
grigou
Mar 31 2019 | 12:54 am
Hello guys !
I want to achieve the glitch effects used in the game Memories of a broken dimension.
But I can't get complex glitches like that with Max.
Any idea how I can make those beautiful glitches ?
Thank you for help !
Let's Play - Memories of a Broken Dimension + Download Link
- ygreqMar 31 2019 | 2:00 amThe easiest solution I saw was to actually use a royalty free effect in alpha. If you really want the effect. Of course if you really want to use max, that's a different story
- grigouMar 31 2019 | 10:43 amThanks for your help ! What free effect does this kind of visuals ? But indeed, i want to use Max for that, because I want to mix those visuals in realtime with other effects I made.
- Martin BeckMar 31 2019 | 3:33 pmThanks for sharing the link to the video GRIGOU. Very inspiring.The effects used for this seem to include the following: a) geometric distortion of rendered ego view - maybe the attached patcher shows a way how to get there:Max Patcher
In Max, select New From Clipboard.b) different effects on different parts of the rendered ego view (horizontal region) changing horizontal dimension. Something like this can be achieved using multiple jit.gl.cameras and adjusting their viewport settings. Also using different jit.gl.node @shader attached to the 3d objects might be useful here.c) gauss filter, edge filter - there are jit.gl.slab or jit.gl.pix versions available in Max.Some effects seem to be related to manipulation of vertices of the 3d objects via an vertex shader and some fragment shader manipulation as already noted with different viewports for different parts of the final image and additionally some fragment shader for the entire final rendering. - grigouMar 31 2019 | 4:19 pmHello Martin,I'm glad you liked the video ! I love that kind of visuals !!! A BIG THANKS for your advices and to took the time to make this patch (and with commented code !). I really appreciated, and I laughed when I saw you used also my audio glitch examples ! :)The result of your patch is clearly in the right direction !! I think I understand the global idea, but I always had difficulties to understand the effects of objects like : jit.unpack 3 @jump 3 2 3 @offset 0 3 5 I know it output each individual planes of a matrix, but how do you know what are those planes (and in which order they are) ? jump and offset attributes are mysterious to me...How do you learn to do those tricks with gen ? Especially the code part with signed normalized coordinates.I love glitch art, and I have a lot of ideas in mind to develop glitch machines with Max, but for now, I don't have enough skills to achieve my goals :( I don't have big difficulties to make glitch with audio, but with the video... it's another story !! Mathematics are clearly not my best skill, so it's difficult for me to know what to do when I want to make video glitch like that.I used jit.gl.slab and jit.gl.pix a little, but always taking part of code I found on this forum, but I could never do the effects myself from scratch, and shader are also a big mystery for me...Do you have any advice on how I could increase my skills on that glitch world ?Maybe creating a big thread on glitch art (audio and video) on this forum could be a good idea to regroup techniques, ideas, patches, etc. What do you think ?
- Martin BeckMar 31 2019 | 6:15 pmI think we should keep this thread alive. I am curious to know if someone else has some more ideas about what techniques are involved in the "Memories of Broken Dimension" video.Referring to jit.unpack you can have look here: https://youtu.be/d9TVSTr4K3s?t=364
- The order of planes is (x,y,z) (s,t) (nx,ny,nz)
- meaning the 3d coordinates of vertices,
- texture coordinates on the surface that is described by the vertices
- and the coordinates of the normals (the vectors that are perpendicular to the faces described by the vertices).
- In total it is actually 12 different planes including ARGB https://docs.cycling74.com/max5/tutorials/jit-tut/jitterappendixb.html
The normalised coordinates stuff is somehow standard way to access jit.matrix content. https://cycling74.com/tutorials/demystifying-expressions-in-jitter/ Using the [snorm] instead of [cell] is the preferred way if you want to use matrices of different size e.g. video of different resolution, because the code will behave invariant of this.Referring to my example the gauss function that I used was just an arbitrary approach to illustrate how to change the distortion amount along the y-axis. One could also use a noise function [jit.bfg] or another arbitrary matrix of different size than the [jit.gl.gridshape] that is fed in the left inlet of [jit.gen]. On would use an additional [in 2] object and a [sample] within [jit.gen] to distort the vertices with another pattern.My personal recommendation for great tutorials on jitter is this - tmhglndMar 31 2019 | 7:37 pmSem Shimla posted a nice tutorial here about displacing pixels to create a glitch effect, by using a looping video of glitch-effects.
- 👽R∆J∆ The Resident ∆lien👽Apr 01 2019 | 12:28 amamazing visuals in that game :) (also, love that patch of Martin's above, nice work 🙌)referring back to the video posted by the OP: maybe i'm mistaken and some of the effects really are a keyframe problem when the video was uploaded to youtube(i didn't try the original game out yet), but some of that pixelation that seems to 'flow' out from the objects in certain ways reminds me of Andrew Benson's optical-flow related shaders: https://cycling74.com/forums/sharing-new-distortions(since that thread seems to have dropped his attachment a couple times already, i'm attaching an extra .zip here just for posterity)also, here's Andrew's site for other stuff(some javascripts) too: https://pixlpa.com/ hope it helps.
- Martin BeckApr 01 2019 | 5:44 amCool Raja, I really like this optical flow related shader by Andrew. Thanks for pointing to this. Waking up this morning I thought I should have look at the patch I posted above and change the vertex manipulation to texture coordinate distortion just by rewiring the patch cords:Max Patcher
In Max, select New From Clipboard. - grigouApr 02 2019 | 8:41 pmVery nice ideas here ! Thanks a lot ! I already checked jit.unpack and jit expressions tutorials. It's a bit more clear. Now, I need to go deep in jit.gen and pix. And experiment with the patchs on this thread !
- Martin BeckApr 02 2019 | 9:58 pmAnyone any ideas how to achieve these kind of visuals only using Max ?
rt3
- grigouApr 02 2019 | 10:13 pmThanks for the video Martin ! It's really beautiful ! Love it ! For now, I tried to do a random VHS glitch with jit.gl.pix. The effect is interesting, but I think it could be better. What do you think guys ?Max Patcher
In Max, select New From Clipboard.And another try :Max Patcher
In Max, select New From Clipboard. - Martin BeckApr 04 2019 | 7:50 pm
- grigouApr 04 2019 | 11:43 pmReally nice ! A lot better than my attempt. Thanks Martin ! I still need to work on my noise VHS pattern generation to make a better glitch visual ! I'm not quite satisfied with my code for this part. Working on glitch ideas is an endless pleasure for me :)
- Martin BeckApr 04 2019 | 11:53 pmComprehensible passion :-)The usage of video input as pattern was also inspiring for me with this patch version here, but I should go to sleep now.Max Patcher
In Max, select New From Clipboard. - Martin BeckApr 06 2019 | 5:36 pmOn the way to understand how to achieve this kind of pixelation effect from https://vimeo.com/211346942I want to share this intermediate approach including the VHS glitch pattern generator from GRIGOU:Max Patcher
In Max, select New From Clipboard. - grigouApr 06 2019 | 5:52 pmThanks Martin for the patch ! The video you shared is really nice ! I love this kind of glitching geometry. I made some patches with 3D shapes generation like that, I will try to mix that with those glitchs.
- Martin BeckApr 14 2019 | 1:51 pmSome more glitch madnessMax Patcher
In Max, select New From Clipboard. - grigouApr 14 2019 | 8:08 pmThanks !!! So much nice technique to study in your patch ! The color displacement give a nice VHS style !!
- Martin BeckApr 14 2019 | 8:28 pmSo let's make the patch a little more crowded ;-) I recommend to use Rajas "Journey of the sparklies" as music to drive the visuals https://cycling74.com/forums/-share-•˚**˚•˚*_journey-of-the-sparklies_*˚•˚**˚•Max Patcher
In Max, select New From Clipboard. - grigouApr 14 2019 | 8:49 pmWonderful ! Love the scanlines effect. This effect wasn't here in your previous patch, but I didn't find what part of the patch is doing it. Maybe it's related to audio input ?
- Martin BeckApr 15 2019 | 8:02 pmThe main difference to the previous patch besides camera automation, voronoi origin automation and higher dim of the gridshape is the change in the pixelation code. Have look at the parameter horsamp. If it is zero the sampling in horizontal direction leads to the lines effect.
- Martin BeckApr 21 2019 | 8:08 pmLet's keep this thread alive -Glitch technique ideas.Max Patcher
In Max, select New From Clipboard. - Martin BeckApr 24 2019 | 7:25 pm... some more glitches and distortions. I recommend https://cycling74.com/forums/-share-•o_0∆cellblock-caravan∆o_o• as music to drive the visuals.Max Patcher
In Max, select New From Clipboard. - grigouApr 24 2019 | 10:03 pmMartin, you're the Master of glitch here !!! Your last patch is exactly what I was dreaming to do with Max since months (and years) ! jit.gl.pix is really a beast for those kind of visual glitches. I really need to master it. I have a question for the part 2 of your patch (the 2 jit.gl.texture objets) : is it better to feed textures with video ? Or it's possible to feed them with other kind of input without breaking the glitch effect ?I was thinking about sending the content of the jit.gl.node inside the two jit.gl.texture objets or the output of jit.gl.pix (the one for the displacement map) or the output of jit.gl.slab world @file cf.gaussian.2p.jxs or adding another glitch map for the texture.
- Roman ThileniusApr 24 2019 | 11:02 pmthis reminds me on actual glitches of quake or unreal engine type of games which were partially incompatible with certain graphics cards or a problem loading the correct shader for some elements in the map.
- Martin BeckApr 26 2019 | 8:32 amHi GRIGOU,
is it better to feed textures with video ? Or it's possible to feed them with other kind of input without breaking the glitch effect ?
Actually there is no difference between the use of [jit.gl.texture] and [jit.gl.node @capture 1] in the context of this patcher. The benefit of using [jit.gl.texture] is that you can switch the texture applied to an object by sending messages "texture texturename". This acts like a switch between different texture sources. This is used in my patch e.g. with the gridshape that generates the horizontal stripe that is overlayed on the image and that sometimes slides down. It uses two textures with the names "Off" and "texDisplaceStripe". The texture " Off" is empty, it is not explicitly created in the patch and Jitter automatically applies a white texture leaving the stripe region undistorted. (For better understanding reattach the [jit.pwindow] to the corresponding node - I had to disconnect the pwindows in order to increase rendering performance). You could create several other [jit.gl.texture], give them a name and apply message boxes to the gridshape. The input of the [jit.gl.texture] can be a [jit.movie @output_texture 1] or a [ jit.gl.node @capture 1] or a [jit.gl.slab] or a [jit.gl.pix] etc. -all of them output textures. Textures can be thought of as 4 plane matrices (One plane for Red, one for Green, one for Blue, one Alpha channel), but they reside on the GPU RAM and are processed on the GPU. [jit.matrix] is the equivalent on the CPU side and [jit.gl.pix] is for textures what is [ jit.gen] for [jit.matrix]. The [jit.gl.pix] take textures as input and process the pixels in parallel on the GPU by applying the code inside the [jit.gl.pix] to each pixel of the texture fed into its first inlet. The [sample] objects control which pixel from the first inlet texture is rendered to the output including interpolation - there is no need for the textures in the left and right inlet of [sample] to be of the same size. The output size or resolution of a [jit.gl.pix] is defined by the texture sent in its left inlet. The intensities of the pixels sent to the right inlet of [sample] object define the position to be sampled on the texture fed into the first inlet . In consequence the glitch effects vary with the intensity distribution of the texture in the right inlet of [sample]. - Martin BeckApr 26 2019 | 10:36 amThe creator of Memories of a Broken Dimension explains some details in this video here starting at 54:48.
Game Design Critique #13 - Memory of a Broken Dimension
- Martin BeckMay 02 2019 | 4:07 pmThis patch from Chris Vik http://chrisvik.com/max-patch-share-glitchface/ should be mentioned in this thread.Max Patcher
In Max, select New From Clipboard.Glitchface :: Jitter 3D mesh webcam audio reactivity
- grigouMay 03 2019 | 10:12 pmGood pick ! I already downloaded this patch years ago. Very impressive work.By the way, thanks for your explanation Martin (and the game design critique video). Very helpful.
- Martin BeckMay 05 2019 | 11:09 amThe Debris patch from Andrew Benson is also quiet nice for creating glitches in the style of "Memories of a Broken Dimension". https://cycling74.com/tutorials/jitter-recipes-book-3/Max Patcher
In Max, select New From Clipboard.Hey GRIGOU, what do you think of changing the title of this thread to e.g. "[share] Memories of a Broken Dimension - glitch techniques" to encourage other Jitter enthusiasts to contribute to it? As you proposed some time agocreating a big thread on glitch art
- grigouMay 05 2019 | 2:48 pmTitle changed ! I will search on my big Max folder to find and share other glitch patch. I made another audio glitch patch, but maybe it's not the best thread to post it if we talk about video.
- Martin BeckMay 10 2019 | 10:20 pmI have structured the patch a little bit, added some Sobel filter based effects and some automation.Max Patcher
In Max, select New From Clipboard. - Martin BeckMay 23 2019 | 9:24 pm
- grigouMay 26 2019 | 1:03 pmThanks Martin ! Another nice glitch effect ! For now I'm too busy with a show on tuesday, but after that, I want to take all your glitch algorithms and put them in separate patch. I think it would be cool to do glitch modules like the Vizzies. By the way, I share also here my 23 audio glitch algorithms. It could be mixed with those video glitchs.Max Patcher
In Max, select New From Clipboard. - grigouMay 29 2019 | 4:09 pmHey Martin, you're famous now :) : https://cycling74.com/tutorials/best-practices-in-jitter-part-1
For a real world example, the following patch posted by user Martin Beck from this epic thread on glitch techniques from the Jitter forum demonstrates the concept.
- 👽R∆J∆ The Resident ∆lien👽May 29 2019 | 6:57 pm
Hey Martin, you're famous now :)
haha, you BOTH are :) pretty sure folks are just in awe watching this thread in its entirety... i have nothing to add but praise 🙌 (they should create 'like' buttons or something similar for these forums, that way i wouldn't have to come in here and interrupt the flow just so i can emoji-bomb my praisez at y'allz: 💪👏🙌💃 🕺🙌👏👍 ) 🍻 - grigouMay 30 2019 | 11:54 amhaha thanks Raja ! I'm glad that this thread could also help other people !
- grigouMay 30 2019 | 11:18 pmThanks Andrew ! You're welcome to join the glitch family :-D I learned a lot with your jitter tutorials and I'm sure you have also great ideas to share on this thread !
- Andrew BensonMay 30 2019 | 11:30 pm:D I don't know if I can keep up with the looks you guys have already got going, but here's a weird animated pattern generator idea I came up with using jit.gl.pixMax Patcher
In Max, select New From Clipboard. - Martin BeckJun 01 2019 | 5:29 pmAnybody any ideas how to achieve this kind of Delaunay effect (fill the Delaunay regions* with sampled values of a video) used in Rawtekk's - "Here's to them" ? * or jit.bfg pattern ... I am happy to hear there are some people interested in this thread. Thanks for kind replies and contribution.
Rawtekk - Here's To Them (Official Video)
- grigouJun 14 2019 | 11:05 pmHello guys !I'm back with new glitchy stuff !!! First of all, thanks Andrew for your beautiful patch. Very inspiring, even if I don't really understand the jit.gl.pix part for now. And thanks Martin for the video. Unfortunately, it's way above my skills, so I can't help you with this :(So, I found a very simple way to generate glitchy patterns with jit.catch~ and some random. You just have to open any file with sfplay~. This work best with non compress files, dll files or apps. Try opening this one : http://www.telecharger-dll.fr/dll-AimRes.dll.htmlMax Patcher
In Max, select New From Clipboard. - grigouJun 15 2019 | 10:47 amYeah ! Love the result. What kind of file did you use ? The blue color is also nice, I need to add some options for controling colors in my patch. By the way, I will add another random layer by adding a switch before jit.normalize
- Martin BeckJun 15 2019 | 8:33 pmNice work GRIGOU - the basic concept reminds me of the Buchla 259e Twisted Waveform Oscillator - a wavetable oscillator that can use the internal operating system code as waveforms. I found another nice glitch video on Facebook from データコード 「datacode」: https://www.facebook.com/methlabrecordings/videos/592833154572601/
- grigouJun 19 2019 | 1:53 pmNew test... but I have a weird bug : jit.world don't always enable. Sometimes I need to toogle many times to enable it. Any idea why ? It happens only in this patch.To use the patch, load the jpeg I attach to my post. The result is really nice, but I need help to manage big files.When I load the image "ghost_notes_random_03", there's no problem, but when I use the file "SIGIL (1)", there's a huge drop of FPS even with jit.movie @colormode uyvy @output_texture 1How I can use big images (2000x2000 or more) and still keep a good framerate ?Max Patcher
In Max, select New From Clipboard. - daddymaxJun 19 2019 | 2:01 pmHuge thanks to all the people sharing patches here - so many good ideas and clever execution to learn from. Great stuff.
- grigouJun 19 2019 | 2:07 pmThank you ! :)By the way, for using the glitch effect in my patch, you can check the toggle to generate random value for jit.gl.pix or leave the toggle uncheck and choose a value between 0. (no effect) to 1. (full effect) with the number box.
- grigouJun 21 2019 | 11:07 amHey glitchy friends ! :) Any clues for the issues with jit.world and big files in my last patch ? Thanks !
- cervalJun 23 2019 | 8:41 amDear glitchers,I recently uploaded a vid demonstrating my new A/V - installation app "IVAR_2" All my thanks and respect to Grigou & Martin Beck for their great thread & patches which made my IVAR glitchy ;) https://www.youtube.com/watch?v=YY1Gazdp0h0
- Martin BeckJul 11 2019 | 5:42 pmI don't remember where I found this patch from Jean-Michel Couturier ( Blue Yeti, 2014), but I think it might find some application for the Broken Dimensions simulation. It uses Andrew Bensons optical flow shader to induce movement of a kind of fluid dynamics.
- grigouJul 15 2019 | 5:37 pmThank for sharing ! Interesting patch to study !By the way, I updated my patches and added a syphon recorder to record glitch videos !1. Patch to transform raw files into 2D glitches (+ audio glitches) :Max Patcher
In Max, select New From Clipboard.2. Patch that generate glitches like a vhs :Max Patcher
In Max, select New From Clipboard.3. Patch that generate glitches by messing up a 3D shape :Max Patcher
In Max, select New From Clipboard.And I'm still stuck with this patch :Max Patcher
In Max, select New From Clipboard.BUG #1 jit.world don't always enable when I check the toggle. BUG #2 I need help to keep a decent frame rate while using big files (2000x2000).No problem with this file : https://cycling74-web-uploads.s3.amazonaws.com/58ed0512285705c15ccfb5ec/2019-06-19T13:54:42Z/ghost_notes_random_03.jpg But this one kill my frame rate even with jit.movie @colormode uyvy @output_texture 1 : https://www.cyrilmichaud.com/SIGIL(1).jpg Any idea to solve this problem ? - pereshapedAug 12 2019 | 6:57 pmThanks you all for such amazing patches. They left me mouth open. A real education into glitch generators. A new wonderful world. The only two patches which are crashing immediately, on paste, are the ones Martin posted on May the 11 and May the 23. Is it because Im still using Max7.3.6?Many thanks for any help.
- Martin BeckAug 12 2019 | 7:12 pmDoes this version here also crash on paste? (I removed the automatic start of jit.world and some mc related parts in version of May the 23.)Max Patcher
In Max, select New From Clipboard. - pereshapedAug 12 2019 | 10:36 pmHi Martin, thank you for responding so quickly. I just tried and the same thing. It crashed on paste. BUT I managed to get a Max Console screenshot before it quit. Here attached
- pereshapedAug 13 2019 | 5:40 pmHere a version for Max7. It loses the functionality of the mc.function object from Max8 but multiple function objects could be used. Ive just summed them into one to get it running at the mo. Many thanks for posting this wonderful patch.Max Patcher
In Max, select New From Clipboard. - Martin BeckDec 26 2019 | 11:23 amHello GRIGOU,your patch runs with 60fps on Macbook Early 2013 2,4 GHz i7 (without using syphon). I think the only way to optimise it further for weaker machines is to transfer all matrix based parts to jit.gl.pix or jit.gl.slab and perhaps use jit.gl.bfg as source of random textures. https://cycling74.com/articles/jitter-shaders-or-gen-patcher-equivalents-for-common-jitter-objects
- Martin BeckDec 26 2019 | 11:29 amI found another interesting patch for the Memories of Broken Dimension collection from MATT ROMEIN,Max Patcher
In Max, select New From Clipboard.*requires cv.jit packagehttps://cycling74.com/forums/farneback-op-flow-shader Also credit to Andrew Benson since this particular patch is just an extension of his DebrisHD patch from the jitter recipes package.
- grigouDec 26 2019 | 7:15 pmThanks Martin,Too bad, there's no equivalent with jit.gl.pix or jit.gl.slab for jit.noise, jit.scanslide, jit.scanwrap and jit.scanoffset. I tried to replace matrix with texture, but dstdimstart/dstdimend don't work for me with jit.gl.texture. I can't see what I did wrong...
- grigouMar 08 2021 | 9:22 amJust wanted to share with you this awesome VHS glitch :
VHS Glitch - Stock Footage - 3 Hours - Free to use for movies and video clips
This guy have some other videos like this one on his channel that he made by crushing VHS. I love the result! Maybe some new inspiring work to remade with Max :)