Art, code and miscellaneous experiments from Demoscene Passivist related in some way to JOGL. For more take a look at www.jogamp.org
As the fragment main and post-processing shaders of my Revision 2012 PC 4k entry port were processed or better “obfusicated” with the shader minifier tool to meet the size restriction of <=4096 bytes, it became nearly impossible to understand or make any sense of the GLSL code. So here is the “unminified” version with additional comments I used during development (as good as it gets): main.fs post.fs
As promised before, here’s the direct 1:1 JOGL2 port of my PC 4k intro competition entry for Revision 2012. Sure it got a little bigger while porting but the shader and control code remained more or less untouched.
The intro renders a fullscreen billboard using a single fragment shader. The shader basically encapsulates a sphere-tracing based raymarcher for a single fractal formula with camera handling. Additionally a second post-processing shader is applied to the render output from the raymarching shader. Post effects are god-rays, tv-lines and noise to make the overall look more interesting and less ‘sterile’. The different intro parts are all parameter and camera position variations of the same fractal. Anyway, code as always on Github: GL3_Hartverdrahtet_Port.java and the corresponding main+postprocessing shaders: main.fs post.fs
Back from Revision 2012 :) It was a blast to say the least. I’ve met so many interesting people from all over Europe, I’m still flashed by all those overwhelming impressions. Definitly coming back there next year. As on last years Revision I had again prepared an entry for the PC 4k (executable size has to be <=4096 bytes) called “Hartverdrahtet”. Nearly took me two month to prepare. Technically speaking it’s more or less an enhanced version of what I’ve already done last year, but this time the shader does not only use up every ALU peformance ur GPU has to offer but also goes quite heavy on the texture units to render some nice post-effects (e.g. god-rays). I guess the crowd really liked what I did in 4k, so I eventually placed 1st (take a look at the voting slices). Placing first also got me a little bit attention press wise, thus heise.de and 4players.de mentioned the production (sorry, german only). My buddy tokra with whom I was awarded the “Newcomer Award” last year, also released stg for the VIC20 called “VIC can again” (a new interlaced graphics mode). After Revision I took the liberty of doing some chillout for a couple of days, but stay tuned as I’m currently working on a JOGL port of “Hartverdrahtet” …
Awesome! @twbombo ported “Elektronenmultiplizierer” to WebGL after I published the JOGL2 code here yesterday. Thanks alot man! Really cool to see how quick and seamless u can port code from JOGL2 to WebGL. Maybe someone in the mood for a JOCL port ? :) Anyway, enjoy here …
I have been quite lazy in the last couple of months about posting something new here, but at least I had a good reason: I was working fultime on my entry for the Revision 2011 PC 4k intro competition (executable size has to be <=4096 bytes) called “Elektronenmultiplizierer”. As this was my first 4k intro since a long time (my last one was under MS-DOS) it took nearly three month to finish. Anyway, I made it just in time for the competition and successfully released it at Revision. In the end it placed 4th and me and my buddy (who released a new graphics mode for the VIC20: “Yes VIC can”) were awarded with the “Newcomer Award”. After Revision I took the liberty of doing some chillout for a couple of weeks, wich are over as of now. Ofcourse the next logical step was to do a JOGL2 port of my Revision PC 4k entry …
Last but not least the king of all 3D fractals: The famous Mandelbulb fractal discovered in late 2009. I varied the underlying Julia parametes with a scaled sin(time) for the x, y and z location to achieve a tranformation effect. Also added the rubber effect from my previous experiments wich suits the “liquid” nature of the transformation quite well. JOGL2 setup code on Github: GL3_Raymarcher_Mandelbulb.java Shader code: .fs
After implementing the raymarched 3D Mandelbrot it was obvious the next step into the world of 3D fractals had to be the “Quaternionic Julia Set”. Source: GL3_Raymarcher_QuaternionicJuliaSet.java Shader: .fs
When u have a quite slow GPU (as I do) u may run into the problem of Timeout Detection and Recovery of GPUs through WDDM (Windows) as discussed on the Jogamp Forums while experimenting with the raymarching routines. So be prepared to get “recovered” by ur friendly windows deamon or fiddle with ur registry settings to avoid this unwanted “rescue operation” (as I have done).
With the implementation of my Mandelbrot and Julia Set fragment shaders and a Raymarcher at my disposal it was obvious that I had to do some 3D/4D fractals. As a first shot I experimented with a 3D Mandelbrot surface function formula suggested by Bugman: x=x^2-y^2-z^2 y=2xy z=2xz-2yz. Source as always on Github: GL3_Raymarcher_Mandelbrot3D.java and the corresponding fragment shader: .fs
As I played around with my (GP)GPU raymarcher I remembered an old demoscene effect from the glorious never again reached AMIGAAAA! called “Rubber-Vector”. It then came to my mind that this effect can be easily emulated with the raymarcher as it renders every pixel individually to an orthogonal fullscreen billboard. So when ur varying the rotation matrix from the point-of-view with the y-coordinate of the billboard u get some kind of “rubber” effect. GL setup code: GL3_Raymarcher_IsoRubberCube.java Shader code: .fs
Varied the surface function for the (GP)GPU raymarcher to evaluate a couple of metaballs. Metaball movements and properties are hardcoded in the function. Code as always on Github: GL3_Raymarcher_Metaballs.java. And the corresponding fragment shader: .fs
Implemented a simple (GP)GPU raymarcher as fragment shader. It evaluates a given 3d isosurface function (here an isocube: x^6+y^6+z^6=1) alongside a bounding box with rays casted/marched from an orthogonal fullscreen billboard. After a surface hitpoint is found, a normal is evaluated and the fragment is shaded using phong-shading with specular (here using eight lightsources configured in a cube-layout around the worlds origin). Generic setup code can be found here: GL2_FBO_FullscreenQuad_Base.java and GL3_Raymarcher_Isosurface.java. Fragment shader: .fs
NIGHTNIGHT by DEDDY