pouët.net

4k Procedural Animation Category

category: offtopic [glöplog]
Hi,

In the thread "Some thoughts on 4k competition rules" at some point...

Quote:
Maybe there's another way - and the fact that what we're pretty much all saying is that almost nobody can watch a 4k any more kind of points to it ;)

Get rid of d3dx, the compressor dll, the whole lot - and also drop the realtime requirement. Let the 4k just dump raw video + audio data that can be converted to lossless video for the compo and mp4 for youtube etc.

I'm semi-serious here - I'd like to see something like this alongside the realtime competitions.

added on the 2012-11-01 14:44:45 by psonice

Quote:
i wouldn't oppose at all to that. removing the realtime factor would be a big relieve (i'm sure many people from the outside would join while still being totally demoscenish).

added on the 2012-11-01 17:14:58 by iq

Quote:
So, you're basically proposing 4k procedural animation category? I quite like that idea :)

added on the 2012-11-01 17:16:31 by raizor

Quote:
i don't wanna offend anyone, but isn't that kinda stupid to make it a video competition? how's that gonna work? you deliver 2 files? an old-style exe that's not running due to no d3dx restrictions and an additional video file? that's kinda bs. first of all you need all that d3dx and compiler trickery to reach 4k and even if you make it a video dumper the essence of being the 4K itself is gone. so... where is that point?

sorry.. i don't understand.

added on the 2012-11-01 17:41:09 by yumeji

Quote:
And 4k procedural animation sounds cool, too. It shouldn't be much harder to dump uncompressed video than to dump wav.

added on the 2012-11-01 17:47:09 by KK

Quote:
Please take the 4k procedural animation seriously.

I 100% agree on this one.

The non realtime compo is a must.

In the past I spoke briefly on other topics on this proposal, but nobody took me seriously. Basically saying that it is for what the wild compos are for... and bla,bla,bla... but that's missing the point!

The 4k limit with no extra OS stuff, just math, on a non-realtime system deserves a place in the demoscene!

It's inevitable, it'll happen, it's just a matter of who will do it first.

The platform it's not an issue, even a DOS program that generates raw images and small raw sound files for each image is is good enough.

Look... seriously, everyone watches demos now on youtube.

I think the only PCs that run some demos now are the developer PC and the machine compo LOL

The computer / device scene is changing, everyone has a lower pc spec now... not higher, because, everyone now uses a laptop, not a desktop... and everyone will use a tablet, or a mobile phone, at least in the home free time...

I'm not saying that the real-time stuff is over... far from it. I just wish that the scene could grew more on the direction of limited size and unlimited time prods.

And sure ... we need a youtube with 60 fps and 720p / 1080p with a high bitrate :) I'm sick of seeing demos on youtube at 30fps with a low bitrate :(

Seing the demos of mindcandy 3 on Bluray at 60fps is awesome!

added on the 2012-11-01 18:00:03 by PauloFalcao

Quote:
It's a LSUT (Limited Size Unlimited Time) Demo :)

added on the 2012-11-01 18:06:58 by PauloFalcao

Quote:
Quote:
The 4k limit with no extra OS stuff, just math, on a non-realtime system deserves a place in the demoscene!


And where exactly do you draw the line? No C-libs? No DX?

added on the 2012-11-01 18:17:38 by raer

Quote:
I would say no dx. DOS is a good platform :)
But yes... the platform is the issue here, i agree.
Probably a virtual machine optimized for small code would be ideal ... But I do not know if it's worth the work.

added on the 2012-11-01 18:25:39 by PauloFalcao

Quote:
Unlimited time? ;)
Naive path tracing can produce great images in a small amount of code, but how many days do you want to wait for that 3 minute intro?
And if making up completely new categories, please consider that awesomeness=quality/log2(size) (more or less like proposed by kb in another thread) doesn't peak at 4k, more likely in the 8-16k range. Slowmo cpu code and simple output (i don't think windows has a builtin h264+mp3 encoder yet) would probably take less space than d3d setup, but still...

