Cialis OnlineBuy CialisGeneric CialisCheap CialisBuy Cialis OnlineWww.cialis.comViagra CialisCialis ProfessionalDiscount CialisCialis SampleCialis CanadaOrder CialisCialis GenericCialis CheapOnline CialisCialis On LineCialis No PrescriptionCanadian CialisCialis DosageCialis Without PrescriptionPurchase CialisCialis Side EffectsCialis For SaleCialis Or ViagraCheapest CialisCialis DiscountBuy-cialis.htmOrder Cialis OnlineCialis BuyCialis Soft TabsSoft CialisCialis UkCialis 20mgCialis PriceNo Prescription CialisCialis PurchaseCialis Levitra ViagraCialis SamplesCanada CialisCialis ViagraCialis PillsLevitra Cialis ViagraBuy Generic CialisCialis LevitraCialis TadalafilViagra Vs CialisCialisisCialis SalesCanadian Pharmacy CialisCialis By MailFree CialisCialis TabletsWhere To Buy CialisCialis SaleCialis PricesBuy Cialis Without PrescriptionCialis Vs ViagraCialis Canadian PharmacyCheap Cialis OnlineCialis Overnight DeliveryOrdering CialisBuy Cheap CialisCialis OvernightBuying Cialis OnlineCialis IndiaCialis OrderCialis PharmacyCialis ProCialis SoftGeneric Cialis OnlineCheap Generic CialisPurchase Cialis OnlineCialis From CanadaCialis PrescriptionOrder Cialis Without PrescriptionCialis Buy OnlineCialis Online PharmacyViagra Versus CialisCialis Rug Side EffectsViagra Cialis LevitraBuy Cialis Online CanadaLiquid CialisCialis And ViagraCialis 20 MgTadalafil CialisCialis Super ActiveNon Prescription CialisCialis Free SampleSuper CialisCialis DrugBuy CialisonlineGeneric Cialis CanadaCialis Online PurchaseCialis On-lineOvernight CialisBuy Cialis On LineCialis DoseCialis Online CanadaCialis Without PerscriptionDiscount Generic CialisCialis MastercardCialis Online PrescriptionCialis PrescriptionsCialis Order OnlineBuying CialisCialis Online No PrescriptionCialis To BuyGeneric Viagra CialisCialis WikipediaBuy Cialis CanadaFast Delivery CialisCialis CostProfessional CialisGeneric Cialis TadalafilOnline Pharmacy CialisCialis Professional PillsCialis PaypalCialis SuppliersFemale CialisCialis 20Cialis ForumDiscount Cialis OnlineCialis For WomenCialis AustraliaAchat CialisBuy Generic Cialis OnlineViagra And CialisCialis FreeCialis ComCialis RxCialis Versus ViagraCheap Cialis CanadaMail Order CialisCialis SofttabsCialis TabletSide Effects Of CialisDaily CialisCialis CanadianCialis For CheapCialis Once DailyGeneric Cialis Soft TabsWhat Is CialisBuy Cialis ProfessionalLow Cost CialisCialis EuropeCialis Online Without PrescriptionCialis DailyPrescription CialisHow To Order CialisCialis Online OrderingBest Price CialisCialis On SaleCialis Online OrderGet Cialis OnlineCialis In CanadaGeneric Cialis No PrescriptionCialis InformationCialis Best PriceViagra Or CialisFind Cheap CialisCialis, CheapViagra Vs Cialis Vs LevitraOn Line CialisCialis 5mgViagra Cialis GenericCialis 10 MgLevitra Vs Viagra Vs CialisBuy Cialis OnlieCialis Mail OrderCialis Purchase OnlineOrder Cialis In CanadaSafe CialisWholesale CialisIs Cialis Better Than ViagraViagra And Cialis Rush DeliveryCheap Canadian CialisGeneric Cialis ProPurchase Cialis Without A PrescriptionBuy Cialis CheapCialis Overnight ShippingBuy Cialis Online Without A PrescriptionCialis Next DayCialis From UkBuy Cialis No PrescriptionBuying Cialis On Line2.5 Mg CialisBuycialisBuy Discount CialisBuy Cialis 20mgCialis CouponCheap Cialis ViagraCialis DiscountedCialis IngredientsCialis SuperBuy ViagraGeneric ViagraCheap ViagraViagra OnlineBuy Viagra OnlineViagra For SaleViagra Side EffectsPfizer ViagraFree ViagraDiscount ViagraViagra CanadaOnline ViagraOrder ViagraCanadian ViagraViagra On LineViagra AlternativeViagra SalesPurchase ViagraViagra CheapViagra PillsViagra ProfessionalCheapest ViagraViagra No PrescriptionCanadian Pharmacy ViagraViagra BuyFemale ViagraViagra GenericViagra Without PrescriptionViagra SampleViagra UkHerbal Alternative To ViagraCanada ViagraOrder Viagra OnlineViagra SaleViagra SamplesViagra Online Without PrescriptionBuying ViagraViagra PurchaseViagra Super ActiveViagra Soft TabsWhere To Buy ViagraGeneric Viagra OnlineBuy Viagra On LineViagra OrderHerbal ViagraFree Viagra SamplesBuy Cheap ViagraNo Prescription ViagraViagra DiscountCheap Generic ViagraBuy Generic ViagraViagra Without A PrescriptionLow Cost ViagraViagra DoseBuying Viagra OnlineViagra For WomenViagra DosageGeneric ViagrasViagra OvernightViagra PricesViagra By MailPurchase Viagra OnlineViagra Canadian PharmacyViagra Free SampleViagra From CanadaViagra AustraliaMail Order ViagraViagra IndiaViagra Online CanadaFree Viagra SampleCheap Viagra OnlineViagra SubstituteBuy Viagra Without PrescriptionViagra CanadianOver The Counter ViagraBuy Viagra CheapViagra PrescriptionHow To Get ViagraGet ViagraViagra Online PharmacyOvernight ViagraSuper ViagraFree Sample ViagraGenericviagraGeneric Viagra PillsSoft ViagraOrdering ViagraViagra PharmacyViagra How It WorksNatural ViagraViagra PrescriptionsGeneric Viagra CanadaViagra On SaleViagra StoreViagra PfizerFree Samples Of ViagraGeneric Viagra For SaleViagra DirectionsViagra LevitraViagra UseViagra Order OnlineOrdering Viagra OnlineViagra PillViagra Free SamplesViagra SoftCheapviagraViagra DosesViagra DrugOn Line ViagraBuy Viagra No PrescriptionCheep ViagraBuy Generic Viagra OnlineFree ViagrasamplesMexican ViagraBest Price ViagraViagra Next Day DeliveryViagra AlternativesNon Prescription ViagraBuy Viagra In CanadaFree Sample Of ViagraViagra In CanadaViagra Online UkViagra RxViagra Online PrescriptionViagra Best PriceViagra Prescription OnlineBuy Viagra CanadaCheap Viagra No PrescriptionOnline Pharmacy ViagraWholesale ViagraViagra PaypalOrder Viagra Without PrescriptionSample ViagraViagra Mail OrderViagra IrelandFree Trial ViagraViagra Rug Side EffectsViagra For Sale OnlineViagra No RxViagra 25mgViagra 50mgViagra For LessViagra CostLiquid ViagraViagra In AustraliaViagra GenericsSildenafil ViagraOnline Viagra SalesViagra PriceViagraonlineViagra InfoViagra Sales OnlineViagra Free TrialViagra FactsBuy Cheap ViagrasViagra Online SalesViagra TabletsViagra Online PurchaseViagra 100mgViagra For SellBuy Viagra Online No PrescriptionCheap Online ViagraBuy Online ViagraViagra Fast ShippingBest Herbal ViagraBuy Real ViagraViagra.caViagra Sales UkViagra Online AustraliaBuy Viagra Without A PrescriptionHow To Buy ViagraGeneric Viagra IndiaViagra Without A PerscriptionLowest Price ViagraCheap ViagrasViagra InformationViagra Pills For SaleGenaric ViagraCheapest Generic ViagraCheapest Viagra OnlineLow Price ViagraBuy Viagra UsaIndian ViagraGeneric Viagra No PrescriptionFree Trial Of ViagraOtc Viagra

