----------------------------------------------------- isolated, in sunlight by Traction and Brainstorm a pc demo for the ill-fated Revision 2020 ----------------------------------------------------- programming and visuals by preacher soundtrack by romeo knight with skybox photography by Jockum Skoglund aka hipshot textures from http://wdc3d.com/ (CC Attribution 4.0) old man photo by George Desipris on Pexels fmod by Firelight Technologies Pty Ltd. glew glfw glm a mersenne twister implementation from somewhere and borrowed bits of shaders from assorted places ----------------------------------------------------- greetings, love and appreciation to: alcatraz, altair, asd, adapt, brain control, conspiracy, epoch, excess, farbrausch, ivory labs, kooma, lnx, logicoma, mercury, mfx, orange, satori, still, synesthetics, tbl, ümlaut design, vaahtera and all my other friends in the scene. I miss you and hope to see you in person soon again. ----------------------------------------------------- Wow, it feels good to release a demo again. Somehow, in the middle of a busy life, career a toddler and a quarantine, there was a bit of time to work on things again. I wasn't supposed to make anything for Revision, not really having followed the scene for a while, but Revision being moved to an online made it possible to participate in a proper way. I am quite pleased with the result even if it was done quickly and on top of a demo engine upgrade started in 2017, which made things quite a bit more difficult than they should have been. Sometimes you start going to a place and find yourself somewhere completely different, and it feels all right. This is one of those times. Finally, I would like to extend my special love and gratitude to Romeo Knight for picking up the soundtrack duty on an extremely short notice and making a killer job of it. This demo would not exist without you. Stay safe. - Preacher ----------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; config ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; sound = true/false ; debug = true/false democonfig { sound = true; developermode = false; song = ambient.mp3 endtime = 341000 jumptime = 299500 } timeline { ; tyhjyys 0 150000 666 ; kasvot 0 150000 666 ; tunne 0 150000 666 ; kalpeus 0 150000 666 ; shadowtest2 0 150000 666 ; shadowtest 0 150000 666 ; dynamiccubetest 0 150000 666 ; 0 150000 666 ; tuli 0 250000 666 sauhu 0 47000 666 tuli 47000 100000 666 korona 100000 170000 666 kasvot 170000 210000 666 korona2 210000 260000 666 kauneus 260000 300000 666 viimeiset 300000 340000 666 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; effects ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; namespace shadowtest { } namespace dynamiccubetest { } namespace tyhjyys { vec3 cameraposition = 0 30 -50 vec3 cameratarget = 0 0 0 vec3 cameraup = 0 1 0 vec3 lightpos = 0 5 0 float cameraradius = 10 int glowiterations = 10 float glowspread = 0.007 float glowexponent = 1.0 float glowalpha = 1.0 } namespace kalpeus { vec3 cameraposition = 0 30 -50 vec3 cameratarget = 0 0 0 vec3 cameraup = 0 1 0 vec3 lightpos = 0 5 0 float cameraradius = 10 range flowerradius = 15 50 range flowerscale = 6.0 12.0 range flowerheight = 8 20 range flowerpentaalpha = 0.2 0.3 range petalangle = 0.5 0.8 range petalstartpower = 0.4 0.5 range petalendpower = 0.4 0.5 range petalendrotation = 0.1 0.2 int flowercount = 15 int glowiterations = 10 float glowspread = 0.007 float glowexponent = 1.0 float glowalpha = 1.0 } namespace tunne { vec3 cameraposition = 0 0 -10 vec3 cameratarget = 0 0 0 vec3 cameraup = 0 1 0 float cameraradius = 10 float focusdistance = 5.0 int glowiterations = 10 float glowspread = 0.007 float glowexponent = 1.0 float glowalpha = 1.0 } namespace sauhu { vec3 cameraposition = 0 0 -10 vec3 cameratarget = 0 0 0 vec3 cameraup = 0 1 0 vec3 grouppos = 0.15 0.15 0 vec3 titlepos = 0.15 0.15 0 float cameraradius = 10 float focusdistance = 5.0 int glowiterations = 20 float glowspreadx = 5.001 float glowspready = 5.001 float glowexponent = 1.0 float glowalpha = 1.0 } namespace kauneus { vec3 cameraposition = 0 4 -13 vec3 cameratarget = 1 2 0 vec3 cameraup = 0 1 0 float camrotation = 1.0 vec3 grouppos = 0.15 0.15 0 vec3 titlepos = 0.15 0.15 0 float cameraradius = 10 float focusdistance = 5.0 float backgroundbrightness = 0.1 int glowiterations = 40 float glowspreadx = 7.001 float glowspready = 7.001 float glowexponent = 0.4 float glowalpha = 3.0 } namespace tuli { vec3 cameraposition = 0 5 -6 vec3 cameratarget = 0 2 0 vec3 cameraup = 0 1 0 float cameraradius = 10 float focusdistance = 6.0 float focusdistancespeed = 30.0; float focusdistancerange = 4s.0; float camerarotationfreq = 12.0; float camerarotationamount = 0.3; int glowiterations = 20 float glowspread = 0.001 float glowexponent = 1.0 float glowalpha = 0.9 } namespace maailma { vec3 camerapositionstart = 0 3 -6 vec3 camerapositionend = 0 3 0 vec3 cameratargetstart = 0 1 50 vec3 cameratargetend = 10 0.5 30 vec3 cameraup = 0 1 0 float cameraradius = 10 float focusdistance = 6.0 float focusdistancespeed = 104.0; float focusdistancerange = 3.0; int glowiterations = 20 float glowspreadx = 5.5 float glowspready = 1.2 float glowexponent = -0.1 float glowalpha = 2.2 } namespace korona { vec3 mooncamerapositionstart = 0 -2.5 -10 vec3 mooncamerapositionend = 0 -2.5 -10 vec3 mooncameratargetstart = -0.9 -2.5 0 vec3 mooncameratargetend = 0.9 -2.5 0 vec3 groundcamerapositionstart = 0 20 -100 vec3 groundcamerapositionend = 0 15 -50 vec3 groundcameratargetstart = 0 40 200 vec3 groundcameratargetend = 0 40 200 vec3 sunposition = 0 7 20 vec3 sunposition2 = -4 7 20 range sunmovement = 0.1 0.4 range sunspread = 0.1 0.3 range sunsize = 1.0 2.0 range sunalpha = 0.01 0.02 vec3 cameraup = 0 1 0 vec3 moonpos = 0 3 0 float moonsizestart = 1.7 float moonsizeend = 1.4 float focusdistancestart = 3.0 float focusdistanceend = 5.0 float terrainscale = 5.0; float terrainheightscale = 5.0; float endoftheworld = 1.9; int linecount = 7 range linewidth = 0.3 0.3 float linelength = 30 float linedistance = 7.0 int glowiterations = 40 float glowspreadx = 5.5 float glowspready = 0.02 float glowexponent = 0.6 float glowalpha = 5.2 } namespace korona2 { vec3 mooncamerapositionstart = 0 -0.3 -5 vec3 mooncamerapositionend = 0 -0.7 -5 vec3 mooncameratargetstart = 0 0 0 vec3 mooncameratargetend = 0 0 0 vec3 groundcamerapositionstart = 0 20 -100 vec3 groundcamerapositionend = 0 15 -50 vec3 groundcameratargetstart = 0 40 200 vec3 groundcameratargetend = 0 40 200 vec3 cameraup = 0 1 0 vec3 moonpos = 0 3 0 float moonsizestart = 1.1 float moonsizeend = 1.4 float focusdistancestart = 3.0 float focusdistanceend = 5.0 float terrainscale = 5.0; float terrainheightscale = 5.0; int linecount = 7 range linewidth = 0.3 0.3 float linelength = 30 float linedistance = 7.0 int radialiterations = 12 float radialspread = 0.001 float radialexponent = 1.0 float radialalpha = 0.9 int glowiterations = 20 float glowspreadx = 7.5 float glowspready = 0.2 float glowexponent = 14.2 float glowalphastasrt = 2.2 float glowalphaend = 5.2 } namespace kasvot { vec3 camerapositionstart = -1 0 -6 vec3 camerapositionend = 1 0 -9 vec3 cameratargetstart = -0.5 0 0 vec3 cameratargetend = 0.5 0 0 vec3 particle2position = -3.9 1.5 -2.5 vec3 particle3position = 5.0 -0.66 -1.0 vec3 cameraup = 0 1 0 vec3 lightpos = 0 20 0 float lightscale = 15.0 float focusdistance = 6.0 float focusdistancespeed = 20.0; float focusdistancerange = 3.0; int glowiterations = 20 float glowspreadx = 5.1 float glowspready = 0.4 float glowexponent = -0.1 float glowalpha = 2.1 } namespace viimeiset { vec3 cameraposition = 0 20 -100 vec3 cameratarget = 0 0 0 vec3 camerapositionstart = 0 20 -70 vec3 camerapositionend = 0 15 0 vec3 cameratargetstart = 0 0 200 vec3 cameratargetend = 0 0 200 vec3 sunposition = 200 150 600 range sunmovement = 0.1 0.4 range sunspread = 4.1 10.5 range sunsize = 45.0 60.0 range sunalpha = 0.01 0.012 vec3 cameraup = 0 1 0 vec3 textpos = 0.50 0.1 0 float textscalestart = 0.5 float textscaleend = 0.5 float cameraradius = 10 float focusdistance = 0.05 float terrainscale = 1.5; float terrainheightscale = 5.0; int glowiterations = 10 float glowspreadx = 5.001 float glowspready = 5.001 float glowexponent = 2.0 float glowalpha = 4.0 float constantfade = -0.2 float noisepower = 500 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; beat ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; bpm pulse { bpm = 126 offset = 0 } bpm pulsehalf { bpm = 63 offset = 0 } bpm pulsequarter { bpm = 31.5 offset = 0 } bpm pulseeighth { bpm = 15.75 offset = 0 } event startfadein { time = 2000 length = 15000 } event startfadeout { time = 42000 length = 5000 } event grouptitle { time = 14000 length = 6000 } event grouptitle2 { time = 20000 length = 6000 } event demotitle { time = 26000 length = 10000 } event tulifadein { time = 48000 length = 4000 } event tulifadeout { time = 95000 length = 4000 } event koronafadein { time = 100000 length = 4000 } event koronafadeout { time = 169800 length = 200 } event koronareveal { time = 122000 length = 10000 } event maailmafadein { time = 167000 length = 3000 } event maailmafadeout { time = 196000 length = 4000 } event kasvotfadein { time = 170000 length = 3000 } event kasvotchange { time = 184800 length = 6000 } event kasvotshake { time = 187000 length = 10000 } event kasvotfadechange { time = 180000 length = 15000 } event kasvotfadeout { time = 209000 length = 1000 } event korona2fadein { time = 211000 length = 4000 } event korona2fadeout { time = 258000 length = 2000 } event kauneusfadein { time = 260000 length = 15000 } event kauneusfadeout { time = 290000 length = 10000 } event viimeisetfadein { time = 300000 length = 10000 } event viimeisetfadeout { time = 333000 length = 7000 } event credits { time = 315000 length = 18000 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; meshes ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; /* mesh testi.obj { usevbo = true autotexture = false texture = texture1.jpg usefacenormals = false calculatenormals = false retain = true } */ /* mesh sphere.obj { usevbo = true } mesh test.obj { usevbo = true } */ mesh sphere.obj { usevbo = true } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; textures ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; upload = true/false ; wrap = repeat/clamp ; retain = true/false ; mipmap = true/false ; filter = nearest / linear /* texture test.jpg { mipmap = true wrap = repeat filter = linear retain = true } */ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; postprocessing rendertargets ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; texture main { width = 1024; height = 1024; format = float16; } texture main_downscale1 { width = 512; height = 512; format = float16; wrap = clamp; } texture main_downscale2 { width = 256; height = 256; format = float16; wrap = clamp; } texture main_downscale3 { width = 256; height = 256; format = float16; wrap = clamp; } texture main_downscale3_2 { width = 256; height = 256; format = float16; wrap = clamp; } texture computetest { width = 1024; height = 1024; format = float32; } texture lens_coc { width = 1024; height = 1024; format = float16; wrap = clamp; } texture post1 { width = 1024; height = 1024; format = float16; wrap = clamp; } texture post2 { width = 1024; height = 1024; format = float16; wrap = clamp; } texture downscale1 { width = 512; height = 512; format = float16; wrap = clamp; } texture downscale2 { width = 256; height = 256; format = float16; wrap = clamp; } texture downscale3 { width = 256; height = 256; format = float16; wrap = clamp; } texture downscale3_2 { width = 256; height = 256; format = float16; wrap = clamp; } texture heightmap1 { filename = heightmap1.jpg } texture heightmap2 { filename = heightmap2.jpg } texture mustakivi { filename = mustakivi.jpg } texture kivitesti { filename = kivitesti.jpg } texture whiteparticle { filename = whiteparticle.png } texture circle { filename = circle.png } texture oldman { filename = oldman.png } texture demotitle { filename = demotitle.png } texture grouptitle { filename = traction.png } texture grouptitle2 { filename = brainstorm.png } texture credits { filename = credits.png } texture dynamictest { type = cubemap; format = rgba; width = 1024; height = 1024; } texture fjaraenv { type = cubemap; format = rgba; width = 1024; height = 1024; filenameposx = fjara_negx.jpg filenamenegx = fjara_posx.jpg filenameposy = fjara_posy.jpg filenamenegy = fjara_negy.jpg filenameposz = fjara_posz.jpg filenamenegz = fjara_negz.jpg } ; some whitespade needed :)