added on the 2012-11-01 18:30:32 by Psycho

Quote:
The problem with 4k procedural animation is that the home viewer is not going to appreciate that it's 4k if they're just downloading a video file or watching it online. With 4k procedural graphics or music, it usually takes anywhere between a few seconds to a minute to calculate, so it's not a big deal to download the executable and wait. With an animation, you're going to be waiting a while if you run the exe on your own PC. Compo organizers won't be running the exe either, unless they get entries well in advance and save the output. So the end result is, you're watching a video and taking the creator's word for how it was created.

added on the 2012-11-01 18:32:35 by phoenix

Quote:
Quote:
Look... seriously, everyone watches demos now on youtube.

I think the only PCs that run some demos now are the developer PC and the machine compo LOL



do you all have macs or what? or are you still using DOS? a last years budget pc is all you need to watch even the newest demos in realtime.. (see my last post)

added on the 2012-11-01 18:43:01 by v3nom

Quote:
Well, for pratical reasons it can't be unlimited time...

But you could do something like this in the compo....

The rendering needs to be done in the party hours before the compo, probably at the start of the party.

Groups would have to race against time... , the longer you take to finish the prod... the shorter time you would have to render LOL

added on the 2012-11-01 18:44:45 by PauloFalcao

Quote:
For example... with path tracing an absolute end time for rendering is not an issue. We are simply left with poorer quality demo with more noise...

added on the 2012-11-01 18:50:13 by PauloFalcao

Quote:
About the platform, I think the important thing is not to use OS stuff, using win32 is OK as long as you don't use DX ou OpenGL or other OS stuff, using multithread is OK. Using stuff like windows voice synth, or DLLs for making random images, or a graph lib like OpenGL or DirectX is, in my IMHO not OK...

added on the 2012-11-01 18:59:30 by PauloFalcao

Quote:
Psycho, I think DirectShow has it somewhere..

added on the 2012-11-01 19:00:06 by msqrt

Quote:
This is an eternal platform, people decades from now can still be trying to compete against demos made now!

The only thing that can evolve are platforms with shorter ops, and more cores to render the thing.

added on the 2012-11-01 19:03:38 by PauloFalcao

Quote:
PauloFalcao: DX/OGL is the only way of getting your code run on GPU, which today attributes to 50-99% raw math power depending on your setup. You need some way of putting these to use.

added on the 2012-11-01 19:15:53 by KK

Quote:
KK, yes it's true. I don't have a solution to that problem.
A new virtual platform?
The render could be done in a system that uses the CPU and GPU por computing.
For now i think using DX or OpenGL it's not ideal... but it's ok.

added on the 2012-11-01 19:23:04 by PauloFalcao

Quote:
Think more like OpenCL!

added on the 2012-11-01 19:30:47 by msqrt

Quote:
The important thing here is the code and data to be in the prod, using OS stuff for generating stuff would be unfair against prods that are self-contained and just use some data and math / code for generating images and sound.

added on the 2012-11-01 19:36:15 by PauloFalcao

Quote:
BTW the 4k procedural image is a good example of unlimited time for rendering.
That can be extended to 4k or 8k or 16k or 32k or 64k... you get the point... procedural animation with sound.

Today 4k procedural images can use OpenGL / DirectX, is that OK? I don't know... I personally would like them to be "pure" intel asm code with no OpenGL / DirectX... But for now, using OpenGL / DirectX / OpenCL is probably the best solution.

added on the 2012-11-01 19:50:38 by PauloFalcao

Quote:
There's no need to ban GPU code! Just make it so you can use whatever's on a standard IS install. Dx, OpenGL, but no additional stuff.

And yeah, compo rules will need consideration. If the exe dumps frames and a wav, a few frames can be enough to check the output matches a video. The deadline can be before the party like it is for gamedev. There are options :) Also, the exe should take parameters for output res. this almost guarantees somebody will run it to get best quality for their screen, and the chance if getting caught cheating is high.