Quiet but not inactive

June 7th, 2009

Been a while since I last updated. I assure you I have not been resting. Unfortunately I am working on projects that need to remain under the cover of vagueness until they are either 1)more fleshed out or 2)officially launched. But that doesn’t mean I can’t tease a bit, right?

The two things that have been occupying most of my time the last couple weeks are procedural landscape generation and population, and procedural plant generation. The landscape project started because of an installation the Barbarian Group is doing for a gallery in Seattle (nope, not the McLeod Residence this time). This project should be done sometime in October. I am going to be vague on the details because there is still plenty of time for the scope to change and knowing me and the way I like to work, it will change. Four months is a long time.

Fuji_01

There are some additional test renders up on my Flickr page. In short, you are looking at a terrain mesh based on actual GSPS data from NASA. Many thanks to Kyle McDonald for figuring out how to parse the very strange .hgt file format. His example code is available at OpenProcessing.org.

I have done terrain experiments before but never thought much about how to make them more lush by populating the mesh with plants and trees. Thanks to my new found appreciation for GLSL shaders, I was able to put a nice coating of wind-blown grass onto the terrain, as well as a few thousand trees and bushes.

The water is made of layers instead of a flat plane. This was mostly an aesthetic decision. I just like the way it looks, especially if the camera is lower to the ground as it will be in the final version.

