Blog-posts are sorted by the tags you see below. You can filter the listing by checking/unchecking individual tags. Doubleclick or Shift-click a tag to see only its entries. For more informations see: About the Blog.
previously on vvvv: vvvvhat happened in December 2017
or as i'd like to call it: a new dawn.
so many things...where to start... probly here if you haven't yet: vvvv-in-numbers-2017
then an apology for the current release-candidate hiatus. we've been too optimistic end of december, when we let out the first. meanwhile 3 more things got finalized:
a new RC is scheduled to be announced this week.
also, the five part vl for vvvv users series of videos is now complete: part 1, part 2, part 3, part 4, part 5. it is basically the workshop i gave at node17. it picks you up where you are as a vvvv user and shows you how the basic things are mostly the same in vl but only when it comes to spreading you need to learn about loops instead. and once you're there you'll not want to look back...
...like e.g. this doctor, who was kind enough to give us an update on the status of his latest developments. must watch!
we have a few independent libraries in the works at the moment that we're planning to announce properly in the coming weeks each. for the bravvvve ones among you, go check our public repositories already:
and even more to come... but beware: there aren't really instructions yet on how to use those. so you might as well want to wait for the announcements.
with beta36 hopefully out soon we'll then make plans for the next release. high priorities are endless, will be some tough decisions to make again.
it happened. it was great. 6 participants from zero to vvovv in 6 days. a few impressions are here. we're planning to do this again, stay tuned!
here is a big one: u7angel open sourced his Automata UI and in addition is also giving it away for free now for commercial projects! you be stoopid not use it and get him at least a drink the next time you see him. thanks man!
further quite a load of new stuff:
and updates to many top contributions:
otherwise sadly not so much in the gallery last month. seems everyone is too busy networking their stuff socially. and then i stumbled upon this: https://vimeo.com/search/sort:latest?q=vvvv with many more recent uploads.. but please don't forget to share your works also in our gallery to show people having their first contact with vvvv.org, what you're doing with it.
Current vvvv alpha and upcoming vvvv beta36 has a new set of nodes that allows you to quickly upload data from VL to the graphics card. We had a WIP forum discussion about it here: VL - Custom Dynamic Buffer
On the VL side the nodes are called ToBufferDescription and we have them for the basic data types that usually hold big chunks of data: Spread, Array, IntPtr and Stream. The vvvv side is rather easy and only has one node called UploadBuffer (DX11.Buffer).
Primitive types work out of the box and don't need any special treatment. Just make sure you define the correct Buffer type in the shader. This works for Integers, Floats, Vectors and so on, everything that is available in the shader as primitive type. Here is an example for Float32:
The only exception is Matrix it needs to be transposed in order to work like a normal transformation input. If you send a large amount of individual matrices to the shader the most efficient way is to do the transpose in the shader directly:
If the same matrix is re-used very often or you don't have access to the shader code simply transpose in VL:
If you want to define your own data types like light information or a custom vertex type in the shader then you need to pack the data accordingly in the buffer description. For this task the ToBufferDescription (Stride) nodes are used. They allow you to make a buffer description out of primitive types like float or even byte and set the stride size of your custom type in bytes so that the shader can read the custom type directly out of the buffer.
Matrix hint: If you define a matrix in a custom type in the shader you can use the row_major modifier to automate the transpose operation.
Performance hint: If you can, design your custom types in a way that the byte count is a multiple of 16, sometimes it makes sense to insert unused floats as padding:
If you are a C# coder you can also define a struct in C# with attribute StructLayout(LayoutKind.Sequential) and the same byte layout, import it in VL and pass that directly into the buffer. Then you don't need the node with version StrideSize because the data type size already matches.
While in the process of doing the dynamic buffer nodes it was easy to add raw buffers. These buffers are from older shader models and can only be filled with bytes. On the shader side however you can also define Custom types. Only difference in HLSL is that you write Buffer<YourType> instead of StructuredBuffer<YourType>.
The node set is basically the same except that the VL part is not generic and only accepts bytes as input. The node names are ToRawBufferDescription in VL and UploadBuffer (DX11.Buffer Raw) in vvvv.
Raw buffers have no advantage except when you have to deal with an older graphics card, driver or shader code.
So now you can start sending your data up to the card and enjoy the speed. As always, if any questions arise hit us up in the forums.
All this wasn't something that you could take for granted. Up to now.
I had to tease you first, before going into detail. If you think about the statements above, or even don't think about it, all of the above should be just normal, no-brainers. Having a not-quadratic screen is the case 99% of the time. These cases occur that often, we should make them easier to work with.
So from now on we have
The main output of the mouse is the Position (Projection) XY pin, values in the case above go from (-1.78, -1) to (+1.78, +1), reflecting that the renderer is not quadratic.
The underlying technology (DirectX) comes with the following spaces and transformations, to get from one space to the other:
World T. View T. Proj. T. Object Space -> World Space -> View Space -> Proj. Space
World Transformation typically is set by the Transform pin at your "quad", that takes it from object space and places that object within the world (the 3d scene).
View Transformation is what you connect to the renderer and is about the position and orientation of your camera.
Projection Transformation is the other input on your renderer, that is for making your scene compatible to a 2d screen. It pojects that 3d stuff onto a screen.
Now, while the underlying DirectX also mixes aspect ratio into that transformation, vvvv at some point started to distinguish lense projection and aspect ratio transformation, which now feels to pay out in the end.
So here is our notion of spaces and transforms:
World T. View T. Proj. T. Aspect Ratio T. Object Space -> World Space -> View Space -> Proj. Space -> Norm. Proj. Space
Our renderer comes with this additional pin Aspect Ratio (and now also comes with that auto aspect ratio feature), treating this transformation a seperate step. Since the transformations are seperated, we got an additional space that you can think in.
And this is the space you want to be in. This at least is our theory. In our projection space the aspect ratio transformation didn't get applied yet.
Let's look at some gif before we theorize further:
Here we see how to operate in projection space when a camera is attached.
With the node WithinProjection (Transform) we tell the system that we want to operate in projection space, which is the same as saying "do not care about the camera (don't apply view and projection transformation as we already are in the right space)". So the spheres get affected by the camera, the quad does not get affected by the camera.
So what you take from the lesson should be that mouse pin Position (Projection) XY goes well together with the WithinProjection (Transform) node. The node you only need if a camera is connected to the renderer.
Now, the next step the pipeline does is applying aspect ratio, which distort everything in a way that a quadratic space matches the rectangular window or viewport. This is just technical necessity as DirectX asks for that. We are now in normalized projection space. You know, that space where left & bottom border are at -1, and right & top border are at +1. The one that you learned in your first tutorial about.
We always thought that this is the nicest space to think in, which is obviously not true. It feels nicely quadratic in size, which just doesn't align to the fact, that your renderer typically is not. So it is a distorted space.
Here is how we still give it a raison d'être:
If you have several render passes you often just want to have a fullscreen quad textured by a previous render pass. Now how would you place a quad so that it goes from left to right border and bottom to top border. Well this is obviously easy to do in a space where these borders are always at a fixed position like in the normalized projection space.
What if you want to use and render the mouse in an early render pass, maybe with many viewports, softedge and aspect ratio settings, while actually hovering with the mouse over the final renderer, that comes with different settings? Does this align?
Well, this is a rare case where you again need to use manual aspect ratio nodes. With them you can adjust how to map to meaningful mouse positions that make sense in an earlier render pass. Actually you just need to reason about the aspect ratio of your orginal scene to make this work nicely. Note however, that in this special case - especially when softedge is involved - system cursor position and rendered cursor position don't align anymore, as you were used to in earlier vvvversions. Note that the editors from the editing framework still work, you just need to use the Cursor node to visualize the cursor, since the system cursor is off.
Patches get converted so that they now work with the new mouse positions, those in projection space.
By that all patches fit well together. We are pretty sure that the benefits outweight the cons. This however still is a breaking change. If you have a patch where you don't use the mouse position for positioning elements, but map it to something else, and experience that the new value range doesn't feel right, you need to manually switch to the old behavior. Check the mouse node to access the now hidden Position (Normalized Window) XY, to access the exact old behavior. Gesture and Touch nodes come with the same pins.
Old renderers get converted in a way that the Auto Aspect Ratio is turned off - on newly created renderers it's turned on.
Patches working with touch or gesture were complicated as they just had to correct the touch position by manually transforming it in compliance to the aspect ratio. Where with mouse you got away with showing a rendered cursor that is just displaced, touch and gesture just don't let you do the same trick. You really expect the elements under your fingers to react. Those patches get converted in a way that they still work by using the Position (Normalized Window) XY, but you should consider cleaning that up by using the standard output Position (Projection) XY and throwing away all the unnecessary aspect ratio related tweaks and hacks.
Directx 11 doesn't come with the features for now. There would of course be a way to do the same with DX11, but let's see first, if the new system prooves to be easier to use for the majority of the tasks, while not failing at the more complex setups. When we have that proof of concept, it'll be doable to copy the concepts over to DX11. Let's wait for that first.
Depending on whether new DX11 builds shall still support older vvvversions or not, the implementation gets trickier or easier. So give us some time here to figure out what route to take. Thank you!
As you might know, enums in vvvv got our attention several times in the past. But still, we found something to improve.
There's been the NULL (Enumerations) node, that we now decided to drop.
Often when using Ord2Enum, String2Enum, Enum2Ord or Enum2String you additionally needed this node to specify which enum you actually want to work with.
Now, Ord2Enum, String2Enum, Enum2Ord, and Enum2String come with a configuration pin that lets you specify the enum. So no need for NULL anymore.
The mentioned nodes got legacy. Old patches will be converted in a way that they still use these legacy versions. (NULL (Enumerations Legacy), Enum2Ord (Enumerations Legacy)...)
If you want to update your patches, so that they work with the new versions
The patches should get cleaner in the end, which should make them easier to understand.
The system has less to infer over links (less magic = less unwanted side effects). It just takes the enum specified.
As the enum encoding changed (in vvvv50beta35.7) and now works with strings, you now are allowed to connect a source of one enum to a sink of another enum:
There just might be cases where this makes sense.
It's a bit unfortunate, but we had to keep the old nodes still active. There are cases where the enum in question is not available via the global enum list. E.g. a shader has this technique pin that can differ from shader to shader and sometimes even between instances of one and the same shader. So these enums need to be "pushed" towards the connected Ord2Enum node. So you still need the old nodes.
The old ones keep their names.
The new nodes now are named Enum2Ord (Enumerations Explicit), ...
Null (Enumerations) is legacy.
Please excuse the confusion.
Who David Gann
When Sat, Mar 10th 2018 - 14:00 until Sat, Mar 10th 2018 - 17:30
Where LOFFT Verein zur Förderung des Leipziger OFF-Theaters e.V., Lindenauer Markt 21 , 04177, Leipzig, Germany
WORKSHOP: CHAOS - NOISE - MOTION
MIT VORSTELLUNGSBESUCH VON CABOOM
DAVID GANN / 000.GRAPHICS
Dem Körper angepasste Interfaces ermöglichen es Tänzer*innen und Performer*innen, direkt mit Sound und Computergrafik zu interagieren. Die Körperbewegung wird dadurch zum Ausdrucksvektor für audio-visuelle Kompositionen, basierend auf Chaos und Noise.
Der Workshop vermittelt eine Basis, Tanz und Performance mit interaktiver Kunst und Medienkunst zu verbinden. Die Teilnehmenden nähern sich Methoden an, mit denen Körperbewegungen digital erkennbar werden und setzen diese Bewegungsdaten in Echtzeit für die Erzeugung audiovisueller Elemente ein. Dabei wird primär die visuelle Programmiersprache VVVV gezeigt, welche besonders gut für den flexiblen Einsatz auf der Bühne geeignet ist (auch für Anfänger). Es wird speziell auf die Themen Chaos und Noise in der Computergrafik und im Sound Design eingegangen mit dem Ziel, Wege zu finden, durch Bewegungen komplexe und eindrucksvolle Bilder und Klänge zu erzeugen.
David Gann studierte Biologie und Interface Art und arbeitet als Künstler, Entwickler und Designer im Bereich interaktive audio-visuelle Medien, Computergrafik und Sound Art.
Wearable DIY interfaces enable dancers and performers to directly connect to real-time generated audio and computer graphics. The body movement becomes an expression vector for generating audio-visual productions based on chaos and noise. The participants approach methods of digitally capturing body movements and use the data gathered to create audio-visual elements in real-time. The primary focus is on the coding language VVVV, which is especially applicable for the flexible use on stage (even for beginners).
David Gann studied biology and interface art and is working as a artist, developer and designer in the field of interactive audio-visual media, computer graphics and sound art.
HINWEIS: Die Workshopgebühr beinhaltet ein Ticket für einen Vorstellungsbesuch von CABOOM vom 09. bis 11. März 2018.
Anmeldung unter: email@example.com
KONZEPT+DURCHFÜHRUNG+FOTO David Gann. Ein Workshop von David Gann/ooo.graphics in Kooperation mit LOFFT – Das Theater. Gefördert von der Stadt Leipzig, Kulturamt. Diese Maßnahme wird mitfinanziert durch Steuermittel auf der Grundlage des von den Abgeordneten des Sächsischen Landtags beschlossenen Haushaltes.
Hello from Cairo !
I am happy to announce that i had the first introductory workshop in Cairo - Egypt at Creative Coding Cairo .
This workshop was after i attended The VVVV Academy course last summer in Berlin . It was a great chance to share back here with Artists , Designers , Programmers and the CC Community in Cairo what they can do with VVVV in a 3 days workshop . I am Preparing now for another Workshop to come soon for more and more people to practice the basics .
I started Creative Coding Cairo to build a community for creative coders in Egypt as a one space for Artists , Designers , Coders and Makers to meet and share knowledge .
You can check out more about our monthly activities from the link below :
check also more about our Fablab Egypt . Our main host and supporter to run our activities .
Excited to share back soon more stuff with VVVV from the community around here !
what goes up...
thanks evvvveryone for tuning in again to this years numbertalk where we talk about the numbers you left with vvvv in 2017. what the numbers? well, in case you're new to this and if you have a minute i'd like to recommend you take a look back at the 2016 numbers before reading on.
everytime you hit on vvvv.org you leave an invisible trace that shows us where you're coming from. and last year, i have to say, you really changed:
|germany (+)||16.99%||germany (+)||17.02%||germany (-)||13.81%||germany (+)||13.85%||germany (-)||12.35%||germany (+)||13.94%|
|usa (-)||10.72%||usa (-)||9.87%||usa (+)||10.74%||usa (+)||10.90%||usa (+)||11.76%||usa (-)||9.81%|
|uk (-)||6.31%||russia (+)||5.78%||russia (+)||7.39%||china (+)||5.44%||japan (+)||4.85%||india(+)||5.94%|
|russia (+)||4.98%||uk (-)||5.64%||uk (-)||5.37%||russia (-)||4.77%||russia (-)||4.67%||china(+)||5.15%|
|italy (+)||4.97%||france (+)||4.93%||japan (+)||4.85%||japan (-)||4.76%||uk (=)||4.51%||japan(-)||4.25%|
|france (-)||4.92%||italy (-)||4.56%||france (-)||4.12%||uk (-)||4.51%||china (-)||4.26%||uk(-)||4.18%|
my best guess about what we see here is you've all been on a sabbatical in india to relax a bit but then still couldn't help it and checked the forum every five minutes for whats going on. fair enough.. already in 2016 india was going up 12% compared to the year before and now it got another 40% boost landing it on spot 3 tightly followed by china who got a 21% boost this past year. are we conquering new markets there without knowing it? on the other hand rather sad to see russia dropping out of the ranks for the first time...что случилось?
despite the big shift in accessing countries it seems the number of unique visitors is relatively stable the past three years:
* includes hacker-news incident'
this is also confirmed by the number of daily forum posts as you can see below which even received quite a visible bump at the end of 2016 when we installed the new forum:
* x86 and x64 combined
significantly more releases but not significantly more downloads than in the year before...whats going on here? lets have a look at the
oha...this is setting us back to figures of 2013. ahm, lets have a closer look at the numbers that tell us how many different countries and companies licenses have been bought from:
huh...so while obviously vvvv is slowly spreading over the whole world as you can see by the sharp rise in the number of countries, i'm afraid i find it really hard to argue an increase in the number of individual customers over the past three years. how are politicians doing this?
so where exactly are we loosing it? let's have a look at the number of licenses sold per country. germany and uk: booh. but then who would have thought? is america really great again? and what is going on in the state of denmark?
|austria||3%||russia||2.5%||aut, aus, usa||4.22%||austria||3.22%||switzerland||1.5%||russia||2.6%|
|spain||2%||france||2.5%||russia, norway, czech||2.8%||russia||2.93%||France||1.6%||denmark||2%|
so..where were we? ah..numbers?! all pointing down, bohoo...but really, all of them? well there is at least one i know of that has been going up continuously since vvvvs inception. i'm afraid i don't have a graph for it, so you'll have to trust me on this one: it is our spirits.
we're sitting here, day in, day out and have the privilege to invent the future of programming for you. and the sheer amout of work we put into this uncertain endeavor over the past years is finally starting to pay off. not financially (see above) but...functionally. we're using vl on a daily basis with a joy that only compares to the very early years of vvvv. after which we found all it's problems and started to tinker about how a new system would look and feel like that doesn't have all of vvvvs limitations. and it is here now. at your finger-tips. embedded into your favorite multipurpose toolkit, making it an unrivvvvaled tool (citation needed!) at your disposal. today.
switch to an alternate universe where for the past ~five years we struggled with the horrors of cross-compiling vvvv to mac and linux and started implementing a new render engine in opengl only to learn of that new thing called vulkan halfway through, where we are still fighting with random crashes due to quantum threading effects with our attempt to multi-thread the existing vvvv core and where that dump guy is still POTUS...
i don't get a clear reception of our spirits and the license-numbers from over there but what i do see is a rather conservative visual programming environment with more problems at hand but not standing out so much compared to similar products.
... say what? enough with the sermon, where is the bling!? ok. so at the same time that others set the industry standards in realtime 3d rendering, we chose to work on the standards for visual programming: object-oriented, multi-threaded, with one-click library import, generics, delegates, interfaces and so much more.
and now, obviously, we have to do the ketchup with the rest of the best. 2d- and 3d-rendering and asset management, audio-video playback, computer-vision, 2d- and 3d-physics, editing and ui-framework, timeliner, automata,... are still missing. so you see we're not going to get bored anytime soon. but since most of the hard parts are now done, we're really looking forward to those!
what an exciting cliffhanger concluding the season of 2017...make sure not to miss any episodes in the coming season, you can subscribe here.
we wish an exceptionally great 2018 to all of you who've been with us over the years, to those who are new and even to those who didn't buy a license last year, you'll come to reason...
previously on vvvv: vvvvhat happened in November 2017
happy new patcherpeople,
in case you haven't noticed, 2017 has passed without the release of beta36. booohh..i know, this wasn't our intention but you know, good things... and on the other hand you can say it is practically already there: please check our beta36 release candidate and report your final findings!
and if you didn't dare yet to touch vl, here is a soft way to get started: lean back and watch this series of videos to understand that using the basics of vl is quite similar to using vvvv, only that once you get there, it has so much more potential...
...still two more to come to cover only the absolute basics and get you up to speed. yes still no rendering of any sorts, but we're working on that...
regarding the promised major new feature of using .NET libraries, here is a quick example of using the bulletsharp physics library in vl without the need to write a single line of code: Doing Bullet3d with vl
starting now, follow @vvvvAcademy
|Some new stuff:||and two updates:|
that was it for december. anything to add? please do so in the comments!
Here are two new little features we want to make sure you're aware of. Not completely finished but already helpful:
Note how the Quad (topleft) indicates run/pause. Tremendous you say? Indeed, but beware the following caveats for now:
Still you'll see that in cases where you're looking for a logical problem in your patch it is already useful to be able to step through its execution one frame at a time to better understand how it is evolving.
This can be useful when you're on a debugging spree and expect an error to happen at some point. Activate this option to be brought to the point where the error occurred, the moment it happened. Saves you some navigation and highlights the nodes involved leading up to the error. Again press F6 to step or try F5 to get the patch running again after you solved the problem.
Caveat: Look closely, the error message in the tooltip actually belongs to the Add of the Dictionary. The reason for that is code-optimization which sometimes leads to the error-indicator being one node off. A setting to disable code-optimization is pending..
As mentioned, both features are not finished but are a first step into the direction of better debugging support. Still more to come..
previously on vvvv: vvvvhat happened in October 2017
dear patchers worldwide,
another month has passed without us releasing the long promised beta36. reason: the things we've planned for it to include, are not finished yet. as mentioned previously the main focus of this release is to get the workflow right, for using/wrapping external .NET libraries in vl. people using latest alphas already have the possibility to do so. basically any .NET library can now be used in vl directly via drag'n'drop. this is huge and on the other hand feels so natural that it is also not a big deal and will and should be taken for granted from now on. when developing plugins for vvvv was still kind of a pro-thing, even though we had easy dynamic plugins, it is now a no-brainer with vl and i predict that everyone will do it casually at some point. so again, please test with latest alphas and report your findings in the chat or on the forum (with tag "alpha"). thanks for the more and more vl-related issues there and on the chat recently!
looking for a vvvv job in london? have a look at this fine offer by YR!
dominikKoller is doing it again! coming january there'll be another vvvv beginners course at our office in berlin. please help us promoting the course by spreading the following two blog-posts that include all the necessary informations:
No big drop this time, but still some updates:
And i posted a work-in-progress or more a proof-of-concept for an InputMapper in VL.
happy to see the first two big recent works being powered by vl:
and two more classic vvvv projects:
Good stuff as always in the teasers:
that was it for november. anything to add? please do so in the comments!
anonymous user login