added on the 2012-11-01 20:19:55 by psonice

Quote:
I agree with psonice, rules should not be too restrictive now.

added on the 2012-11-01 22:13:58 by PauloFalcao

Quote:
Quote:
Look... seriously, everyone watches demos now on youtube.

Really? So we can conclude scene finally IS dead by now!

added on the 2012-11-01 22:41:07 by T$

Quote:
Thinking about how a '4k video' compo could work. You'd need a volunteer with a fast box and plenty of disk space to do the capturing. Potential rules:

- Deadline 1 week before the party (to allow render + video encode time)
- Files must be 4k max and run on a vanilla OS install + drivers
- Exe must accept resolution parameters
- Max. 1 hour rendering time on the compo box. After 1 hour the exe is killed and whatever was rendered will be shown. This hopefully makes the capture guy's life a bit easier than "unlimited time" ;)
- "Compo parameters" can be used for anything 'heavy', with lower quality or resolution
- "Compo version" video must be submitted, to be shown in the party as a backup if something goes wrong / HDDs die / etc.
- "HQ version" video can also be submitted for release, with HQ parameters / super high res etc. This gets rendered on your own box, as slowly as you want :)

added on the 2012-11-01 23:32:45 by psonice



So, what do you think?



Cool, you've saved me a job today :D

I guess the key questions are:

1. How many want to make something for such a competition

2. Which parties would be prepared to run such a competition

If enough people are interested, I guess the orgas will be more interested. So who's interested in competing? (Count me as a 'maybe' - I'd be up for it if I could justify the time, which I can't at the moment, but might be able to at some point).
added on the 2012-11-02 11:47:59 by psonice psonice
The scene is dead.
added on the 2012-11-02 11:48:15 by Optimus Optimus
On a serious note now, I just remembered Tom Thumb by Statix, first one with this concept of generated animation. Also Staying Pictures. I remember it took quite a while back then on my old Pentium 2 PC. it would be interesting to try this again after so many years and in a modern PC.
added on the 2012-11-02 11:54:08 by Optimus Optimus
A simple thing to do is to add on Pouet on Submit a new type "procedural animation" below "procedural graphics".

And changing Tom Thumb and "Staying Pictures to that category, thanks Optimus.

Parties can start to support procedural animation if there is a significant volume of new and quality productions in the category "procedural animation".
Staying Pictures does not have a exe / source, so i would not consider it a procedural animation until the exe or source is out...
Not such a bad idea...

But the results of this compo will basically watched on youtube - thus I'm not in for it.
added on the 2012-11-02 12:42:12 by las las
Pathtracing has already been brought up, but I think lifting the restriction to realtime allows an exploration of other time-consuming methods. For example, a simulation of some biological process to create an organic scene or a particularly complex computer vision algorithm for doing the best painterly (NPR!) rendering ever.

To me, that is more exciting than just cranking up the samplecount.

There is another thing I thought about (I don't know if this has been brought up yet): rather than producing a video file, how about producing a model file in a common format e.g. OBJ+MTL? This makes the presentations tricky, however.
added on the 2012-11-02 12:43:31 by fizzer fizzer
So the video player would be part of the executable? If so i'm in!
I really wouldn't limit the compo to non DX/OGL platforms if you just make it clear that you're using those tools. Also pre-rendering time shouldn't go over 30 minutes or so on your (lets say) average netbook or tablet. How about demos that are half realtime and half prerendered? Maybe you could run some kind of simple demo while prerendering so people wouldn't get too bored.
added on the 2012-11-02 13:01:34 by MuffinHop MuffinHop
the idea has potential but waiting half an hour or whatever to check the results is not my cup of tea
added on the 2012-11-02 14:28:11 by psenough psenough
You always have youtube then...
added on the 2012-11-02 14:49:32 by Preacher Preacher
Preacher: i meant during development, not watching.
added on the 2012-11-02 15:03:39 by psenough psenough
ps: you mean you don't start with a clear idea of what it's going to look like on screen, work out exactly how to achieve it, then write the code and it just works? :D

For most things it's possible to render at low res + quality.. it might not be realtime, but it might not be unbearable too. Then you can leave it running when you go out to render a test sequence out, or maybe just a super HQ still to see how it looks at final quality.

Reminds me a bit of doing 3d in the olden days - playing with a realtime (but still slow) wireframe, then waiting a few minutes for a low quality + low res render. Then, once it's all set up.. the 3 day wait while it renders, and then the amazing result on screen :D
added on the 2012-11-02 16:26:47 by psonice psonice
To be honest, party organizers will only start considering "4k procedural animarion" when the first wild compos start getting such entries. This is a completely new and unproven territory, so the risk of such a compo to fail is too high. If you want this to happen, then people should simply start doing this. Now it's the best time to set an example ;) be the first to do something awesome that is a reference for future prods!
added on the 2012-11-02 21:46:17 by xTr1m xTr1m
I'm indeed playing with the idea of doing one :)
added on the 2012-11-02 21:46:59 by xTr1m xTr1m
looks like a revival of those old povray compos... =)