It is interesting to pause here and consider how far we have come since the good ol days of the NextFest grass wall project. That project from 2006 stretched my coding ability as far as it would go. And all for what? A few hundred 2D grass blades that barely broke 30 frames per second. This new landscape has rolling hills of seemingly millions of blades of grass all bending in the wind with cloud shadows and minor dynamic lighting and easily hovers above the 60 fps threshold. Exciting! But thats pretty much all I can say about that until we get further along.

I recently got sidetracked because I wanted to find a substitute for the TurboSquid.com textures I was using for the trees and bushes. I remembered the branching application I wrote earlier this year and decided it would be reasonable easy to recode it to produce plant life.

I was partially right. It wasn’t hard to make the code churn out plants, but it was hard to make it create plants that didn’t look like CG plants from The Lawnmower Man. There was just way too much symmetry and predictability in the growth patterns. I decided to spend a few days making it more robust.

First up, trees. The image below was my attempt to make a believable tree (without branches). The basic process is to start with a node. Think of it as the seed for the tree. The seed is created with all the behavior characteristics for the entire tree. The seed creates child nodes which pass along the tree’s ‘genetic information’. This information consists of parameters like lengthDelta, lengthDeltaDelta, radiusDelta, radiusDeltaDelta, maxChildren, color, maxGenerations, etc. As a parent creates a child node, it sends this information but mutates it slightly. The nodes arrange themselves in space using magnetic repulsion. Any node can repulse other nodes as long as they are of an equal or higher generation. The node at the base of the trunk repels everything whereas the nodes at the branch tips repel only each other. If you code in some decreasing branch lengths and radii as you go from generation to generation, you will create a nice space-filling tree with no branch overlaps. Sadly, these trees are complex enough to elude a reasonable frame-rate but perhaps with some limitations placed on the number of branches that can be created, and killing off the repulsion after the branches settle into place, they will be swaying in the Perlin noise breeze in no time.

Fuji_03

