January 15, 2009

Hana OSX Screensaver

I've just made Hana available as a screen saver, OSX only for now.

Hana is a dream about flowers for computers.

The idea is that no aspect of creating the flowers is hidden from the computers, everything is created in code and no bitmaps are used that the computer has not seen to the creation of itself, letting the computer "think" through every step.

The only concession to the concept I've consciously made in this version is a bitmap with the text "Hana, by Andreas Müller", a string of which is also included in the code (and outputted to the console so as to not be optimized away).

OS X Intel only (until I figure out what the problem is) and you will need a second gen white MacBook or better.

http://www.nanikawa.com/downloads/hana/HanaScreenSaver.zip






Hana from Andreas Muller on Vimeo.

Work in progress pics on my Flickr:
http://flickr.com/photos/hahakid/sets/72157602261925896/

22 Comments:

Blogger Felix Turner said...

pretty!

5:55 pm  
Blogger Unknown said...

hana is running and my machine likes the flowers! (me too...)

thorsten

5:23 pm  
Blogger Unknown said...

Could you post the source code? Perhaps I can port it to Linux =).

2:32 am  
Blogger Unknown said...

Absolutely stunning!

www.Ultimate-Anonymity.com

2:59 am  
Blogger Tronathan said...

Pretty? Way beautiful, man! It would be nice to have the option to change the blurryness / ghosting.

This is a great addition to the world.

5:07 am  
Blogger Unknown said...

I'm not able to get this to work on my Mac Pro. It's the newest version (8 core), with a 256MB ATI Radeon 2600. Here is a snippit of the console logs:

1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Hana, by Andreas Muller
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at AFlowerPetalTextureFactoryFBO::createSplineWidthTexture
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Some rands: , 1, 0, 1, 2, 1, 0, 3, 0, 3, 2, 3, 2, 1, 3, 1, 3, 3, 0, 0, 3
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ************** Chosen End BG HSB **************
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] H: 0 S: 0 B: 0
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***********************************************
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at AFboSurface:: glGenTextures.
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 0: 347, 250
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 1: 173, 125
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 2: 86, 62
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 3: 43, 31
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] OpenGL Vendor: ATI Technologies Inc.
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] OpenGL Renderer: ATI Radeon HD 2600 OpenGL Engine
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] OpenGL Version: 2.0 ATI-1.5.36
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] OpenGL 2.0 (or higher) is available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [OK] OpenGL Shading Language is available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Vertex Shader):
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Fragment Shader):
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Linker Log:
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e05] Linker log is not available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Vertex Shader):
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Fragment Shader):
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Linker Log:
1/19/09 9:19:36 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e05] Linker log is not available!
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] gNumDisplays: 1
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Hana, by Andreas Muller
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at AFlowerPetalTextureFactoryFBO::createSplineWidthTexture
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ~AGrowingPlantHolder Destructor called.
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Some rands: , 1, 1, 1, 1, 2, 3, 0, 2, 1, 0, 0, 3, 0, 0, 3, 0, 1, 1, 0, 2
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at BEGIN : Configuring petalCanvasFbo
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ************** Chosen End BG HSB **************
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] H: 0 S: 0 B: 0
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***********************************************
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] invalid enumerant at
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] AFboSurface:: glGenTextures.
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 0: 2560, 1600
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 1: 1280, 800
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 2: 640, 400
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] Stage 3: 320, 200
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Vertex Shader):
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Fragment Shader):
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Linker Log:
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e05] Linker log is not available!
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] ***GLSL Compiler Log (Vertex Shader):
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!
1/19/09 9:19:44 PM [0x0-0x1f91f9].com.apple.systempreferences[6898] [e06] Compiler log is not available!

5:30 am  
Blogger █▓▒░ H3g3m0n ░▒▓█ said...

Any chance of source code?, people could port it to Linux and such.

I notice the fragment sharers are in there already ☺

9:19 am  
Blogger Jordan said...