but i don't get this tbh - so basically everyone wants to make a pathtracing routine, which will fit in 4k, but everyone else will watch the result on youtube anyway, (i can't imagine the reason to run it and wait the stuff to render on own hardware) and the music will suck still? why not submitting it to wild or animation or something like that with a good music and editing at least?
added on the 2012-11-02 22:52:39 by ton ton
Quote:

- Deadline 1 week before the party (to allow render + video encode time)

let's consider scene distributed renderfarm then - it could be the best possible output of this whole idea imo =))
added on the 2012-11-02 22:59:15 by ton ton
lol - doesnt kkapture make demos into procedural rendered animations on slow hardware? ;)
added on the 2012-11-02 23:52:52 by Salinga Salinga
procedural animation - cool idea, but why 4k?
added on the 2012-11-03 00:22:44 by v3nom v3nom
BTW about this YT thing: At some point, demos only run on very old windows systems (like XP only) or old graphics card (and old drivers), so you need a YT capture (or video capture) in general to be able to watch an old demo. Because no one has hardware to run it anymore.

But that's an old problem of digital data and programs: You always risk to lose the platform to run/read it - within years. Digital archives, that need to make programs and data accessable for 50 or 100, 100 years or longer, have the same problem. A video capture sometimes is the last possible way to migrate a watchable form of a demo to a newer platform or make it platform independed.
added on the 2012-11-03 00:27:50 by Salinga Salinga
i think the exes should be obliged to output raw uncompressed frames to disk. additionally, the exes might want to output a regular video in whichever format they want as well. the idea would be of course to consume these prods in youtube (where almost all demoscene productions are consumed anyway). the exe would be there only for convenience and to prove that the video was generated that way. there's one issue though that i think you guys are overseeing.... these videos can take FOREVER to render. say you use 30 seconds per frame, which would give you a visual quality equivalent to current procedural 4k exe graphics. then, three minutes of animation would take one and a half days to render. which is ok for custom consumption, but i don't think demo parties can afford spending that time
added on the 2012-11-03 00:36:59 by iq iq
ah, since some people have been asking it already, here goes some (4k friendly) code to generate a procedural video in AVI format (in divx, huffuv, or uncompressed, but you can also add your own codecs super easily). you probably want to do all the initialization statically, but here's a comprehensible (i think) starting point:

Code: #include <windows.h> #include <vfw.h> bool prVideo_Init( void ); void prVideo_Render( unsigned char *buffer, int xres, int yres, int frame ); void prVideo_Deinit( void ); // // name : "myVideo.avi" // xres : 1920 // yres : 1080 // fps : 24, 30, 60, ... // codec : 0 = divx, 1=hummanuv, 2=uncompressed // bool renderVideo( const char *filename, int fps, int xres, int yres, int numframes, int codec ) { typedef struct { PAVISTREAM m_ps; PAVISTREAM m_psCompressed; AVISTREAMINFO m_strhdr; AVICOMPRESSOPTIONS m_opts; PAVIFILE m_pfile; BITMAPINFOHEADER m_alpbi; }AVIWRITER; AVIWRITER avi; //------------------------ // init avi stuff //------------------------ AVIFileInit(); if( AVIFileOpen( &avi.m_pfile, filename, OF_WRITE | OF_CREATE, NULL ) != 0 ) return false; memset(&avi.m_strhdr, 0, sizeof(avi.m_strhdr)); avi.m_strhdr.fccType = streamtypeVIDEO; avi.m_strhdr.fccHandler = 0; avi.m_strhdr.dwScale = 1; avi.m_strhdr.dwRate = fps; avi.m_strhdr.dwSuggestedBufferSize = 3 * xres * yres; SetRect( &avi.m_strhdr.rcFrame, 0, 0, xres, yres ); if( AVIFileCreateStream(avi.m_pfile, &avi.m_ps, &avi.m_strhdr ) != 0) return false; memset(&avi.m_opts, 0, sizeof(avi.m_opts)); avi.m_opts.fccType = streamtypeVIDEO; if( codec==0 ) avi.m_opts.fccHandler = mmioFOURCC('d','i','v','x'); // divx else if( codec==1 ) avi.m_opts.fccHandler = mmioFOURCC('H','F','Y','U'); // huffman uv else avi.m_opts.fccHandler = mmioFOURCC('D','I','B',' '); // uncompressed frames avi.m_opts.dwKeyFrameEvery = 1; avi.m_opts.dwQuality = 100; avi.m_opts.dwBytesPerSecond = 0; avi.m_opts.dwFlags = AVICOMPRESSF_DATARATE | AVICOMPRESSF_KEYFRAMES; if( AVIMakeCompressedStream(&avi.m_psCompressed, avi.m_ps, &avi.m_opts, NULL) != AVIERR_OK ) return false; memset(&avi.m_alpbi, 0, sizeof(avi.m_alpbi)); avi.m_alpbi.biSize = sizeof(avi.m_alpbi); avi.m_alpbi.biWidth = xres; avi.m_alpbi.biHeight = yres; avi.m_alpbi.biPlanes = 1; avi.m_alpbi.biBitCount = 24; avi.m_alpbi.biCompression = BI_RGB; if( AVIStreamSetFormat(avi.m_psCompressed, 0, &avi.m_alpbi, sizeof(avi.m_alpbi)) != 0 ) return false; //------------------------ // init procedural video //------------------------ unsigned char *buffer = (unsigned char *)malloc( xres*yres*3 ); if( !buffer ) return false; if( !prVideo_Init() ) return false; for( int i=0; i<numframes; i++ ) { // render frame prVideo_Render( buffer, xres, yres, i); if (AVIStreamWrite(avi.m_psCompressed, i, 1, buffer, 3 * xres * yres, AVIIF_KEYFRAME, NULL, NULL) != 0) return false; } //------------------------ // deinit procedural video //------------------------ prVideo_Deinit(); free( buffer ); //------------------------ // deinit avi stuff //------------------------ AVIStreamClose( avi.m_ps ); AVIStreamClose( avi.m_psCompressed ); AVIFileClose( avi.m_pfile ); AVIFileExit(); return true; }
added on the 2012-11-03 00:57:53 by iq iq
Quote:
It seems a failure of graphics APIs that the low impact way to introduce a visualization tool is sometimes CPU drawing to a bitmap.

From the great John Carmack
Off topic:It might be much more interesting to generate motion vectors instead of bitmaps; have an I-frame with somewhat simple geometry which slowly warp and twist in P-frames.
added on the 2012-11-03 01:37:59 by QUINTIX QUINTIX
oh, i have optimized the code (static initializations, basically) and added the code (debug and release modes) to the 1k/4k/gfx/intro system thing in my website: http://www.iquilezles.org/www/material/isystem1k4k/isystem1k4k.htm
added on the 2012-11-03 02:18:24 by iq iq

login