I then tried to place some leaves or flowers on the trees and accidentally changed the perceived scale quite a bit. It no longer seemed like a majestic oak. It turned into a bush, and then eventually, much smaller flowering weeds. I wasn’t put out by this change (bushes and weeds were going to need to be addressed eventually anyhow) so I went along with it and started making bushes and weeds.

Fuji_02

The weeds ended up catching my attention the most because I could see a great deal of potential to create amazing unique renders of realistic looking plants without needing to manufacture them on a more traditional 3D application.

Fuji_04

I was reminded on Flickr that I am treading into territory that has been explored by countless others before me, namely Prusinkiewicz and Jon McCormack. It is definitely an exciting distraction and I look forward to experimenting further with this methodology.

Snakes alive!

March 27th, 2009

Snakes!

Yay! Snakes! Wrote up a post about the process I used to create these lovely reptiles with code. Read it over at
the Barbarian Group blog.

Here it is in action…


Snake Study from flight404 on Vimeo.

Augmented a webcam

March 13th, 2009

No, not that ARToolKit stuff. You wont be manhandling fiducial markers with this one. Read all about it on the Barbarian Group blog.

Here is a sample video.


Augmented webcam study from flight404 on Vimeo.

Friday goodies.

February 27th, 2009

Friday has arrived and I am totally going to tell you about some stuff that is going on. First up, TweakToday. Fellow Barbarian Bill Lindmeier (yep, the same Bill Lindmeier that sullied my whiteboard with penis sketches) has launched a site that asks people to “do a new thing… every day.” (Keep in mind the site is still very much in Beta so expect to see some UI issues worked out over the next few weeks).

These ‘new things’ are submitted and voted on by users (probably shouldn’t call them ‘Tweakers’ unless the mission of the day is to do a ton of meth). Here is a quick run down of the first three days of TweakToday.

• Photograph everything that’s in your bag or purse.

Image courtesy of soundofdesign.

• Make some origami and share a photo of your creation.

Image courtesy of icyfrance.

• Draw a picture of a baby animal and share it.

Image courtesy of ryantomorrow.

Based on the submissions so far, we are in for an interesting month. I am intrigued by the concept of this site. Though not a unique idea (there are some Flickr groups that ask people to complete daily missions), I am amused by the variety of mission types. Whereas the Flickr missions will inevitably be photo assignments, the ones on TweakToday range from writing haiku’s to donating money to a charity. Of course there are a fair share of completely ridiculous mission suggestions (”lay face-down on the sidewalk until someone asks if you are okay”) but lucky for us, that mission has a ranking of minus 6 so I don’t think we will ever be asked to do it. Sorry Nicole. ;)

Today’s mission is a bit more difficult than the others and asks that you prepare (or just order) a new ethnic food that you have never before tried. Good thing my office is right next to Chinatown.

Here are some mission ideas I hope get voted up high enough to be added to the queue.
• Tweet that you are pooping, while you are pooping, and post any replies you get.
• Use the phrase “perverse and often baffling” in a serious work email.
• Stack stuff on your pet (cat, dog, bunny, boyfriend, or girlfriend).
• Ride a transit line from end to end. Photograph the start and end points and tell us about your journey.

I am definitely looking forward to seeing how this site grows over the coming months.

And now I present you with a screenshot of an attempt to have a conversation using Emoji characters only. I add this because of recent developments.


Me: Im coming over.
Lance: What shall we do for dinner?
Me: How about delivery indian tonight, and tomorrow I will cook us something.
Lance: Alien blood transfusions are illegal for ghosts but beach chickens win.

It seems Apple is going to disable emoji accessibility for all people not in Japan. I don’t quite get why, but as Rick has pointed out on the Barbarian Group blog, go get the Typing Genius app now before it is too late.

Speaking of the Barbarian Group, we have had some awesome news happenings in the last month. Firstly, Creativity Magazine named us the Digital Company of the Year. Sweet! We were also listed in their roundup for the 2009 Creativity 50.