Awesome! Next, do gorgeous, real-time generated girls ;)

11:28 am  
Blogger hahakid said...

I've actually got a Linux port halfway done, the code is pretty cross platform (C++ and OpenGL), it's just a matter of finding some time..

11:36 am  
Blogger hahakid said...

Mark: That's damn strange as I have an 8-core as well, but with the 8800.

I know as a screen saver it doesn't wrk on the Mac Mini and Intel GMA950 (Mac Mini, 1st gen MacBook, 1st gen MacBook Air) can be a bit spotty, but will investigate on an ATI card when I get a chance.

11:41 am  
Blogger Zav said...

Doesn't work on my brand new iMac under 10.5.5. Only displays a black screen

2:19 am  
Blogger Zav said...

Doesn't work on my brand new iMac under 10.5.5. Only displays a black screen.

2:19 am  
Blogger istara said...

It's absolutely beautiful - and a thousand times more amazing once you actually install it. Your video was great but the reality is wonderful.

9:56 am  
Blogger whataniceday said...

doesn't work with macbook 1st gen ;( too bad..

7:53 am  
Blogger hahakid said...

Yes, the 1st gen MacBook, Mini Mac and 1st Gen Air are giving me a few problems (same gfx card), the standalone version works fine, but for some reason the screen saver version does some really odd things (sometimes it even works!).

All incredibly annoying as it was mostly developed on a Mac Mini..

That it is not working on a new iMac under 10.5.5 is much more of a surprise though (as is the Mac Pro ATI 2400) problem, if you could send me the specs of it to andreas:::(you now):::nanikawa.com that would be great, even just which model it is and I'll look it up on the site.
We've got a few at the office but it seemed to work fine..

11:06 am  
Blogger WHOIS said...

Crashes my white imac with ati x1600 with external dell monitor (crashes the display, which starts to display garbage). Apparently does not support multiple monitors either.

4:55 pm  
Blogger hahakid said...

Hmm, well it does support multiple monitors, that was an extra week or so of programming to get to work properly.

I really need to get a hold of some more machines to test with. And another couple of hours in the day.

10:53 am  
Blogger hahakid said...

I think I get what you mean now, a friend of mine commented that I should make it multi monitor aware, what he was expecting was to see different things on each screen.

Currently the scene is rendered once with the resolution of the larger monitor and the result is also drawn (appropriately scaled and cropped) onto the smaller monitor.

The thinking behind this is that if for instance you have a macBook connected to a second 24 inch screen, drawing the two scenes will give you a low framerate and a high CPU utilisation, not ideal for a screen saver.

I remember a friend of mine telling me about this Flash based screen saver he made for a client back in the day (large electronics company). A few weeks later he got a call from them saying it had busted a couple of laptops in their office, it turned out that as it was using 100% CPU all the time it was wearing out the cooling fans!

Kinda had that in the back of mine mind when it came to requirements a screensaver should fulfil.

1:56 pm  
Anonymous Anonymous said...

love you, andreas.

4:56 pm  
Blogger Iris Ophelia said...

Just lost my favourite screensaver when I updated to snowleopard!

From Apple Support:


"Symptoms

When attempting to install, preview, or run a third-party screen saver in Mac OS X v10.6 Snow Leopard on a Mac that has a 64-bit processor, you may see this alert:

"You cannot use the screensaver (NAME) on this computer. Contact the developer of this screen saver for a newer version."
Products Affected

Mac OS X 10.6
Resolution

Contact the developer for a compatible, 64-bit version of the screen saver."


Just thought you should know :X

11:19 pm  
Blogger Unknown said...

Love the screensaver, but Snow Leopard appears to have broken it… any chance of an update? Please, pretty please…?

7:15 pm  
Blogger hahakid said...

Just noticed this as well, not to worry, I'll have a look at what the problem is, with luck it's just a matter of a re-compile.

Will post on the hi-res blog once I get it sorted.

/A

9:09 am  

Post a Comment

<< Home