Slightly more surreal is our inclusion in the Fast Company 50 which is a listing (by Fast Company Magazine, of course) of “the world’s most innovative companies”. We came in at #29 beating out such well established companies as Ubisoft, Toyota, Weta Digital, Microsoft and Genzyme. Oh and Lego. We beat them too. ;)

All in all, an awesome start to the year. Way to go, Barbarian Group!

Branching

February 18th, 2009

Recently, some of my peers (Ooo Shiny!) started chatting about the Tree of Life and the data visualization potential contained within. We came to no specific conclusion other than we all thought it would be awesome to be able to tap into a proper Tree of Life API. One thing I did realize is that I had never worked on a proper branching data set visualization.


Duality 01

Sadly, these images are not a representation of the blogosphere or the word count in Obama’s inauguration speech. It is purely random but I am happy with the results. And it really wouldn’t be much work to make this code reflect the nuances of a proper data set, but I will worry about that later.

If you know me at all, you know I have a fondness for magnetism and particle engines. You might also know I rather enjoy continuing to follow a thread rather than start a whole new strand. That is why I decided to use my particle engine source code to start a branching system rather than doing it from scratch using springs or L-system theory.

I started very simple. I made a spherical object. In addition to physical characteristics like radius, mass, charge, and appearance, it also has an age: a countdown to mitosis if you will. Once the count reaches the age limit, the object splits off multiple children (generally, 1 to 4 children will be created). As with human beings, once children are made, movement begins to slow down. The parent object will continue to age and will eventually become immobile.

The children are mirror images of the parent but with a slightly diminished mass and radius. They also rather dislike each other so the first thing they do is move away from each other using magnetic repulsion as the driving force. But the parental bond is strong so each child is connected to its parent with a cylindrical form.

There is one catch which may or may not prove to be useful. Every object is also repulsed by every other object. It’s not a generational repulsion: everything moves away from everything else. The universal ancestor has as much repulsive force (based on distance) on a 14th generation child as its own parent does. The end result is a nice space-filling growth, but it is rather computationally heavy and entirely unnecessary.


Duality 02

Again, as with most of my work, I am not sure where I am going with this, but I am happy with how it has progressed in the few hours I have spent with it. Id eventually like to give it a proper aesthetic shine, but I am going to work on understanding the code a bit more first. I know I wrote it, but that doesn’t mean I fully understand it. ;)


Branching growth from flight404 on Vimeo.

Eye Magazine

February 10th, 2009

Eye Magazine’s Winter 2008 edition has finally arrived in my grubby hands. Took me a while to track down a copy (I guess the $30 price tag and the British origin keep it rare in these parts) but I finally found a copy of issue #70 at Fog City News (also the best place to buy designer chocolate in these parts).

I was asked to provide some high res images from the (unofficial) Goldfrapp video I made last year. Since that video was rendered out at 1280×720, I didn’t have anything larger to offer. I ended up running the code at a small resolution (500×500) and implemented Marius Watz TileSaver class. I coded in a few time-code triggers and went to get coffee. While I was gone, the program ran at a fast clip (nearly 30fps) and once it reached a time trigger, It kicked out a high-res still (6000×6000+). Looks great printed. I passed a few dozen of these images along to Eye and let them decide their fate.

I was pleased to see they decided to choose my work to be shown on the cover, framed by a ’silent character’ from the font ‘Replica’ which is also profiled within the pages of this issue. Read more about the collaboration on the Eye Magazine blog.


Eye Magazine Cover

I am even happier with the full spread image they used as a lead-in to an article about digital craft. Like I said, it looks great printed!


Eye Magazine Article

Quick update

February 9th, 2009

It has been a bit too quiet on the front. Thought I would use this opportunity to mention that I am still working my way through the mire of learning a new language. The sad thing about this is my productivity has been cut to nearly nothing which explains why I haven’t posted anything of any consequence in the last few weeks. This is entirely due to the fact I think I should be more capable than I actually am.

Lately, an average day goes a bit like this. First, I load up my most recent Objective C project and hit ‘build’ to remind myself where I left off the night before. 95% of the time, the night before ended because I couldn’t figure out the source of a new bug. This means 95 out of a 100 times, when I start my day, I am facing a huge hurdle that I couldn’t make my way around the day before. This is especially difficult on a Monday that finds me getting over the flu.

I check the error message to remind myself that it is still as foreign a sentence as any I have ever seen. These error messages usually contain one or two words that I don’t even know the meaning of. By lunch, I have scratched my head into a fit of frustration and decide the best thing I could do now is to reread a couple chapters from the Objective C book or iPhone Development book.

Sadly, this can have a negative effect on my work flow because after I breeze through a couple chapters, I start thinking I should know enough to figure out my bug. The book examples are so incredibly easy! So back to the main project I go only to end up exactly where I was when I started the day. Confused and annoyed.

Today’s bug is particularly frustrating because there are no error messages to decipher. My project builds with no errors or warnings, the simulator pops up and runs the application, and all I see is a blank black screen.

Black.

Why is it black? It should be either white or red. Those are the two test background colors for the two views I am trying to swap between. But nope. Black. Error free and yet completely broken.

Its double frustrating because I thought I was attempting something that would be easy. I had a project that compiled and I simply wanted to make a flip-side with some sliders and buttons so I could play around with the variables controlling my application. There are plenty of examples of this behavior. There are a couple chapters dedicated to making this happen. But somewhere along the way, I managed to break the project. Perhaps it is time to start again from scratch?

Once I get to the point where stuff starts to make sense and things start to fall nicely into place, I am guessing I am going to have a ton of updates. Until then, it is going to be a period of quiet learning for me. This weekend was all Excedrin and soup so I found myself watching a lot of Discovery Channel and Science Channel shows. I find myself jealous of Daniel Tammet (showcased in a documentary called ‘Brainman’) who was able to learn Icelandic in one week. He could probably learn Objective C in a couple hours. Bastard.

iPhoning

January 19th, 2009

Been a while since I last posted. I decided to shift gears a bit thanks to Keith Peters and his iPhone tutorial. I have always wanted to get into iPhone development but the weirdness of Objective C scared me away twice before. Luckily, Keith’s easy to follow 5 step blog post helped me to get my foot in the door and Objective C for the Mac helped me to push the rest of my body through.

It is still a mess of a language to come to from Java but I am starting to like some of the nuances. Hopefully in a few days I can have something to show but for now, its all just a basic sketch. I have ported over the Particle Source I posted a while ago. The framerate suffers a lot, for sure, but OpenGLES is robust enough for me to do most of what I need to do. Once I get a better idea of how to offload the heavy lifting to straight C, I think I can squeeze a few extra FPS out of the application.

Not sure where I am going with it in the long run. The only goal I had up front is to get more familiar with the iPhone development process. In a perfect world, I would be able to make a nice audio visualizer for songs being played in iPhone but as far as I can tell, it is not possible for me to analyze music coming out of the iTunes application. All I have right now is particle emitters that correspond with the multitouch screen. They are loaded pngs. I am using blending modes to get the glow. I have also connected the particles to the emitters with stroke tethers.

I will post screengrabs and video once I get to a place that makes me happy. And in a small handful of weeks, App Store here I come!

Radiolaria creator, pt. 1

December 25th, 2008

I was introduced to the work of Haeckel (Ernst Heinrich Philipp August Haeckel, to be precise) while attending RISD 10+ years ago. From Wikipedia:

Haeckel was an eminent German biologist, naturalist, philosopher, physician, professor and artist who discovered, described and named thousands of new species, mapped a genealogical tree relating all life forms, and coined many terms in biology, including phylum, phylogeny, ecology and the kingdom Protista. Haeckel promoted and popularized Charles Darwin’s work in Germany and developed the controversial recapitulation theory (”ontogeny recapitulates phylogeny”) claiming that an individual organism’s biological development, or ontogeny, parallels and summarizes its species’ entire evolutionary development, or phylogeny.


Haeckel original

I became quite fond of his work because I had been exploring similar (looking) ideas with my own work. I was fascinated by Platonic solids and would sketch them in my journal to kill time during art history lectures. I was drawn in by the challenge of trying to reproduce such regular forms using no rulers or measurements. I didn’t realize it at the time, but figuring out how to draw those solids ended up being a nice little primer to learning trig later in life.

Here are a few pages from my art school days.
sketchbook

sketchbook

sketchbook

However, sketching these forms became more and more frustrating because I had to draw them head on with no rotation. My mind couldn’t make sense of it any other way. This created some really sterile illustrations. I liked the results, but they felt very flat.

Recently, while tweaking the magnetic structure code and the corresponding particle systems involved, I figured out how to gain a bit more control. The original code had been about freedom. I allowed the particles to move about and they pretty much got to do what they pleased. This new go around is about controlled restraint. I started to create multiple particle systems (instead of just one global one) and for each system, I am assigning it a small set of rules.

For example:

Big particles, you will slowly gain mass until you lock into place. You are capable of attracting small particles. Each of you must remain a fixed distance from the center of the world and must try to spread yourselves out as evenly as possible.

Small particles, you will repel each other while the big particles attract you. If you happen to collide with a big particle, you are now locked to that particle and must remain x paces from its center at all times. Oh, and you must also remain y paces from the center of the world at all times.

From these simple rules, a large variety of different looks can be created by just randomizing a few variables. You can randomize the x and y, the mass, the charge, and the inertia, to name a few.

Below is a test render.


Self organizing dodecahedron flower from flight404 on Vimeo.

While watching this video, I realized I probably had enough control over the results to create a radiolarian generator. I added a few more rules and was able to get a nice lush variety of results. Below are some images from the first go around. I think there is a great deal of potential.

radiolaria 3


radiolaria 2


radiolaria 1

Once I get some control over all the new variables introduced in this build, I will find a way to randomize them so I can get a unique render every time I hit play. Right now, the code is a bit heavy and producing these 2500×2500 pixel images nearly set my laptop on fire. I don’t have nearly enough constraints built in, so it is not uncommon for me to bring the sketch to a stand still because I have accidentally asked the code to produce several billion new vertices because I pressed the wrong key one too many times.

Crosshatching and spermatozoa.

December 15th, 2008

Lately, I have been working with shaders as much as possible in order to better understand their intricacies and nuances. GLSL is a crazy beast in many ways but it can create some really nice effects and super fast (assuming you know what you are doing, which I pretty much do not).

These images are from a revisitation to my particle engine source code. I am trying to make the source more robust and user friendly but I find I often get distracted by the aesthetics and lose focus on the functionality. As an attempt to officially put aesthetics on the back burner, I thought to myself (quite erroneously), “I know, I will just make it look like crosshatching and then I wont think about it for a while and can focus on the physics n’ stuff.”


cross1

Sadly, but not surprisingly, dynamic crosshatching is a mess. I quickly realized I was out of my depth so I settled on this faked crosshatching. I call it faked because it is essentially just a texture that is being accessed in the shader based on the diffuse (or specular) lighting conditions at each pixel. This means tiny spheres will have the same level of detail as large spheres which created the moiré effect you see in the images here. If I understood how to generate and use mip maps, I am guessing I could avoid much of this side effect but I have to say… I really like how they look.


cross2

This, of course, means that once again, I am being pulled by the aesthetics and the actual meat of the code is being ignored while I tweak variables in the shaders. Can’t shake the feeling that it is not unlike my original fascination with the lens flare Photoshop filter. I bet shader pros around the world are rolling their eyes at my creations. “Oh look,” they cluck, “That 404 guy finally discovered shader driven moiré crosshatching. Welcome to 2002, douche bag.”

Okay, they probably aren’t that harsh with their words. Probably.